BoardGameGeek Reviews Scraper avatar

BoardGameGeek Reviews Scraper

Pricing

from $2.49 / 1,000 results

Go to Apify Store
BoardGameGeek Reviews Scraper

BoardGameGeek Reviews Scraper

Search BoardGameGeek by game name and extract public user reviews as clean, flat dataset rows. Choose the first best match or scrape all matching games, then collect recent or highest-rated reviews with an optional minimum rating filter.

Pricing

from $2.49 / 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

12 days ago

Last modified

Share

BoardGameGeek Reviews Scraper lets you search BoardGameGeek by game name and collect public user reviews as clean, structured dataset rows.

This Actor is designed for simple review collection:

  • search by game name
  • choose the first best match or all matches
  • get one review per row
  • keep output flat and easy to analyze
  • collect recent or highest-rated reviews

What It Does

Use this Actor when you want BoardGameGeek review data for research, analysis, monitoring, or enrichment.

You provide one or more game names, and the Actor returns public reviews for the matched BoardGameGeek titles.

Why It Is Useful

  • No BoardGameGeek IDs required
  • Each review is returned as a separate row
  • Good for sentiment analysis, review analysis, and market research
  • Works well when you want review text for multiple games in one run

Example Input

{
"gameNames": ["Gloomhaven"],
"matchMode": "first",
"maxReviewsPerGame": 50,
"sortBy": "recent",
"minRating": 7
}

Input Fields

  • gameNames: List of board game names to search on BoardGameGeek.
  • matchMode: first or all.
  • maxReviewsPerGame: Maximum number of reviews to return for each matched game.
  • sortBy: recent or highest.
  • minRating: Optional minimum rating filter from 0 to 10.

Match Mode

  • first: Returns reviews for the single best BoardGameGeek match for each input name.
  • all: Returns reviews for every matching BoardGameGeek title found for each input name.

Example:

  • searching for Catan with first usually returns Catan
  • searching for Catan with all may also return related titles such as Catan Card Game or The Rivals for Catan

Output

Each review is returned as its own dataset row.

Example review row:

{
"type": "review",
"source": "boardgamegeek",
"scrapedAt": "2026-05-10T17:14:45.693Z",
"gameId": 174430,
"gameName": "Gloomhaven",
"gameUrl": "https://boardgamegeek.com/boardgame/174430/gloomhaven",
"reviewId": "145330938",
"reviewUrl": null,
"reviewerUsername": "Cdw165",
"reviewerUrl": "https://boardgamegeek.com/user/Cdw165",
"rating": 10,
"ratingText": "10/10",
"reviewTitle": null,
"reviewText": "The game that got me interested in playing more board games. The strategy. The cooperation. This game is a masterpiece. Now if only I could finish the campaign!",
"reviewDate": "2026-05-09",
"language": null,
"commentCount": null,
"thumbsUp": null,
"status": "ok",
"errorMessage": null
}

Example error row:

{
"type": "error",
"source": "boardgamegeek",
"scrapedAt": "2026-05-10T17:14:45.693Z",
"gameId": null,
"gameName": "Unknown Game Name",
"gameUrl": null,
"status": "failed",
"errorMessage": "No BoardGameGeek matches were found for \"Unknown Game Name\"."
}

Good To Know

  • sortBy: "recent" follows BoardGameGeek's recent review order.
  • sortBy: "highest" follows BoardGameGeek's highest-rated review order.
  • matchMode: "all" can return many matched games for broad search terms.
  • Reviews without a visible rating are still returned unless you set minRating.
  • Some fields such as reviewTitle, reviewUrl, commentCount, thumbsUp, and language may be null when they are not publicly available.

Run With Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"gameNames": ["Gloomhaven", "Catan"],
"matchMode": "all",
"maxReviewsPerGame": 10,
"sortBy": "recent",
"minRating": 7,
}
run = client.actor("thescrapelab/boardgamegeek-reviews-scraper").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
for item in items[:10]:
print(item["type"], item.get("gameName"), item.get("reviewerUsername"))
print(item.get("reviewText", "")[:200])
print("---")

Install the client first:

$pip install apify-client

Compliance

  • Scrapes only publicly available review data
  • Does not access private content
  • Does not require login
  • Does not attempt to bypass restrictions

Limitations

  • BoardGameGeek may rate-limit or block some runs
  • Broad names with matchMode: "all" can produce many matched games
  • Public review quality varies from short opinions to long-form writeups