Board Game Oracle Game Metadata Scraper avatar

Board Game Oracle Game Metadata Scraper

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Board Game Oracle Game Metadata Scraper

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

Inus Grobler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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 genre to scrape the top N most popular games from that Board Game Oracle genre.
  • Leave genre blank and enter a gameName to 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 error rows when a lookup fails
  • Saves a SUMMARY record for run-level monitoring

Input

The Actor accepts these fields:

  • genre: Board Game Oracle genre or category name, such as Fantasy, Card Game, or Science Fiction. This is the primary input. If both genre and gameName are provided, genre takes priority.
  • gameName: A single board game name. Used only when genre is blank.
  • maxGames: Maximum number of games to scrape. When using gameName, 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 os
from apify_client import ApifyClient
client = 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().items
print("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 gameName run resolves only the single best public match, not a list of candidates.
  • Some fields may still be null if neither Board Game Oracle nor Wikidata exposes them publicly.
  • This Actor only uses public web pages and public Wikidata endpoints.