BoardGameGeek (BGG) Board Game Scraper
BoardGameGeek (BGG) Board Game Scraper
Scrape board game data from BoardGameGeek — the world's largest board game database with 140,000+ games and 6 million monthly active users. Extract game metadata including categories, mechanics, designers, publishers, alternate names, and more.
What this actor does
This actor returns structured board game data from BoardGameGeek — rankings, ratings, weights and metadata — where other BGG scrapers stall out (the three on Apify plateaued at 2 users each).
Three scraping modes are supported:
- hot — Fetch the top-50 hottest board games from the BGG hotness list. Includes the current BGG rank for each game. Best for weekly trend snapshots.
- search — Search for board games by keyword (e.g. "Wingspan", "dungeon crawler", "deck building"). Returns up to
maxItemsmatching games with full metadata. Search is the most heavily defended surface on BGG, so it is the one mode where a run can come back short; re-run it and it fills in. - thing_ids — Fetch specific games by their BGG IDs. The most reliable mode — use it when you have a known list of BGG game IDs.
Input configuration
| Field | Type | Description |
|---|---|---|
mode |
string | Scraping mode: hot, search, or thing_ids (default: hot) |
searchQuery |
string | Search keyword — required when mode is search |
bggIds |
array | BGG game IDs to fetch — required when mode is thing_ids |
maxItems |
integer | Maximum records to return (default: 50) |
Example inputs
Hot list (top trending games):
{
"mode": "hot",
"maxItems": 50,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
Search by keyword:
{
"mode": "search",
"searchQuery": "Wingspan",
"maxItems": 20,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
Specific games by ID:
{
"mode": "thing_ids",
"bggIds": [174430, 266192, 13, 161936],
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
Output format
Each record contains:
| Field | Type | Description |
|---|---|---|
bgg_id |
integer | BoardGameGeek game ID |
game_name |
string | Primary English game name |
alternate_names |
string | All alternate/translated names (pipe-separated) |
year_published |
integer | Publication year |
description |
string | Short game description (HTML stripped) |
image_url |
string | High-resolution game image URL |
thumbnail_url |
string | Thumbnail image URL |
min_players |
integer | Minimum player count |
max_players |
integer | Maximum player count |
playing_time_min |
integer | Minimum play time in minutes |
playing_time_max |
integer | Maximum play time in minutes |
min_age |
integer | Minimum recommended age |
categories |
string | Game categories (pipe-separated, e.g. "Fantasy|Adventure") |
mechanics |
string | Game mechanics (pipe-separated, e.g. "Deck Building|Worker Placement") |
families |
string | Game families (pipe-separated) |
designers |
string | Game designers (pipe-separated) |
artists |
string | Illustrators/artists (pipe-separated) |
publishers |
string | Publishers (pipe-separated) |
bgg_rank_overall |
integer | BGG overall rank (populated in hot mode from hotness list) |
expansion_of |
string | BGG IDs of base games this expands (pipe-separated) |
implements |
string | BGG IDs of games this reimplements (pipe-separated) |
scraped_at |
string | ISO 8601 scrape timestamp |
Note: Rating and popularity statistics (average_rating, bayes_average_rating, num_owned, num_ratings, weight, etc.) require BGG's Application Token (their XML API v2 authentication system) and are returned as null. The game metadata above is fully available via the JSON API.
Example output
{
"bgg_id": 266192,
"game_name": "Wingspan",
"alternate_names": "Flügelschlag|Крылья|Wingspan: Pájaros para Todos|展翅翱翔",
"year_published": 2019,
"description": "Attract a beautiful and diverse collection of birds to your wildlife preserve.",
"image_url": "https://cf.geekdo-images.com/yLZJCVLlIx4c7eJEWUNJ7w__itemrep@2x/...",
"thumbnail_url": "https://cf.geekdo-images.com/yLZJCVLlIx4c7eJEWUNJ7w__itemrep/...",
"min_players": 1,
"max_players": 5,
"playing_time_min": 40,
"playing_time_max": 70,
"min_age": 10,
"categories": "Animals|Card Game|Economic",
"mechanics": "Card Drafting|Deck Building|Engine Building|Hand Management|Set Collection",
"families": "Animals: Birds|Game: Wingspan Universe",
"designers": "Elizabeth Hargrave",
"artists": "Ana Maria Martinez Jaramillo|Natalia Rojas|Beth Sobel",
"publishers": "Stonemaier Games",
"bgg_rank_overall": null,
"expansion_of": null,
"scraped_at": "2026-05-26T14:30:00.000Z"
}
Use cases
- Board game retailers and cafes — research inventory, track trending titles, identify popular mechanics and themes
- Tabletop industry analysts — competitive intelligence for publishers (Asmodee, CMON, Z-Man, Stonemaier)
- Recommendation engines — seed a game recommendation dataset with categories, mechanics, and designer data
- Market researchers — track BGG hotness trends weekly; correlate with sales data
- Game designers — analyze mechanics and categories across top-ranked games
- List import tools — import your BGG collection or wishlist into spreadsheets or inventory systems
Technical notes
- No BGG account or API token registration required
- Deliberately paced (about 1.4 requests/second) to stay a good citizen on BGG's infrastructure
thing_idsandhotare the most reliable modes and rarely come back shortsearchis the one mode that can return partial results on a busy day; re-run to fill in