Metacritic API: List best-reviewed titles
Lists the highest-Metascore games, movies or TV shows on Metacritic for a release year or all time. You can filter by genre, and by platform for games.
Unofficial. Not affiliated with or endorsed by Metacritic.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Type optional
type What kind of title to list, for example game.
movie
One of
game,movie,tv. Defaultgame.- Year optional
year Release year, all_time, or current_year; for example 2025.
2025
Default
current_year.- Genre optional
genre Genre, for example Action RPG; use all for every genre.
Drama
Default
all.- Platform optional
platform Game platform, for example Nintendo Switch; use all for every platform.
all (default)
- Max Results optional
max_results Maximum number of titles to return, for example 25 (up to 100).
55
Whole number from 1 to 100. Default
25.
Input as JSON
{ "type": "movie", "year": "2025", "genre": "Drama", "max_results": 55}Output
{ "titles": [ { "link": "https://www.metacritic.com/movie/the-secret-agent-2025/" , "rank": 1, "title": "The Secret Agent", "platform": null, "metascore": 91, "user_score": 7.4, "release_date": "2025-11-26" }, { "link": "https://www.metacritic.com/movie/it-was-just-an-accident/" , "rank": 2, "title": "It Was Just an Accident", "platform": null, "metascore": 91, "user_score": 7.4, "release_date": "2025-10-15" }, { "link": "https://www.metacritic.com/movie/sorry-baby/" , "rank": 3, "title": "Sorry, Baby", "platform": null, "metascore": 90, "user_score": 7.3, "release_date": "2025-06-27" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"metacritic.com/list_best_reviewed","input":{"type":"movie","year":"2025","genre":"Drama","max_results":55}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "metacritic.com/list_best_reviewed" , "input": { "type": "movie", "year": "2025", "genre": "Drama", "max_results": 55 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "metacritic.com/list_best_reviewed" , "input": { "type": "movie", "year": "2025", "genre": "Drama", "max_results": 55 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run metacritic.com/list_best_reviewed# with {"type":"movie","year":"2025","genre":"Drama","max_results":55}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "type": { "enum": [ "game", "movie", "tv" ], "type": "string", "default": "game", "description": "What kind of title to list, for example game." }, "year": { "type": "string", "default": "current_year", "description": "Release year, all_time, or current_year; for example 2025." }, "genre": { "type": "string", "default": "all", "description": "Genre, for example Action RPG; use all for every genre." }, "platform": { "type": "string", "default": "all", "description": "Game platform, for example Nintendo Switch; use all for every platform." }, "max_results": { "type": "integer", "default": 25, "maximum": 100, "minimum": 1, "description": "Maximum number of titles to return, for example 25 (up to 100)." } }}Output schema
{ "type": "object", "required": [ "titles" ], "properties": { "titles": { "type": "array", "items": { "type": "object", "required": [ "rank", "title", "link" ], "properties": { "link": { "type": "string" }, "rank": { "type": "integer" }, "title": { "type": "string" }, "platform": { "type": [ "string", "null" ] }, "metascore": { "type": [ "integer", "null" ] }, "user_score": { "type": [ "number", "null" ] }, "release_date": { "type": [ "string", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
metacritic.com/list_best_reviewed- Returns
- rank, title, metascore, user score, release date, platform, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method metacritic.com/list_best_reviewed with the inputs above.
Ask your agent
- Show me the highest-rated games of 2025 on Metacritic
- What are the best-reviewed movies of all time?
- List the top Action RPG games on PlayStation 5 by critic score
- Top 10 best-reviewed TV shows from 2023
- Which Nintendo Switch games have the highest Metascore this year? Show 15 results
See more
All Metacritic methodsFinds a game, movie or TV show on Metacritic by name and returns critic and user scores with title details.
metacritic.com/get_scoresReads the newest critic or audience reviews for a Rotten Tomatoes movie or TV show. For a whole TV show it combines reviews from its seasons.
rottentomatoes.com/get_reviewsFinds the Common Sense Media review of a movie, TV show, game, book, app or podcast by title (optionally type and year) and returns its age rating, star rating, verdict and parents' guide.
commonsensemedia.org/get_age_ratingGets Rotten Tomatoes critic and audience scores and title details for a movie or TV show, optionally for one TV season. Audience rating counts may be unavailable for series.
rottentomatoes.com/get_scoresLists Steam's top-selling, discounted, or new and trending games in store order, with prices for a chosen country, review summaries and release dates.
store.steampowered.com/list_top_sellersLists MyAnimeList's top anime in rank order for a selected ranking (all, airing, upcoming, TV, movies or most popular), with English title, score, type, episodes, airing dates and members.
myanimelist.net/list_top_animeLists titles in an IMDb movie or TV chart (Top 250 movies, Top 250 TV shows, most popular movies or TV shows) with ratings, votes, runtime, age rating and weekly rank movement for popularity charts. Popular charts contain up to 100 titles.
imdb.com/list_top_chartsLists Rotten Tomatoes movies in theaters, coming soon, or at home, by genre and site sort order, with scores, release dates, age ratings, posters and links.
rottentomatoes.com/list_movies