IsThereAnyDeal API (2.7.0)

Download OpenAPI specification:Download

Changelog

IsThereAnyDeal API provides programmatic access to features found at IsThereAnyDeal.

Terms of Service

API is provided in good faith. We trust you won't misuse the API to damage IsThereAnyDeal, its users or its reputation.

  • You MAY use this API for commercial purposes IF the resulting app is available to public. If you want to use this API privately contact us.
  • You SHOULD provide a link to IsThereAnyDeal.com or mention IsThereAnyDeal API.
  • You MUST NOT make an impression that you are affiliated with IsThereAnyDeal, unless agreed otherwise. If you are interested in making an official app, please contact us.
  • You MUST NOT change provided data in any way. This means that you can't remove affiliate tags from the URLs, change prices and so on. You MAY use only part of data provided and enrich them from your own sources.
  • You MUST NOT make an app that could be considered a competition to IsThereAnyDeal or IsThereAnyDeal projects.
  • You MUST NOT use this API to directly or indirectly help the competition of IsThereAnyDeal.

All data are provided as-is. We reserve the right to deny you access to the API at any point without notice. If you are not sure about any of the points, please contact us.

Access

Most of the endpoints will be restricted by either API key or OAuth. In order to get neccessary keys, you have to register your app. Upon registration, api keys and OAuth credentials will be generated for you.

For some endpoints you might need explicit approval for use. In such cases, contact us.

OAuth

We support authorization code flow with PKCE extension.

You can find PKCE step-through tutorial at OAuth 2.0 PKCE Flow

Do not set hard limits for token lengths. Server will return access token as JWT of variable length. To authorize your endpoint access use Authorization header.

At the moment implicit flow is also enabled, but its usage is discouraged and support may be removed in the future

Rate Limiting

Access to API is rate limited and subject to change. You should get rate-limit info in appropriate headers. Further limits and restrictions may be added if we detect misuse.

If you have questions about limits, contact us.

Unstable and Internal Endpoints

Some endpoints are marked as unstable or internal. Unstable endpoints are publicly available, but the API may not be completely finalized yet - either the way the endpoint is called or the response may change at any time.

Internal APIs are available only for our own services. They are documented here for the sake of completeness.

Source

You can find source files for this documentation over at GitHub. Feel free to help us improve it.

Webhooks

Webhooks provide a simpler wait to get data from IsThereAnyDeal, if you don't required full API access.

User can register a webhook in their settings and choose which events they wish to listen to. Once the event is triggered on IsThereAnyDeal, a request will be sent to registered webhook.

Each request will include ITAD-Hook-ID header with a unique ID of a registered webhook and ITAD-Event-ID headers which identify the event.

Ping event Webhook

Event you can use to test if the webhook is set up correctly. Can be triggered manually from settings.

header Parameters
User-Agent
required
string
Value: "ITAD-Webhooks/1.0 (+https://isthereanydeal.com)"
Content-Type
required
string
Value: "application/json"
ITAD-Hook-ID
required
string <uuid>

ID of the Webhook

ITAD-Event
required
string

Event that generated the request

Value: "ping"
Request Body schema: application/json
string

Ping even will always send "pong" string in a body

Responses

Request samples

Content type
application/json
"pong"

Waitlist notification event Webhook

This event is trigger on new Waitlist notifications

Event's payload is a list of games and their deals that passed user's notification settings, similar to the Waitlist email notification you may receive.

header Parameters
User-Agent
required
string
Value: "ITAD-Webhooks/1.0 (+https://isthereanydeal.com)"
Content-Type
required
string
Value: "application/json"
ITAD-Hook-ID
required
string <uuid>

ID of the Webhook

ITAD-Event
required
string

Event that generated the request

Value: "notification-waitlist"
Request Body schema: application/json
Array
id
required
string <uuid>
slug
required
string
title
required
string
required
string or null (obj.game-type)
mature
required
boolean
required
Price (object) or null (obj.price-nullable)
required
Price (object) or null (obj.price-nullable)
required
Array of objects (Waitlist Notification Deal)

Responses

Request samples

Content type
application/json

Payload

[
  • {
    }
]

Lookup

Endpoints for looking up things on IsThereAnyDeal.

Endpoints in /lookup/ namespace will follow this URL structure: /lookup/{lookup-what}/{by-what}/

Endpoints from other namespaces that are related to lookup in any way may also be included in this category.

Lookup ITAD game IDs by title

Lookup IsThereAnyDeal's game IDs by title This is not a full fledged search. Some title preprocessing will happen, but the lookup will only return IDs for titles, that match precisely. Typos or variations in title may not give you expected result.

Authorizations:
NonekeySecurity
Request Body schema: application/json

List of titles

Array (non-empty)
string

Responses

Request samples

Content type
application/json
[
  • "Baldurs Gate 3",
  • "Half-Life 2",
  • "Unknown game"
]

Response samples

Content type
application/json
{
  • "Baldurs Gate 3": "018d9584-24d6-7010-b82b-df1f0b154cc7",
  • "Half-Life 2": "018d937f-012f-73b8-ab2c-898516969e6a",
  • "Unknown game": null
}

Lookup ITAD game IDs by IDs on shop

Lookup IsThereAnyDeal's game IDs by shop's game IDs

Authorizations:
NonekeySecurity
path Parameters
shopId
required
number
Request Body schema: application/json

List of shop's game IDs

Array (non-empty)
string

Responses

Request samples

Content type
application/json
[
  • "app/220"
]

Response samples

Content type
application/json
{
  • "bundle/27508": "018d95bc-fe96-73e6-a9f7-10afc28c0c03",
  • "bundle/28796": "018d937f-6671-7056-b419-aac8a69a625e",
  • "sub/467072": "018d937f-42c6-70a5-a29b-9d8c2e0f7b84",
  • "sub/752476": "018d937f-6128-7151-8d2e-b4a9ad2e1ce8",
  • "sub/137730": "018d937f-6ee4-73f5-858c-2fde3407462f",
  • "app/137730": null,
  • "bundle/33608": "018d937f-7596-706f-b75d-834d76172237"
}

Lookup game IDs on shop by ITAD game IDs

Lookup shop's game IDs by IsThereAnyDeal game IDs

Authorizations:
NonekeySecurity
path Parameters
shopId
required
number
Request Body schema: application/json

List of game IDs

Array (non-empty)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]

Response samples

Content type
application/json
{
  • "018d95bc-fe96-73e6-a9f7-10afc28c0c03": [
    ],
  • "018d937f-6671-7056-b419-aac8a69a625e": [
    ],
  • "018d937f-42c6-70a5-a29b-9d8c2e0f7b84": [
    ],
  • "018d937f-6128-7151-8d2e-b4a9ad2e1ce8": [
    ]
}

Search

Search for games by title

Authorizations:
keySecurity
query Parameters
title
required
string

Find games by name

results
number [ 1 .. 100 ]
Default: 20

Maximum number of results to return

Responses

Response samples

Content type
application/json

Europa Universalis IV search

[]

Lookup Game

Lookup game based on title or Steam appid

Authorizations:
keySecurity
query Parameters
title
string

Find game by it's name

appid
number

Find game by Steam appid

Responses

Response samples

Content type
application/json

Game

Search

Search for games by title

Authorizations:
keySecurity
query Parameters
title
required
string

Find games by name

results
number [ 1 .. 100 ]
Default: 20

Maximum number of results to return

Responses

Response samples

Content type
application/json

Europa Universalis IV search

[]

Lookup Game

Lookup game based on title or Steam appid

Authorizations:
keySecurity
query Parameters
title
string

Find game by it's name

appid
number

Find game by Steam appid

Responses

Response samples

Content type
application/json

Game Info

Get basic game information

Authorizations:
keySecurity
query Parameters
id
required
string <uuid>

Game ID

Responses

Response samples

Content type
application/json

Europa Universalis IV info

{}

Prices

Prices

Get games' prices

Authorizations:
keySecurity
query Parameters
country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

deals
boolean

Only load deals, omit prices that have no price cut

vouchers
boolean

Allow vouchers in prices

capacity
integer >= 0

How many prices to load per each game, 0 or omit for no limit

shops
Array of integers
Example: shops=65,35

List of shop IDs for which you want to load prices

Request Body schema: application/json

List of Game IDs for which to load prices

Array ([ 1 .. 200 ] items)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json

Successful response

[
  • {
    }
]

Price Overview

Get basic price overview for selected games.

For each game current best price will be loaded (optionally, only from selected shops), historical low price (among all covered shops).

Furthermore, result will also contain list of currently active bundles, which contain at least one of the queried games.

Authorizations:
keySecurity
query Parameters
country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

shops
Array of integers
Example: shops=65,35

List of shop IDs

vouchers
boolean
Default: true

Allow vouchers in prices

Request Body schema: application/json

List of Game IDs

Array ([ 1 .. 200 ] items)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json

Successful response

{}

History

History Low

Get historically lowest prices

Authorizations:
keySecurity
query Parameters
country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

Request Body schema: application/json

List of Game IDs for which to load historical lows

Array ([ 1 .. 200 ] items)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json

Successful response

[
  • {
    },
  • {
    }
]

Store Low

Get historically lowest prices for individual stores

Authorizations:
keySecurity
query Parameters
country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

shops
Array of integers
Example: shops=65,35

List of shop IDs

Request Body schema: application/json

List of Game IDs for which to load store lows

Array ([ 1 .. 200 ] items)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json

Successful response

[
  • {
    },
  • {
    }
]

History log

Get log of historical prices

Authorizations:
keySecurity
query Parameters
id
required
string <uuid>

Game ID

country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

shops
Array of integers
Example: shops=65,35

List of shop IDs

since
string <date-time>

Load only price changes after this date.
By default, only last 3 months are loaded

Responses

Response samples

Content type
application/json

Successful response

[
  • {
    },
  • {
    }
]

Bundles

Bundles including Game

Get all bundles which contain the game

Authorizations:
keySecurity
query Parameters
id
required
string <uuid>

Game ID

country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

expired
boolean

Include expired bundles

Responses

Response samples

Content type
application/json

Successful response

[]

Deals List

Deals List

Get current deals. Follows same rules as deals list displayed on the website, which means that you will not get one game more than once in the list.

For each game, the best price is displayed, ignoring stores that currently don't have game on sale, even if they currently have a better price.

Authorizations:
keySecurity
query Parameters
country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

offset
integer >= 0
Default: 0

Deals list offset

limit
integer [ 1 .. 200 ]
Default: 20

How many deals to return

sort
string
Examples:
  • sort=-cut - Highest cut
  • sort=price - Lowest price

Sorting values, same as in deals list on the website

nondeals
boolean
Default: false

Load non-sale prices

mature
boolean
Default: false

Load deals for mature prices

shops
Array of numbers
Examples:
  • shops=61,35 - Only Steam (61) and GOG (35)

List of shop IDs separated by comma

filter
string

Filter string

Responses

Response samples

Content type
application/json
{}

Subscriptions

Game Subscriptions

Get list of subscriptions the game is listed in.

Authorizations:
keySecurity
query Parameters
country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

Request Body schema: application/json

List of Game IDs

Array ([ 1 .. 200 ] items)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json

Successful response

[
  • {
    },
  • {
    }
]

Games

Games in Waitlist

Get games in user's Waitlist

Authorizations:
oauthSecurity

Responses

Response samples

Content type
application/json

Successful response

[]

Add to Waitlist

Add games to user's Waitlist

Authorizations:
oauthSecurity
Request Body schema: application/json

List of Game IDs

Array (non-empty)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Delete from Waitlist

Delete games from user's Waitlist

Authorizations:
oauthSecurity
Request Body schema: application/json

List of Game IDs

Array (non-empty)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Stats

Waitlist Stats

Get Waitlist statistics for a game

Note: stats do not take into consideration users' regions. If they have set their price limit to be a historical low, stats will be computed for all users as if they were in the region you specify

Authorizations:
keySecurity
query Parameters
id
required
string <uuid>

Game ID

country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

bucket_price
integer >= 0
Default: 5

Price bucket size

bucket_cut
integer >= 0
Default: 5

Cut bucket size

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "price": {
    },
  • "cut": {
    }
}

Most Waitlisted

Get list of most Waitlisted games

Authorizations:
keySecurity
query Parameters
offset
integer >= 0
Default: 0
limit
integer [ 1 .. 500 ]
Default: 20

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Notifications

Waitlist notification event Webhook

This event is trigger on new Waitlist notifications

Event's payload is a list of games and their deals that passed user's notification settings, similar to the Waitlist email notification you may receive.

header Parameters
User-Agent
required
string
Value: "ITAD-Webhooks/1.0 (+https://isthereanydeal.com)"
Content-Type
required
string
Value: "application/json"
ITAD-Hook-ID
required
string <uuid>

ID of the Webhook

ITAD-Event
required
string

Event that generated the request

Value: "notification-waitlist"
Request Body schema: application/json
Array
id
required
string <uuid>
slug
required
string
title
required
string
required
string or null (obj.game-type)
mature
required
boolean
required
Price (object) or null (obj.price-nullable)
required
Price (object) or null (obj.price-nullable)
required
Array of objects (Waitlist Notification Deal)

Responses

Request samples

Content type
application/json

Payload

[
  • {
    }
]

Waitlist notification detail

Get details of Waitlist notification

Authorizations:
oauthSecurity
query Parameters
id
required
string <uuid>

Notification ID

Responses

Response samples

Content type
application/json

Successful response

{
  • "id": "01921bab-b582-73bc-8473-9f125837107b",
  • "timestamp": "2024-09-24T02:43:04+02:00",
  • "read": "2024-10-06T16:06:47+02:00",
  • "games": [
    ]
}

Games

Basic Collection operations when you only need to track games, without additional details.

Games in Collection

Get games in user's Collection

Authorizations:
oauthSecurity

Responses

Response samples

Content type
application/json

Successful response

[]

Add to Collection

Add games to user's Collection

Authorizations:
oauthSecurity
Request Body schema: application/json

List of Game IDs

Array (non-empty)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Delete from Collection

Delete games from user's Collection

Authorizations:
oauthSecurity
Request Body schema: application/json

List of Game IDs

Array (non-empty)
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "01849783-6a26-7147-ab32-71804ca47e8e",
  • "01849782-1017-7389-8de4-c97c587fd7e3"
]

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Copies

Operations on Collection copies. These allow more detailed tracking of owned games.

List Copies

Get all copies user has in their Collection. Copies are returned as a simple list.

It is not necessary to have copy for each game in Collection, so you should not rely on this endpoint if you need to know about all games in user's Collection.

Authorizations:
oauthSecurity

Responses

Response samples

Content type
application/json

Successful response

[
  • {
    },
  • {
    }
]

Add Copies

Add new copies. If the game is not already in a Collection, it will be added. Similarly, new tags will also be created.

Same copies may exist multiple times for a single game, ITAD does not check for duplicates.

This operation is atomic, either all copies are added or none.

Authorizations:
oauthSecurity
Request Body schema: application/json

Copies to add

Array
gameId
required
string <uuid>
redeemed
required
boolean
number or null
object or null
string or null
Array of strings or null

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{
  • "status_code": 400,
  • "reason_phrase": "Bad Request",
  • "details": [
    ]
}

Update Copies

Update one or more copies.

You can issue partial updates on copy, only properties that are included for a copy will be updated.

This operation is atomic, either all copies are updated or none.

Authorizations:
oauthSecurity
Request Body schema: application/json
Array
id
required
number
redeemed
boolean
number or null
object or null
string or null
Array of strings or null

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "status_code": 400,
  • "reason_phrase": "Bad Request",
  • "details": [
    ]
}

Delete Copies

Delete Collection copies.

Copies that do not exist or don't belong to user will be silently ignored.

Operation is atomic. Either all copies are deleted or none.

Authorizations:
oauthSecurity
Request Body schema: application/json

List of copy IDs

Array
integer

Responses

Request samples

Content type
application/json
[
  • 123,
  • 124,
  • 125
]

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Categories

Collection category endpoints. Category and group may be used interchangably. Default category has ID 0.

Get all Categories

Get all Collection categories, both the user created ones and default one. Default category has id 0 and will always be listed last. User set order of categories is respected in the response.

Authorizations:
oauthSecurity

Responses

Response samples

Content type
application/json

Successful response

[
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

Create new Category

Create Collection category. Categories with same name may exist.

Successful response will return the created category.

Authorizations:
oauthSecurity
Request Body schema: application/json

Category to create

title
required
string
public
required
boolean

Responses

Request samples

Content type
application/json
{
  • "title": "New Collection Category",
  • "public": true
}

Response samples

Content type
application/json
{
  • "id": 5669,
  • "title": "New Collection Category",
  • "public": true
}

Update Categories

Update one or more categories.

For each category that you are going to update, only id is required. Fields that you do not want to update may be set to null or omitted fully. Categories that do not exist or user does not own will be ignored.

Default category (id: 0) may have only public property updated. Other properties will be ignored.

This operation is atomic, either all categories update or none. Successful response is the full category list, including categories that were not updated.

Authorizations:
oauthSecurity
Request Body schema: application/json
Array
id
required
integer
string or null
boolean or null
integer or null

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json

Successful response

[
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

Delete Categories

Delete Collection categories.

Default category or categories that do not exist or user does not own will be silently ignored.

Authorizations:
oauthSecurity
Request Body schema: application/json

List of category IDs

Array
integer

Responses

Request samples

Content type
application/json
[
  • 123,
  • 124,
  • 125
]

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Stats

Most Collected

Get list of most Collected games

Authorizations:
keySecurity
query Parameters
offset
integer >= 0
Default: 0
limit
integer [ 1 .. 500 ]
Default: 20

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Stats

Waitlist Stats

Get Waitlist statistics for a game

Note: stats do not take into consideration users' regions. If they have set their price limit to be a historical low, stats will be computed for all users as if they were in the region you specify

Authorizations:
keySecurity
query Parameters
id
required
string <uuid>

Game ID

country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

bucket_price
integer >= 0
Default: 5

Price bucket size

bucket_cut
integer >= 0
Default: 5

Cut bucket size

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "price": {
    },
  • "cut": {
    }
}

Most Waitlisted

Get list of most Waitlisted games

Authorizations:
keySecurity
query Parameters
offset
integer >= 0
Default: 0
limit
integer [ 1 .. 500 ]
Default: 20

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Most Collected

Get list of most Collected games

Authorizations:
keySecurity
query Parameters
offset
integer >= 0
Default: 0
limit
integer [ 1 .. 500 ]
Default: 20

Responses

Response samples

Content type
application/json
[
  • {
    }
]

User

User Info

Get user info, currently just a username

Authorizations:
oauthSecurity

Responses

Response samples

Content type
application/json
{
  • "username": "string"
}

Notes

Endpoints for managing notes, that user can create for individual games.

Get notes

Get user's game notes

Authorizations:
oauthSecurity

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add or edit notes

Add or edit game notes. This operation is atomic and idempotent.

Authorizations:
oauthSecurity
Request Body schema: application/json
required

List of notes

Array
gid
required
string <uuid>

Game ID

note
required
string

Non-empty string

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Delete notes

Delete game notes. This operation is atomic.

Authorizations:
oauthSecurity
Request Body schema: application/json
required

List of game IDs

Array
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Profiles

You can create a link between your app's users' accounts and ITAD, and use that link to sync games into Waitlist and Collection in the similar fashion as natively supported profiles on IsThereAnyDeal.

Sync

Sync endpoints provide easier way to add or remove games from Waitlist and Collection.

Sync via API works in the same way as natively supported sync of remote profiles, but instead of ITAD pulling data, you will have to push data. Behavior of sync'd games is the same as for natively supported profiles.

It is useful when you can create a list of all games for user, and don't want to handle game identification, deduplication, additions and removals via regular API endpoints.

Sync Waitlist

Sync Waitlist with IsThereAnyDeal. User can set category for your profile and default notification rules in their settings, same as with natively supported profiles.

Authorizations:
oauthSecurity
header Parameters
ITAD-Profile
required
string

Profile token

Request Body schema: application/json
required

Games to sync with IsThereAnyDeal

Array
shop
required
number

Shop ID

id
required
string

ID can be any string that will identify the game. It should be stable and not change in the future.

ID can also used to identify the game, if you use same IDs that we use for tracking shops. If a game is not identified with shop and id, we will use title.

For Steam we use full ids, i.e. app/{id}, sub/{id} or bundle/{id}.

title
required
string

Title of the game.

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{
  • "total": 0,
  • "added": 0,
  • "removed": 0
}

Sync Collection

Sync Collection with IsThereAnyDeal. User can set category for your profile in their settings, same as with natively supported profiles.

Games are synced as redeemed copies. If there already is a redemeed copy with the same shop in user's Collection, new copy will not be added.

Authorizations:
oauthSecurity
header Parameters
ITAD-Profile
required
string

Profile token

Request Body schema: application/json
required

Games to sync with IsThereAnyDeal

Array
shop
required
number

Shop ID

id
required
string

ID can be any string that will identify the game. It should be stable and not change in the future.

ID can also used to identify the game, if you use same IDs that we use for tracking shops. If a game is not identified with shop and id, we will use title.

For Steam we use full ids, i.e. app/{id}, sub/{id} or bundle/{id}.

title
required
string

Title of the game.

number or null

Play time in minutes

string or null

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{
  • "total": 0,
  • "added": 0,
  • "removed": 0
}

Notifications

List notifications

Get user's notifications

Authorizations:
oauthSecurity

Responses

Response samples

Content type
application/json

Successful response

[
  • {
    },
  • {
    },
  • {
    }
]

Waitlist notification detail

Get details of Waitlist notification

Authorizations:
oauthSecurity
query Parameters
id
required
string <uuid>

Notification ID

Responses

Response samples

Content type
application/json

Successful response

{
  • "id": "01921bab-b582-73bc-8473-9f125837107b",
  • "timestamp": "2024-09-24T02:43:04+02:00",
  • "read": "2024-10-06T16:06:47+02:00",
  • "games": [
    ]
}

Mark notification read

Mark single notification as read

Authorizations:
oauthSecurity
query Parameters
id
required
string <uuid>

Notification ID

Responses

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Mark all notifications read

Mark all notifications as read

Authorizations:
oauthSecurity

Responses

Response samples

Content type
application/json
{
  • "status_code": 0,
  • "reason_phrase": "string"
}

Shops

Get Shops

Return information about shops

query Parameters
country
string = 2 characters
Default: "US"

Two letter country code (ISO 3166-1 alpha-2)

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Unstable

Endpoints that are not yet stable. They may be in development, experimental, or we are not sure about their current definition.

Internal

Endpoints available for our own services. They are documented here for the sake of completeness.

Early Access Games

Returns list of Steam appids, which are currently considered to be early in early access

Authorizations:
keySecurity

Responses

Response samples

Content type
application/json
[
  • 0
]

Number of Players Statistics

Authorizations:
keySecurity
query Parameters
appid
required
number

Responses

Response samples

Content type
application/json
{
  • "current": 0,
  • "day": 0,
  • "peak": 0
}

HowLongToBeat Overview

Authorizations:
keySecurity
query Parameters
appid
required
number

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "main": { },
  • "extra": { },
  • "complete": { }
}

Reviews Score

Returns Metacritic user reviews overview and OpenCritic overview for a given game

Authorizations:
keySecurity
query Parameters
appid
required
number

Responses

Response samples

Content type
application/json
{}

Conversion Rates

Authorizations:
keySecurity

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Excluded from Family Sharing

Authorizations:
keySecurity
Request Body schema: application/json
required

List of appids

Array
integer

Responses

Request samples

Content type
application/json
[
  • 0
]

Response samples

Content type
application/json
{
  • "appid1": true,
  • "appid2": true
}

Current stream of Twitch channel

Authorizations:
keySecurity
query Parameters
channel
required
string

Responses

Response samples

Content type
application/json
Example
{
  • "user_name": "string",
  • "title": "string",
  • "thumbnail_url": "string",
  • "viewer_count": 0,
  • "game": "string"
}