Metacritic best, new and upcoming lists
Metacritic's browse lists for games, movies and TV: list=best (ranked by Metascore or user score), new (newest releases) or upcoming (coming soon, soonest first). Filter by release year or range, game platform, genre, or movies in theaters. Each result has id, title, URL, release date, rating, Metascore with review count and sentiment, user score, genres, platforms, seasons, description and image. Pass next_page back as page; null on the last page.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
type | string | game, movie or tv (default game). Example: game |
list | string | best, new or upcoming (default best). Example: best |
sort | string | metascore, user_score or release_date (default metascore for best, release_date otherwise). Example: metascore |
order | string | desc or asc (default desc; asc for upcoming). Example: desc |
year | integer | Release year; or use year_from and year_to for a range. Example: 2023 |
platform | string | Games only: platform slug (pc, ps5, ps4, switch, switch2, xbox-series-x, xbox-one, ...) or platform id. Example: ps5 |
genre | string | Genre slug, e.g. action, horror, drama, comedy. |
in_theaters | integer | Set to 1 for movies currently in theaters. |
page | integer | Page, starting at 1. Example: 1 |
limit | integer | Results per page, 1-50 (default 24). Example: 24 |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/metacritic/v1/browse?type=game" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/metacritic/v1/browse",
params={"type": "game"},
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/metacritic/v1/browse");
url.searchParams.set("type", "game");
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).