itch.io Games Scraper avatar

itch.io Games Scraper

Pricing

from $0.56 / 1,000 results

Go to Apify Store
itch.io Games Scraper

itch.io Games Scraper

Indie game listings from itch.io: browse any genre/tag/platform/free page, with title, author, price and platforms from the list, plus optional full detail per game (price, rating, tags, tools used, dev status, description).

Pricing

from $0.56 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Categories

Share

Indie game listings from itch.io — browse any genre/tag/platform/free page, with optional full detail per game.


What you get

browseUrls — one SEARCH_SUMMARY + N GAME rows per browse URL. Each GAME row always has the list-card fields (title, author, price tag text, genre, platforms, thumbnail). When includeGameDetails is on (default), it's enriched with price/rating (product, raw JSON-LD), the full info panel (infoPanel: dev status, tags, tools used, languages, playtime, etc. — whatever itch.io's own table shows for that game), and fullDescription.

Pagination is real and honest here — ?page=N genuinely advances and ends with a real 404, not a clamp — so a browse URL with more results than one page pages through them automatically up to maxItemsPerQuery.


Input

{
"browseUrls": ["https://itch.io/games/free"],
"includeGameDetails": true,
"maxItemsPerQuery": 36
}
  • browseUrls — any itch.io /games... URL. This actor doesn't build filter URLs itself (itch.io has too many genre/tag/platform/ price/sort combinations to reinvent) — browse itch.io in your browser and paste the resulting URL.
  • includeGameDetails — true costs one extra request per returned row for price/rating/full detail; false returns list-card fields only.
  • maxItemsPerQuery — caps rows per browse URL, paging as needed (36 rows/page, itch.io's own page size).

Known limits

1. browseUrls must be a real itch.io /games... path. Other paths (including /search, which itch.io's own robots.txt disallows) are refused before any request.

2. Price absence means free, not "$0.00". A game's price tag is simply not present in the list card when the game is free — this actor's priceTag field is None for those, not a zero-value string.

3. product and infoPanel are raw, not flattened. infoPanel's keys are itch.io's own row labels for that specific game (varies — "Average session" only appears if the developer disclosed a playtime estimate, for example), not a fixed schema.


Errors are honest, no disguised-200 traps

An invalid browse URL (e.g. a genre that doesn't exist) gets a genuine 404 → ERROR row, not a silent fallback to a different listing. A game removed between the list fetch and the detail fetch is reported per-row via _detailError, without failing the whole query.

Anti-bot posture

None encountered. 3/3 curl_cffi TLS profiles clean 200 on both the main itch.io host and a creator subdomain detail page.

Policy

https://itch.io/robots.txt has a single User-agent: * group — /games... browse paths and creator subdomains are not disallowed (only /search, /embed/, /checkout/, and a few purchase/download paths this actor never touches).