Epic Games Store search
Search or browse the Epic Games Store catalogue in a country with every store filter: keywords, category (games, editions, add-ons, demos, apps), genre and feature tags, on sale, free, price range and sort order. Each item has id, title, slug and link, type, description, seller, developer, publisher, release date, price, original price, discount, sale end date, tags, categories and images. Pass next_page back as page; null on the last page. Also filter by platform, upcoming releases (coming_soon) and release-date window.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
q | string | Search words. Optional: without them the catalogue is browsed with the filters. Example: witcher |
country | string | Two-letter country code for prices and availability. Default US. Example: US |
locale | string | Language of texts, e.g. en-US, de, fr, ja, pt-BR. Default en-US. Example: en-US |
category | games | editions | addons | demos | apps | all | games (base games, default), editions, addons, demos, apps or all. Example: games |
tags | string | Comma-separated tag ids (all must match): 1367 RPG, 1216 action, 1117 adventure, 1210 shooter, 1264 strategy, 1083 indie, 1203 multiplayer, 1370 single player. A game's tag_ids in /epic-games/v1/game lists more. |
on_sale | boolean | true for discounted items only. |
free | boolean | true for free items only. |
price_min | number | Minimum current price in the country's currency. |
price_max | number | Maximum current price in the country's currency. |
sort | relevance | release_date | price | title | newest | relevance (default with q), release_date (default without q), price, title or newest. Example: relevance |
order | asc | desc | asc or desc. Example: desc |
limit | integer | Items per page, 1-100. Default 40. Example: 40 |
page | integer | Page number, starting at 1. Example: 1 |
platform | windows | mac | windows or mac: only items on this platform. |
coming_soon | boolean | true for items not released yet. |
released_after | string | Only items released on or after this date (YYYY-MM-DD). |
released_before | string | Only items released on or before this date (YYYY-MM-DD). |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/epic-games/v1/search?q=witcher" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/epic-games/v1/search",
params={"q": "witcher"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/epic-games/v1/search");
url.searchParams.set("q", "witcher");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).