Rotten Tomatoes API: Get reviews
Reads 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.
Unofficial. Not affiliated with or endorsed by Rotten Tomatoes.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Year optional
year Release year to distinguish titles. Example: 2023
Not set
Whole number.
- Title, required
title Movie or TV show title, or its Rotten Tomatoes link. Example: Oppenheimer
https://www.rottentomatoes.com/m/oppenheimer_2023
- Season optional
season TV season number; leave blank for the whole show. Example: 1
Not set
Whole number 1 or more.
- Max Results optional
max_results Most reviews to return, up to 100. Example: 20
60
Whole number from 1 to 100. Default
20.- Review Type optional
review_type Which reviews to read. Example: critics
critics
One of
critics,audience. Defaultcritics.- Top Critics Only optional
top_critics_only Show only top critics when reading critic reviews. Example: false
true
True or false. Default
false.
Input as JSON
{ "title": "https://www.rottentomatoes.com/m/oppenheimer_2023" , "max_results": 60, "review_type": "critics", "top_critics_only": true}Output
{ "link": "https://www.rottentomatoes.com/m/oppenheimer_2023" , "title": "Oppenheimer", "reviews": []}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"rottentomatoes.com/get_reviews","input":{"title":"https://www.rottentomatoes.com/m/oppenheimer_2023","max_results":60,"review_type":"critics","top_critics_only":true}}' # 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": "rottentomatoes.com/get_reviews" , "input": { "title": "https://www.rottentomatoes.com/m/oppenheimer_2023" , "max_results": 60, "review_type": "critics", "top_critics_only": True }})# 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": "rottentomatoes.com/get_reviews" , "input": { "title": "https://www.rottentomatoes.com/m/oppenheimer_2023" , "max_results": 60, "review_type": "critics", "top_critics_only": true } }), 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 rottentomatoes.com/get_reviews# with {"title":"https://www.rottentomatoes.com/m/oppenheimer_2023","max_results":60,"review_type":"critics","top_critics_only":true}"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", "required": [ "title" ], "properties": { "year": { "type": "integer", "description": "Release year to distinguish titles. Example: 2023" }, "title": { "type": "string", "description": "Movie or TV show title, or its Rotten Tomatoes link. Example: Oppenheimer" }, "season": { "type": "integer", "minimum": 1, "description": "TV season number; leave blank for the whole show. Example: 1" }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Most reviews to return, up to 100. Example: 20" }, "review_type": { "enum": [ "critics", "audience" ], "type": "string", "default": "critics", "description": "Which reviews to read. Example: critics" }, "top_critics_only": { "type": "boolean", "default": false, "description": "Show only top critics when reading critic reviews. Example: false" } }}Output schema
{ "type": "object", "required": [ "title", "link", "reviews" ], "properties": { "link": { "type": "string" }, "title": { "type": "string" }, "reviews": { "type": "array", "items": { "type": "object", "properties": { "link": { "type": "string" }, "verdict": { "type": [ "string", "null" ] }, "publication": { "type": [ "string", "null" ] }, "review_date": { "type": [ "string", "null" ] }, "review_text": { "type": "string" }, "reviewer_name": { "type": [ "string", "null" ] }, "star_rating_out_of_5": { "type": [ "number", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
rottentomatoes.com/get_reviews- Returns
- title, link, reviews (reviewer, publication, verdict, stars, text, date, 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 rottentomatoes.com/get_reviews with the inputs above.
Ask your agent
- Show me the latest critic reviews for the 2023 movie Oppenheimer, 10 of them please
- What are audience reviews saying about season 2 of The Bear?
- Get the newest top critic reviews for Dune from 2021, max 15
- I want to read recent audience reviews of the 1999 film The Matrix on rottentomatoes.com
- Pull season 1 critic reviews for the TV show Severance, limited to 25 results
See more
All Rotten Tomatoes methodsGets 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 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_moviesLists 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.
metacritic.com/list_best_reviewedFinds a game, movie or TV show on Metacritic by name and returns critic and user scores with title details.
metacritic.com/get_scoresGets a podcast's country-specific rating total and average, plus up to 500 listener reviews sorted by newest or most helpful.
podcasts.apple.com/get_podcast_reviewsGets a movie or TV show's IMDb details from its name, IMDb title link or title ID; a year picks between titles with the same name. Unavailable details are null.
imdb.com/get_movie_or_showFinds a movie on TMDB by exact title (optionally its release year) or by TMDB movie link, and returns its details, cast, crew, trailers, and the release date, age rating and streaming services for a chosen country.
themoviedb.org/get_movieLists the newest Pitchfork album reviews. You can filter them by genre or limit them to Best New Music.
pitchfork.com/list_latest_reviews