POST /api/isthereanydeal/games/history
Price: 20 credits
Get the full price history of an IsThereAnyDeal game (by slug, internal id, or URL): a time-ordered log of every store price change, the stores selling it now and the stores that ever listed it, per-store and aggregate price time-series (best price, regular-price band, max discount, running historical low), and sale analytics (how often, how deep and how long the game goes on sale, and the seasonal likelihood of a discount).
Get the price history of a game on IsThereAnyDeal. Identify the game by slug, internal game id (UUID), or URL; set country and currency for the regional series. Returns max_price and history_low, a log of price changes (each with id, shop, date in unix seconds, next_change_at and previous_change_at linking to the neighbouring change in the same store, price, price_old, cut, flag N/H/S, currency, previous_price, previous_price_old and previous_cut), the stores currently selling the game (current_shops) and every store that ever listed it (history_shops), price time-series (best_price_series, regular_price_high_series, regular_price_low_series, max_cut_series, history_low_series, and per-store shop_series — each a list of points with time in unix seconds and value), and sale analytics (sale_buckets by discount range with sale_count and duration stats, and sale_probability of a discount by day of year).
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)game string required — IsThereAnyDeal game as a store slug, internal game id (UUID), or game URL (examples: "the-alters", "018d937f-6136-71e4-a7d4-088a32c7d518"; minLength: 1)country string — Store region, drives which shops and prices apply (default: "US"; one of: "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AR", "AT", "AU", "AW", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BM", "BN", "BO", "BR", "BS", "BT", "BW", "BY", "BZ", "CA", "CD", "CG", "CH", "CI", "CL", "CM", "CN", "CO", "CR", "CV", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "ER", "ES", "ET", "FI", "FJ", "FR", "GA", "GB", "GD", "GE", "GH", "GM", "GN", "GR", "GT", "GW", "GY", "HK", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IN", "IQ", "IS", "IT", "JM", "JO", "JP", "KE", "KG", "KH", "KM", "KN", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MG", "MK", "ML", "MM", "MN", "MO", "MR", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NE", "NG", "NI", "NL", "NO", "NP", "NZ", "OM", "PA", "PE", "PG", "PH", "PK", "PL", "PT", "PY", "QA", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SI", "SK", "SL", "SN", "SR", "ST", "SV", "SZ", "TC", "TD", "TG", "TH", "TJ", "TL", "TM", "TN", "TO", "TR", "TT", "TW", "TZ", "UA", "UG", "US", "UY", "UZ", "VC", "VE", "VN", "VU", "WS", "YE", "ZA", "ZM", "ZW")currency string — Currency for prices (default: "USD"; one of: "AED", "ARS", "AUD", "BGN", "BRL", "CAD", "CHF", "CLP", "CNY", "COP", "CRC", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "KWD", "KZT", "MXN", "MYR", "NOK", "NZD", "PEN", "PHP", "PLN", "QAR", "RON", "RUB", "SAR", "SEK", "SGD", "THB", "TRY", "TWD", "UAH", "USD", "UYU", "VND", "ZAR")@type string (default: "ItadPriceHistory")max_price number nullablehistory_low number nullablelog array (default: [])@type string (default: "ItadPriceChange")id string nullableshop string nullableshop_id integer nullabledate integer nullablenext_change_at integer nullableprevious_change_at integer nullableprice number nullableprice_old number nullablecut integer nullableflag string nullablecurrency string nullableprevious_price number nullableprevious_price_old number nullableprevious_cut integer nullablecurrent_shops array (default: [])@type string (default: "ItadShopRef")shop string nullableshop_id integer requiredhistory_shops array (default: [])@type string (default: "ItadShopRef")shop string nullableshop_id integer requiredbest_price_series array (default: [])@type string (default: "ItadHistoryPoint")time integer requiredvalue number nullableregular_price_high_series array (default: [])@type string (default: "ItadHistoryPoint")time integer requiredvalue number nullableregular_price_low_series array (default: [])@type string (default: "ItadHistoryPoint")time integer requiredvalue number nullablemax_cut_series array (default: [])@type string (default: "ItadHistoryPoint")time integer requiredvalue number nullablehistory_low_series array (default: [])@type string (default: "ItadHistoryPoint")time integer requiredvalue number nullableshop_series array (default: [])@type string (default: "ItadShopPriceSeries")shop string nullableshop_id integer requiredpoints array (default: [])@type string (default: "ItadHistoryPoint")time integer requiredvalue number nullablesale_buckets array (default: [])@type string (default: "ItadSaleBucket")cut_range string requiredsale_count integer nullablemedian_duration_days number nullablemin_duration_days number nullablemax_duration_days number nullablesale_probability array (default: [])@type string (default: "ItadSaleProbability")cut_threshold integer requireddays array (default: [])@type string (default: "ItadSaleDayPoint")day string requiredvalue integer nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Game not found or has no price history Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.