IsThereAnyDeal API¶
The API documentation is at https://docs.isthereanydeal.com/.
EnduraBot uses the following IsThereAnyDeal endpoints:
/games/search/v1(ItadGameSearchHandler)/games/info/v2(ItadGameSearchHandler)/games/prices/v3(ItadGameDealsHandler)
The base URL for API calls to ITAD is https://api.isthereanydeal.com
/games/search/v1¶
This endpoint requires the following URL query parameters be sent via an HTTP GET header:
{"key": key, "title": title}
Where key is the ITAD API key and title is a string for a game to search for.
This endpoint returns the following for each search result found.
{
"id": "018d937f-0481-72c2-9f37-97120a68525b",
"slug": "the-elder-scrolls-v-skyrim-special-edition",
"title": "The Elder Scrolls V: Skyrim Special Edition",
"type": "game",
"mature": false,
"assets": {
"banner145": "https://assets.isthereanydeal.com/018d937f-0481-72c2-9f37-97120a68525b/banner145.jpg?t=1761598890",
"banner300": "https://assets.isthereanydeal.com/018d937f-0481-72c2-9f37-97120a68525b/banner300.jpg?t=1761598890",
"banner400": "https://assets.isthereanydeal.com/018d937f-0481-72c2-9f37-97120a68525b/banner400.jpg?t=1761598890",
"banner600": "https://assets.isthereanydeal.com/018d937f-0481-72c2-9f37-97120a68525b/banner600.jpg?t=1761598890",
"boxart": "https://assets.isthereanydeal.com/018d937f-0481-72c2-9f37-97120a68525b/boxart.jpg?t=1761598890"
}
}
The following is returned if the API key is determined to not exist or be invalid:
{
"status_code": 403,
"reason_phrase": "Invalid or expired api key"
}
The following is returned if the API cannot find a game by the title given:
[]
/games/info/v2¶
This endpoint requires the following URL query parameters be sent via an HTTP GET header:
{"key": key, "id": id}
key is the ITAD API key and id is the UUID for an ITAD game.
This endpoint returns the following:
{
"id": "018d937f-3062-71ad-8549-0a24362a14ec",
"slug": "human-fall-flat",
"title": "Human: Fall Flat",
"type": "game",
"mature": false,
"assets": {
"boxart": "https://assets.isthereanydeal.com/018d937f-3062-71ad-8549-0a24362a14ec/boxart.jpg?t=1761756326",
"banner145": "https://assets.isthereanydeal.com/018d937f-3062-71ad-8549-0a24362a14ec/banner145.jpg?t=1761756326",
"banner300": "https://assets.isthereanydeal.com/018d937f-3062-71ad-8549-0a24362a14ec/banner300.jpg?t=1761756326",
"banner400": "https://assets.isthereanydeal.com/018d937f-3062-71ad-8549-0a24362a14ec/banner400.jpg?t=1761756326",
"banner600": "https://assets.isthereanydeal.com/018d937f-3062-71ad-8549-0a24362a14ec/banner600.jpg?t=1761756327"
},
"earlyAccess": false,
"achievements": true,
"tradingCards": true,
"appid": 477160,
"tags": [
"Co-op",
"Funny",
"Puzzle",
"Adventure",
"Physics"
],
"releaseDate": "2016-07-21",
"developers": [
{
"id": 1115,
"name": "No Brakes Games"
}
],
"publishers": [
{
"id": 77,
"name": "Curve Games"
},
{
"id": 701,
"name": "Curve Digital"
}
],
"reviews": [
{
"score": 94,
"source": "Steam",
"count": 167213,
"url": "https://store.steampowered.com/app/477160/"
},
{
"score": 70,
"source": "Metascore",
"count": 21,
"url": "https://metacritic.com/game/human-fall-flat/critic-reviews/?platform=pc"
},
{
"score": 72,
"source": "Metacritic User Score",
"count": 310,
"url": "https://metacritic.com/game/human-fall-flat/user-reviews/?platform=pc"
},
{
"score": 68,
"source": "OpenCritic",
"count": 61,
"url": "https://opencritic.com/game/2906/human-fall-flat"
}
],
"stats": {
"rank": 316,
"waitlisted": 5143,
"collected": 28328
},
"players": {
"recent": 479,
"day": 1944,
"week": 3126,
"peak": 113147
},
"urls": {
"game": "https://isthereanydeal.com/game/human-fall-flat/"
}
}
The following is returned if the UUID cannot be found or is not valid:
{
"status_code": 500,
"reason_phrase": "Internal Server Error"
}
The following is returned if the API key is determined to not exist or be invalid:
{
"status_code": 403,
"reason_phrase": "Invalid or expired api key"
}
/games/prices/v3¶
This endpoint requires the following URL query parameters be sent via an HTTP POST header:
{"key": key}
key is the ITAD API key. There are also 2 relevant and optional parameters that can be added to this header:
capacity: An integer representing the number of shops1 that ITAD should provide for each game.deals: A boolean.Falsewill return data for every game in the list regardless of if a deal for the game exists.Truewill only return data for games with deals.
This endpoint also requires that the request body be given a list of ITAD game UUIDs. This is done by passing them into the json= parameter of requests.post().
The endpoint returns JSON structured like the example below for each game. capacity was set to 1 in the example for brevity.
[
{
"id": "018d937f-3062-71ad-8549-0a24362a14ec",
"historyLow": {
"all": {
"amount": 1.99,
"amountInt": 199,
"currency": "USD"
},
"y1": {
"amount": 2.1,
"amountInt": 210,
"currency": "USD"
},
"m3": {
"amount": 2.1,
"amountInt": 210,
"currency": "USD"
}
},
"deals": [
{
"shop": {
"id": 2,
"name": "AllYouPlay"
},
"price": {
"amount": 2.1,
"amountInt": 210,
"currency": "USD"
},
"regular": {
"amount": 19.99,
"amountInt": 1999,
"currency": "USD"
},
"cut": 89,
"voucher": null,
"storeLow": {
"amount": 2.07,
"amountInt": 207,
"currency": "USD"
},
"flag": "S",
"drm": [
{
"id": 61,
"name": "Steam"
}
],
"platforms": [
{
"id": 1,
"name": "Windows"
},
{
"id": 2,
"name": "Mac"
}
],
"timestamp": "2025-10-27T14:41:35+01:00",
"expiry": null,
"url": "https://itad.link/0190025c-aac3-7229-b8cd-6537cc082ca3/"
}
]
}
]
The following is returned if the API key is determined to not exist or be invalid:
{
"status_code": 403,
"reason_phrase": "Invalid or expired api key"
}
The following is returned if deals is set to True and no game UUIDs have deals:
[]
The following is returned if none of the submitted UUIDs are valid:
[]
If any UUID is valid all invalid UUIDs are ignored and valid UUIDs are returned as normal.
-
The IsThereAnyDeal API calls a
shopa provider of the game. Ergo, one shop might beSteam, anotherGOG, and so on. ↩