GOG Games Scraper avatar

GOG Games Scraper

Pricing

from $1.63 / 1,000 results

Go to Apify Store
GOG Games Scraper

GOG Games Scraper

Reads GOG’s public JSON catalog and returns records for games, packs, and DLC. Each result can include its title, slug, release date, developers, publishers, genres, tags, operating systems, review data, and cover URL. Choose product types, search terms, genres, and regional catalog settings.

Pricing

from $1.63 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Returns: one row per game, pack or DLC with title, slug, priceFinal, priceBase, discountPercent, features, genres and reviewsRating. Input: {"searchQuery": "witcher", "maxItems": 20} Best for: GOG price and discount monitoring, game catalog datasets, and deal alerts filtered by genre.

{
"id": "1207658930",
"title": "The Witcher 2: Assassins of Kings Enhanced Edition",
"slug": "the_witcher_2",
"productType": "game",
"priceFinal": 2.99,
"currency": "USD",
"discountPercent": 85,
"genres": [
"Role-playing",
"Action",
"Fantasy"
]
}

What does GOG Games Scraper do?

GOG Games Scraper is a GOG scraper and GOG API alternative that reads the public GOG.com game catalog and returns it as clean, structured rows. You can search by title, filter by genre, show only discounted products, pick the product types (game, pack, DLC) and sort by trending, price, release date, title or review rating. Each row holds the current price, the base price, the discount percentage, the currency, the release date, developers, publishers, genres, tags, supported operating systems, review rating and count, a cover image URL and the store page link.

The Actor calls the open JSON catalog that the GOG website itself uses. It needs no login, no browser and no API key, so runs are quick and light. It is built for three jobs: tracking GOG prices and sales over time, building a dataset of games with their metadata, and finding discounted games in a genre you care about.

Prices follow the country and currency you choose. Set countryCode and currencyCode to get regional prices, for example Germany and EUR. Results are paged at 48 products per request, with a pause between requests, until your maxItems limit is reached or the catalog runs out.

What data can you get from GOG?

FieldDescriptionExample
idStable GOG product ID1207658930
titleGame titleThe Witcher 2: Assassins of Kings Enhanced Edition
slugGOG URL slugthe_witcher_2
productTypegame, pack or dlcgame
releaseDateRelease date, YYYY.MM.DD2012.04.17
releaseDateIsoRelease date as YYYY-MM-DD, falls back to the store release date2012-04-17
storeReleaseDateIsoDate the product was added to GOG, YYYY-MM-DD2023-08-17
priceFinalCurrent price2.99
priceBaseRegular price before discount19.99
currencyCurrency code of the pricesUSD
discountPercentCurrent discount in percent, 0 if not on sale85
developersDeveloper names["CD PROJEKT RED"]
publishersPublisher names["CD PROJEKT RED"]
genresGenre names["Role-playing", "Action", "Fantasy"]
featuresGame feature names from the catalog["Cloud saves", "Controller support"]
tagsTag names["Story Rich", "Atmospheric"]
operatingSystemsSupported platforms["windows", "linux", "osx"]
reviewsRatingGOG user rating score, 0-50 scale as returned by GOG47
ratingOutOf5reviewsRating divided by 10, null when unrated4.7
reviewsCountNumber of user reviews14522
coverUrlCover image URLhttps://images.gog-statics.com/8355e657...png
storeUrlProduct page on GOGhttps://www.gog.com/en/game/the_witcher_2
sourceUrlCatalog request the record came fromhttps://catalog.gog.com/v1/catalog?...

Features are the catalog's own labels, such as Achievements, Cloud saves, Controller support, Overlay and Single-player. They help you identify titles that suit a controller-based setup or sync saved progress. The list is copied from each product's source JSON; it does not assert that a feature works on every operating system or every edition. A missing feature list is null, while a supplied empty list stays empty. No detail-page requests or AI enrichment are needed to collect this field.

Some products have no price (for example unreleased or free items) or no reviews yet. In that case the price or review fields are null instead of being guessed.

How to use GOG Games Scraper

  1. Open the Actor in Apify Console and go to the Input tab.
  2. Optionally type a search query, tick Discounted only, add genre slugs such as rpg, and choose a sort field.
  3. Set Maximum results to the number of games you want.
  4. Click Start. The run finishes in seconds for a few hundred games.
  5. Open the Output tab and export the dataset as JSON, CSV, Excel, XML or RSS.

Tips: Leave all filters empty to get the trending catalog. Genre filters use GOG slugs, for example rpg, action, strategy, adventure, simulation. To watch prices over time, schedule the Actor daily and compare priceFinal per id. maxItems is exact: a run with maxItems 7 returns 7 rows when at least 7 match. No proxy is needed by default. If your runs are ever blocked, enable Apify Proxy in the Proxy section. Blocked requests are retried on a new IP. HTML block detection checks page titles and short visible messages, so loading an anti-bot script alone does not trigger retries.

Price-range filtering uses the current selling price, not the regular price. For a regional budget shortlist, set minPrice and maxPrice together with countryCode and currencyCode. For example, {"minPrice": 5, "maxPrice": 10, "sortBy": "price", "sortOrder": "asc", "maxItems": 20} requests a bounded catalog sorted from lowest current price upward. Bounds are inclusive, and either bound may be omitted. An omitted lower bound starts at zero; an omitted upper bound uses a generous catalog ceiling. Both inputs are off by default, so existing requests keep their current behavior. The Actor validates that bounds are finite, non-negative numbers and that the lower bound does not exceed the upper bound.

GOG applies the range on the same catalog request that supplies the records. Products excluded by the filters are not pushed or charged as results. Other filters still apply, so a narrow title, genre, sale and price combination may have fewer matches than maxItems. Empty results are a successful run with a message suggesting fewer title keywords, removing genre or price filters, disabling the sale filter, or including DLC. Search accepts title keywords rather than URLs or product IDs. Every query word must appear in the returned title, so fewer words can produce more matches. The current local prefill returned eight matching Witcher records; maxItems is a ceiling when fewer products match, not a promise of twenty records. Persistent blocking is also reported as a successful empty run after bounded retries. Unexpected catalog shapes are logged and do not produce placeholder dataset rows.

Input

FieldTypeRequiredDescription
searchQuerystringNoText to search in game titles, e.g. witcher. Empty browses the whole catalog.
discountedOnlybooleanNoOnly products currently on sale. Default false.
minPricenumberNoInclusive lower current-price bound in currencyCode; editor default 0, omitted API value leaves the lower bound unset.
maxPricenumberNoInclusive upper current-price bound in currencyCode; editor default 1000000, omitted API value leaves the upper bound unset.
genresarray of stringsNoGOG genre slugs, e.g. ["rpg"]. Empty means all genres.
productTypesarrayNogame, pack and/or dlc. Default ["game","pack"].
sortBystringNotrending, price, releaseDate, title or reviewsRating. Default trending.
sortOrderstringNodesc or asc. Default desc.
countryCodestringNoTwo-letter country for regional prices. Default US.
currencyCodestringNoThree-letter currency code. Default USD.
localestringNoLanguage locale, e.g. en-US. Default en-US.
maxItemsintegerNoMaximum results, 1-10000. Default 50.
proxyConfigurationobjectNoProxy settings. Default: no proxy.

Example:

{
"searchQuery": "",
"discountedOnly": true,
"genres": ["rpg"],
"productTypes": ["game", "pack"],
"sortBy": "reviewsRating",
"sortOrder": "desc",
"countryCode": "US",
"currencyCode": "USD",
"locale": "en-US",
"maxItems": 40
}

Output

Each run writes one dataset item per product. Here is a real item from a test run:

[
{
"id": "1207658930",
"title": "The Witcher 2: Assassins of Kings Enhanced Edition",
"slug": "the_witcher_2",
"productType": "game",
"releaseDate": "2012.04.17",
"priceFinal": 2.99,
"priceBase": 19.99,
"currency": "USD",
"discountPercent": 85,
"developers": ["CD PROJEKT RED"],
"publishers": ["CD PROJEKT RED"],
"genres": ["Role-playing", "Action", "Fantasy"],
"operatingSystems": ["windows", "linux", "osx"],
"reviewsRating": 47,
"reviewsCount": 14522,
"coverUrl": "https://images.gog-statics.com/8355e657a19311b158a3553a154e109199d6991c7791a20c3305af1f84d15ed7.png",
"storeUrl": "https://www.gog.com/en/game/the_witcher_2"
}
]

You can download the data as JSON, CSV, Excel, XML or RSS, or read it through the Apify API.

How much does it cost to scrape GOG?

GOG Games Scraper is charged per result. You pay only for the results returned, and maxItems caps how many that can be. See the Pricing tab for the current price. Because the Actor uses the open catalog JSON without a browser, runs use very little compute.

Use with AI agents (MCP)

Connect GOG Games Scraper to Claude, Cursor or any MCP client through the Apify MCP server:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=axiomworks/gog-games-scraper"
}
}
}

Example prompts:

  1. "List the 20 best-reviewed discounted RPGs on GOG with their current price and discount."
  2. "Search GOG for Witcher games and give me the price in EUR for Germany."
  3. "Get the 50 trending games on GOG and show developers and release dates."

Integrations and API

Run GOG Games Scraper from your own code with the Apify API. Set APIFY_TOKEN to your Apify API token (send it in the Authorization header, never in the URL).

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("axiomworks/gog-games-scraper").call(run_input={"discountedOnly": True, "maxItems": 50})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('axiomworks/gog-games-scraper').call({ discountedOnly: true, maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

cURL

curl -X POST "https://api.apify.com/v2/acts/axiomworks~gog-games-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"discountedOnly": true, "maxItems": 50}'

The Integrations tab connects the Actor to Make, Zapier, n8n, Google Sheets and webhooks, so you can send new deals to a spreadsheet or a chat channel on a schedule.

FAQ

How many games can I get in one run? Up to 10,000 per run through maxItems. The catalog holds several thousand products, and filters narrow that down.

Why did my run return 0 results? The filters matched nothing. A search query combined with discounted only and a genre can be very narrow. Remove a filter and try again. The run then succeeds with a warning instead of failing.

What game features are returned? Features are the catalog's own labels, such as Achievements, Cloud saves, Controller support, Overlay and Single-player. They help you identify titles that suit a controller-based setup or sync saved progress. The list is copied from each product's source JSON; it does not assert that a feature works on every operating system or every edition. A missing feature list is null, while a supplied empty list stays empty. No detail-page requests or AI enrichment are needed to collect this field.

Why is a price empty? Some products have no price in the chosen country, for example unreleased titles. Those fields are null.

How do I get prices in another currency? Set countryCode and currencyCode, for example DE and EUR. GOG decides which combinations it supports.

What does reviewsRating mean? It is the user rating score exactly as GOG returns it, on a 0-50 scale, so 47 corresponds to 4.7 out of 5.

How fresh is the data? Every run reads the catalog live, so prices and discounts match what GOG shows at that moment.

Does it need a proxy? No. The catalog is open. A proxy option is there if you ever get blocked, and blocked requests are retried automatically.

Can I schedule it? Yes. Use Apify schedules to run it daily or hourly and compare results over time.

Are DLC items included? Only if you add dlc to productTypes. The default is games and packs.

The Actor collects only publicly available catalog data that loads without logging in: game titles, prices, genres and review scores. It does not access accounts or any private data. You are responsible for how you use the data and for following the laws and terms that apply to you, including copyright and database rights. This is not legal advice. This Actor is an independent tool and is not affiliated with or endorsed by GOG.

Feedback

Found a bug or need a field that isn't here? Open an issue on the Issues tab and we'll look at it.