Bundles API

The GG.deals API offers programmatic access to our comprehensive bundle data.

To utilize this API, you will need a unique API key. You can generate this key in your settings.

Retrieve Game Bundles by Steam App ID

To obtain the list of bundles containing a game associated with a specific Steam App ID*, make a GET request to the following URL:

https://api.gg.deals/v1/bundles/by-steam-app-id/

* Steam App IDs correspond to store pages such as https://store.steampowered.com/app/<id>/.

Query Parameters

  • key - Your unique API key, which can be generated in your settings.
  • ids - A comma-separated list of Steam App IDs (e.g., 1,2,3,4), with a maximum of 100 IDs permitted per request.
  • region (optional) - The region code for which bundle data should be returned. By default, bundles available in the USA are provided.
    Valid region codes include: au, be, br, ca, ch, de, dk, es, eu, fi, fr, gb, ie, it, nl, no, pl, se and us.

Response

The response will be a JSON object containing a data field with a list of GameBundles objects for the requested Steam App IDs, indexed by their respective IDs. If a game is not found in our database for a specified Steam App ID, null will be returned for that ID.

The GameBundles object contains the following fields:

  • title - The title of the game in our database.
  • url - The URL of the game in our database.
  • bundles - An array containing a list of Bundle objects representing bundles that contain this game.

The Bundle object contains the following fields:

  • title - The name of the bundle.
  • url - The URL to the news article featuring this bundle (null if this bundle was never featured in a news article on GG.deals).
  • dateFrom - The date (in UTC) indicating when the bundle became available.
  • dateTo - The date (in UTC) indicating when the bundle expires/expired (null if the bundle has no known end date).
  • tiers - An array containing a list of BundleTier objects representing the different pricing tiers available for this bundle.

The BundleTier object contains the following fields:

  • price - The price of this tier, represented as a string with two decimal places.
  • currency - The three-letter currency code used for the price (e.g., USD, EUR, PLN).
  • gamesCount - The number of games a customer can select from the available games list in this tier. This field is relevant only for "Build your own Bundle" type offerings. For example, if gamesCount is 2 and the games field contains 10 games, the customer can select any two games from that list.
    This field is null for standard bundles, indicating that all games listed in the tier are included.
  • games - An array containing a list of BundleTierGame objects representing all games available in this tier.

The BundleTierGame object contains the following fields:

  • title - The title of the game in our database.
  • url - The URL of the game in our database.

Example

Example Request:
curl "https://api.gg.deals/v1/bundles/by-steam-app-id/?ids=1,420,252410&key=mySecretKey&region=pl"
Example Response:
{
  "success": true,
  "data": {
    "1": null,
    "420": {
      "title": "Half-Life 2: Episode Two",
      "url": "https://gg.deals/game/half-life-2-episode-two/",
      "bundles": []
    },
    "252410": {
      "title": "SteamWorld Dig",
      "url": "https://gg.deals/game/steamworld-dig/",
      "bundles": [
        {
          "title": "Humble Indie Bundle 12",
          "url": null,
          "dateFrom": "2014-09-09 22:00:00",
          "dateTo": "2014-09-23 22:00:00",
          "tiers": [
            {
              "price": "0.04",
              "currency": "PLN",
              "gamesCount": null,
              "games": [
                {
                  "title": "Gunpoint",
                  "url": "https://gg.deals/game/gunpoint/"
                },
                ...
              ]
            },
            {
              "price": "3.76",
              "currency": "PLN",
              "gamesCount": null,
              "games": [
                ...
              ]
            },
            {
              "price": "25.43",
              "currency": "PLN",
              "gamesCount": null,
              "games": [
                ...
              ]
            },
            {
              "price": "37.62",
              "currency": "PLN",
              "gamesCount": null,
              "games": [
                ...
              ]
            }
          ]
        },
        ...
        {
          "title": "Fanatical - Build your own All Stars Bundle",
          "url": "https://gg.deals/bundle/fanatical-build-your-own-all-stars-bundle/",
          "dateFrom": "2021-04-08 17:00:00",
          "dateTo": "2021-05-10 09:00:00",
          "tiers": [
            {
              "price": "4.23",
              "currency": "PLN",
              "gamesCount": 1,
              "games": [
                ...
              ]
            },
            {
              "price": "12.66",
              "currency": "PLN",
              "gamesCount": 5,
              "games": [
                ...
              ]
            },
            {
              "price": "21.13",
              "currency": "PLN",
              "gamesCount": 10,
              "games": [
                ...
              ]
            }
          ]
        }
      ]
    }
  }
}

Retrieve Game Bundles by Steam Sub ID

To obtain the list of bundles containing a game associated with a specific Steam Sub ID*, make a GET request to the following URL:

https://api.gg.deals/v1/bundles/by-steam-sub-id/

* Steam Sub IDs correspond to store pages such as https://store.steampowered.com/sub/<id>/.

Query Parameters

  • key - Your unique API key, which can be generated in your settings.
  • ids - A comma-separated list of Steam Sub IDs (e.g., 1,2,3,4), with a maximum of 100 IDs permitted per request.
  • region (optional) - The region code for which bundle data should be returned. By default, bundles available in the USA are provided.
    Valid region codes include: au, be, br, ca, ch, de, dk, es, eu, fi, fr, gb, ie, it, nl, no, pl, se and us.

Response

The response will be a JSON object containing a data field with a list of GameBundles objects for the requested Steam Sub IDs, indexed by their respective IDs. If a game is not found in our database for a specified Steam Sub ID, null will be returned for that ID.

The GameBundles object contains the following fields:

  • title - The title of the game in our database.
  • url - The URL of the game in our database.
  • bundles - An array containing a list of Bundle objects representing bundles that contain this game.

The Bundle object contains the following fields:

  • title - The name of the bundle.
  • url - The URL to the news article featuring this bundle (null if this bundle was never featured in a news article on GG.deals).
  • dateFrom - The date (in UTC) indicating when the bundle became available.
  • dateTo - The date (in UTC) indicating when the bundle expires/expired (null if the bundle has no known end date).
  • tiers - An array containing a list of BundleTier objects representing the different pricing tiers available for this bundle.

The BundleTier object contains the following fields:

  • price - The price of this tier, represented as a string with two decimal places.
  • currency - The three-letter currency code used for the price (e.g., USD, EUR, PLN).
  • gamesCount - The number of games a customer can select from the available games list in this tier. This field is relevant only for "Build your own Bundle" type offerings. For example, if gamesCount is 2 and the games field contains 10 games, the customer can select any two games from that list.
    This field is null for standard bundles, indicating that all games listed in the tier are included.
  • games - An array containing a list of BundleTierGame objects representing all games available in this tier.

The BundleTierGame object contains the following fields:

  • title - The title of the game in our database.
  • url - The URL of the game in our database.

Example

Example Request:
curl "https://api.gg.deals/v1/bundles/by-steam-sub-id/?ids=1,7,1257696&key=mySecretKey&region=pl"
Example Response:
{
  "success": true,
  "data": {
    "1": null,
    "7": {
      "title": "Counter-Strike: Condition Zero Pack",
      "url": "https://gg.deals/pack/counter-strike-condition-zero-pack/",
      "bundles": []
    },
    "1257696": {
      "title": "Capcom Arcade Stadium Complete Pack",
      "url": "https://gg.deals/pack/capcom-arcade-stadium-complete-pack/",
      "bundles": [
        {
          "title": "Humble Capcom Retro Revival Pack",
          "url": "https://gg.deals/bundle/the-new-humble-capcom-bundle-gets-you-over-60-games-for-just-20/",
          "dateFrom": "2025-09-10 18:00:00",
          "dateTo": "2025-09-23 18:00:00",
          "tiers": [
            {
              "price": "89.54",
              "currency": "PLN",
              "gamesCount": null,
              "games": [
                {
                  "title": "Dungeons & Dragons: Chronicles of Mystara",
                  "url": "https://gg.deals/game/dungeons-dragons-chronicles-of-mystara/"
                },
                ...
              ]
            }
          ]
        },
        ...
        {
          "title": "Fanatical - Build your own Capcom Masters Bundle",
          "url": "https://gg.deals/bundle/fanaticals-byo-capcom-masters-bundle-packs-a-punch-with-top-tier-games/",
          "dateFrom": "2026-04-29 13:05:00",
          "dateTo": "2026-06-03 07:00:00",
          "tiers": [
            {
              "price": "122.89",
              "currency": "PLN",
              "gamesCount": 2,
              "games": [
                ...
              ]
            },
            {
              "price": "180.99",
              "currency": "PLN",
              "gamesCount": 3,
              "games": [
                ...
              ]
            },
            {
              "price": "232.53",
              "currency": "PLN",
              "gamesCount": 4,
              "games": [
                ...
              ]
            }
          ]
        }
      ]
    }
  }
}

Retrieve Game Bundles by Steam Bundle ID

To obtain the list of bundles containing a game associated with a specific Steam Bundle ID*, make a GET request to the following URL:

https://api.gg.deals/v1/bundles/by-steam-bundle-id/

* Steam Bundle IDs correspond to store pages such as https://store.steampowered.com/bundle/<id>/.

Query Parameters

  • key - Your unique API key, which can be generated in your settings.
  • ids - A comma-separated list of Steam Bundle IDs (e.g., 1,2,3,4), with a maximum of 100 IDs permitted per request.
  • region (optional) - The region code for which bundle data should be returned. By default, bundles available in the USA are provided.
    Valid region codes include: au, be, br, ca, ch, de, dk, es, eu, fi, fr, gb, ie, it, nl, no, pl, se and us.

Response

The response will be a JSON object containing a data field with a list of GameBundles objects for the requested Steam Bundle IDs, indexed by their respective IDs. If a game is not found in our database for a specified Steam Bundle ID, null will be returned for that ID.

The GameBundles object contains the following fields:

  • title - The title of the game in our database.
  • url - The URL of the game in our database.
  • bundles - An array containing a list of Bundle objects representing bundles that contain this game.

The Bundle object contains the following fields:

  • title - The name of the bundle.
  • url - The URL to the news article featuring this bundle (null if this bundle was never featured in a news article on GG.deals).
  • dateFrom - The date (in UTC) indicating when the bundle became available.
  • dateTo - The date (in UTC) indicating when the bundle expires/expired (null if the bundle has no known end date).
  • tiers - An array containing a list of BundleTier objects representing the different pricing tiers available for this bundle.

The BundleTier object contains the following fields:

  • price - The price of this tier, represented as a string with two decimal places.
  • currency - The three-letter currency code used for the price (e.g., USD, EUR, PLN).
  • gamesCount - The number of games a customer can select from the available games list in this tier. This field is relevant only for "Build your own Bundle" type offerings. For example, if gamesCount is 2 and the games field contains 10 games, the customer can select any two games from that list.
    This field is null for standard bundles, indicating that all games listed in the tier are included.
  • games - An array containing a list of BundleTierGame objects representing all games available in this tier.

The BundleTierGame object contains the following fields:

  • title - The title of the game in our database.
  • url - The URL of the game in our database.

Example

Example Request:
curl "https://api.gg.deals/v1/bundles/by-steam-bundle-id/?ids=1,232,13014&key=mySecretKey&region=pl"
Example Response:
{
  "success": true,
  "data": {
    "1": null,
    "7": {
      "title": "Counter-Strike: Condition Zero Pack",
      "url": "https://gg.deals/pack/counter-strike-condition-zero-pack/",
      "bundles": []
    },
    "1257696": {
      "title": "Capcom Arcade Stadium Complete Pack",
      "url": "https://gg.deals/pack/capcom-arcade-stadium-complete-pack/",
      "bundles": [
        {
          "title": "Humble Capcom Retro Revival Pack",
          "url": "https://gg.deals/bundle/the-new-humble-capcom-bundle-gets-you-over-60-games-for-just-20/",
          "dateFrom": "2025-09-10 18:00:00",
          "dateTo": "2025-09-23 18:00:00",
          "tiers": [
            {
              "price": "89.54",
              "currency": "PLN",
              "gamesCount": null,
              "games": [
                {
                  "title": "Dungeons & Dragons: Chronicles of Mystara",
                  "url": "https://gg.deals/game/dungeons-dragons-chronicles-of-mystara/"
                },
                ...
              ]
            }
          ]
        },
        {
          "title": "Fanatical - Build your own Capcom Masters Bundle",
          "url": "https://gg.deals/bundle/fanaticals-byo-capcom-masters-bundle-packs-a-punch-with-top-tier-games/",
          "dateFrom": "2026-04-29 13:05:00",
          "dateTo": "2026-06-03 07:00:00",
          "tiers": [
            {
              "price": "122.89",
              "currency": "PLN",
              "gamesCount": 2,
              "games": [
                ...
              ]
            },
            {
              "price": "180.99",
              "currency": "PLN",
              "gamesCount": 3,
              "games": [
                ...
              ]
            },
            {
              "price": "232.53",
              "currency": "PLN",
              "gamesCount": 4,
              "games": [
                ...
              ]
            }
          ]
        }
      ]
    }
  }
}

Retrieve All Active Bundles

To obtain a complete list of all currently active bundles featured on GG.deals, make a GET request to the following URL:

https://api.gg.deals/v1/bundles/active/

Query Parameters

  • key - Your unique API key, which can be generated in your settings.
  • region (optional) - The region code for which bundle data should be returned. By default, bundles available in the USA are provided.
    Valid region codes include: au, be, br, ca, ch, de, dk, es, eu, fi, fr, gb, ie, it, nl, no, pl, se and us.
  • cursor (optional) - A pagination token used to retrieve subsequent pages of results. This parameter is automatically provided in the next and previous URLs of the response and should not be constructed manually.
  • offset (optional) - Used with the cursor parameter to specify the position within the result set. This parameter is automatically provided in pagination URLs and should not be modified manually.

Response

The response will be a JSON object containing a data field with an object that includes the following fields:

  • previous - The URL to the previous page of results (null if the current response represents the first page of results). This URL contains a cursor parameter, which is valid for one hour from the initial request.
  • next - The URL to the next page of results (null if the current response represents the last page of results). This URL contains a cursor parameter, which is valid for one hour from the initial request.
  • totalCount - The total number of active bundles available across all pages.
  • bundles - An array containing a list of Bundle objects representing the current page of active bundles.

The Bundle object contains the following fields:

  • title - The name of the bundle.
  • url - The URL to the news article featuring this bundle (null if this bundle was never featured in a news article on GG.deals).
  • dateFrom - The date (in UTC) indicating when the bundle became available.
  • dateTo - The date (in UTC) indicating when the bundle expires/expired (null if the bundle has no known end date).
  • tiers - An array containing a list of BundleTier objects representing the different pricing tiers available for this bundle.

The BundleTier object contains the following fields:

  • price - The price of this tier, represented as a string with two decimal places.
  • currency - The three-letter currency code used for the price (e.g., USD, EUR, PLN).
  • gamesCount - The number of games a customer can select from the available games list in this tier. This field is relevant only for "Build your own Bundle" type offerings. For example, if gamesCount is 2 and the games field contains 10 games, the customer can select any two games from that list.
    This field is null for standard bundles, indicating that all games listed in the tier are included.
  • games - An array containing a list of BundleTierGame objects representing all games available in this tier.

The BundleTierGame object contains the following fields:

  • title - The title of the game in our database.
  • url - The URL of the game in our database.

Example

Example Request:
curl "https://api.gg.deals/v1/bundles/active/?key=mySecretKey&region=pl"
Example Response:
{
  "success": true,
  "data": {
    "previous": null,
    "next": "https://api.gg.deals/v1/bundles/active/?key=mySecretKey&cursor=gzobstyv6LzYBZMukmtrnztDrLUvLDnQ&region=pl&offset=100",
    "totalCount": 102,
    "bundles": [
      {
        "title": "Fanatical - Build your own Frightmare Bundle (Halloween 2024)",
        "url": "https://gg.deals/bundle/fanaticals-build-your-own-frightmare-bundle-is-here-craft-a-pack-of-nightmares-from-666/",
        "dateFrom": "2024-10-28 17:00:00",
        "dateTo": "2024-11-26 07:00:00",
        "tiers": [
          {
            "price": "28.20",
            "currency": "PLN",
            "gamesCount": 2,
            "games": [
              {
                "title": "The Evil Within",
                "url": "https://gg.deals/game/the-evil-within/"
              },
              ...
            ]
          },
          {
            "price": "49.36",
            "currency": "PLN",
            "gamesCount": 4,
            "games": [
              ...
            ]
          },
          ...
        ]
      },
      {
        "title": "Fanatical - Build your own Tabletop Wargame Bundle",
        "url": "https://gg.deals/bundle/fanatical-build-your-own-tabletop-wargame-bundle-is-a-strategic-choice-for-great-leaders/",
        "dateFrom": "2024-10-29 17:00:00",
        "dateTo": null,
        "tiers": [
            ...
        ]
      },
      ...
    ]
  }
}

Rate Limits

Your API key allows you to retrieve up to 100 records per minute, with a maximum of 1000 per hour. For the by-steam-app-id, by-steam-sub-id and by-steam-bundle-id endpoints, each ID counts as one record against your limits. For the active endpoint, each request counts as one record regardless of the number of bundles returned. Note that any invalid request also counts against these limits.

All API responses include the following headers with rate limit information:

  • x-ratelimit-limit - The total number of allowed requests within the current time frame.
  • x-ratelimit-remaining - The number of remaining requests available within the current time frame.
  • x-ratelimit-reset - The timestamp when the rate limits will reset.

If you exceed your rate limit, a 429 error (Too Many Requests) will be returned with the following response:

Example Response:
{
  "success": false,
  "data": {
    "name": "Too Many Requests",
    "message": "You can fetch bundles info only for 100 games per minute. Try again later.",
    "code": 429,
    "status": 429
  }
}
An error 429 is also returned if you attempt to fetch more items than your remaining limit allows. For example, if you try to fetch bundles for 10 games but your remaining limit is only 5, a 429 error will occur and no data will be returned. In such cases, you should either reduce the number of requested IDs or wait until your rate limit resets.

Changelog

This section tracks API changes and updates over time. If you want to be notified about changes in API, subscribe to this discussion on our forum.

  • 2026-04-30 - Added by-steam-sub-id and by-steam-bundle-id endpoints.
  • 2025-05-19 - Initial API release.