Board Game Oracle Game Metadata Scraper
Pricing
from $1.99 / 1,000 results
Board Game Oracle Game Metadata Scraper
Scrape structured board game metadata from Board Game Oracle by genre or game name. Extract the top N ranked games in a genre, or resolve a single game title, with prices, ratings, mechanics, publishers, images, and Wikidata-enriched fields in clean JSON output.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Inus Grobler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract structured board game metadata from Board Game Oracle through a simple Apify Actor input.
The Actor supports two client-facing workflows:
- Enter a
genreto scrape the top N most popular games from that Board Game Oracle genre. - Leave
genreblank and enter agameNameto resolve one game to its single best Board Game Oracle match.
Price fields are always included. Wikidata enrichment is always enabled for missing metadata when available. Proxy usage, request pacing, and concurrency are handled internally, so clients do not need to configure them.
What This Actor Does
- Scrapes the top-ranked games from a Board Game Oracle genre
- Resolves a single board game name to its best Board Game Oracle match
- Returns flat, analysis-ready rows with metadata, ratings, categories, mechanics, publishers, images, and price fields
- Adds Wikidata fields when Board Game Oracle is missing them
- Writes structured
errorrows when a lookup fails - Saves a
SUMMARYrecord for run-level monitoring
Input
The Actor accepts these fields:
genre: Board Game Oracle genre or category name, such asFantasy,Card Game, orScience Fiction. This is the primary input. If bothgenreandgameNameare provided,genretakes priority.gameName: A single board game name. Used only whengenreis blank.maxGames: Maximum number of games to scrape. When usinggameName, the Actor still resolves at most one game.debugMode: Enables verbose logs for troubleshooting.
The Actor does not accept Board Game Oracle URLs as input.
Example Input
Genre run
{"genre": "Fantasy","maxGames": 20,"debugMode": false}
Single game-name run
{"gameName": "Gloomhaven","maxGames": 1,"debugMode": false}
Output
The Actor writes rows to the default dataset.
type = "game"means the game was parsed successfully.type = "error"means the lookup failed, was blocked, or could not be parsed.
Example game row
{"type": "game","source": "boardgameoracle","scrapedAt": "2026-05-10T20:00:00.000Z","boardGameOracleId": "5c5c1177cb4c08209f09c53d","boardGameOracleKey": "bHh_KByEbG","bggId": 174430,"wikidataId": "Q36816341","inputSource": "genre","query": "Fantasy","name": "Gloomhaven","yearPublished": 2017,"minPlayers": 1,"maxPlayers": 4,"minPlayTime": 60,"maxPlayTime": 120,"minAge": 14,"ratingAverage": 8.54,"geekRating": 8.3,"weight": 3.9,"rankOverall": 4,"categories": ["Adventure", "Fantasy"],"mechanics": ["Cooperative Game"],"designers": ["Isaac Childres"],"artists": ["Alexandr Elichev"],"publishers": ["Cephalofair Games"],"officialWebsite": "https://cephalofair.com/products/gloomhaven","wikipediaUrl": "https://en.wikipedia.org/wiki/Gloomhaven","imageUrl": "https://cdn.boardgameoracle.com/images/example.jpg","thumbnailUrl": "https://cdn.boardgameoracle.com/images/example-thumb.jpg","description": "A tactical campaign board game set in a persistent fantasy world.","url": "https://www.boardgameoracle.com/boardgame/price/bHh_KByEbG/gloomhaven","lowestPrice": 199.99,"lowestPriceCurrency": "USD","lowestPriceStore": "Cape Fear Games","offerCount": 5,"retrievedVia": "http","status": "ok","errorMessage": null}
Example error row
{"type": "error","source": "boardgameoracle","scrapedAt": "2026-05-10T20:00:00.000Z","url": null,"inputSource": "genre","query": "Unknown Genre","retrievedVia": null,"status": "failed","errorCategory": "invalid_input","blockedReason": null,"errorMessage": "Board Game Oracle genre \"Unknown Genre\" was not found.","boardGameOracleKey": null,"bggId": null,"wikidataId": null}
Summary Record
The Actor also writes a SUMMARY record to the default key-value store. It includes:
- requested input mode and values
- effective internal run settings
- queued game count
- successful game row count
- error row count
- blocked row count
- Wikidata-enriched row count
- fatal error message if the run fails completely
Run It From Apify
Open the Actor in Apify Console, fill in the Input tab, and run it. Results will appear in the default dataset, and the summary record will be available in the default key-value store.
For API users, the Actor ID is:
thescrapelab/board-game-oracle-game-metadata-scraper
Python API Example
Install the official client:
$pip install apify-client
Then run the Actor:
import osfrom apify_client import ApifyClientclient = ApifyClient(token=os.environ["APIFY_TOKEN"])actor_client = client.actor("thescrapelab/board-game-oracle-game-metadata-scraper")run = actor_client.call(run_input={"genre": "Fantasy","maxGames": 10,"debugMode": False,})if run is None:raise RuntimeError("Actor run did not complete.")dataset_id = run["defaultDatasetId"]dataset_items = client.dataset(dataset_id).list_items().itemsprint("Rows returned:", len(dataset_items))print(dataset_items[0] if dataset_items else None)
Alternate input for a single game
run = actor_client.call(run_input={"gameName": "Spirit Island","maxGames": 1,"debugMode": False,})
Notes And Limitations
- Genre matching depends on public Board Game Oracle genre pages. Exact or clearly unique genre names work best.
- Genre runs follow Board Game Oracle's public popularity ordering for that genre.
- A
gameNamerun resolves only the single best public match, not a list of candidates. - Some fields may still be
nullif neither Board Game Oracle nor Wikidata exposes them publicly. - This Actor only uses public web pages and public Wikidata endpoints.