Rotten Tomatoes Scraper - Movie & TV Ratings API
Pricing
from $4.45 / 1,000 titles
Rotten Tomatoes Scraper - Movie & TV Ratings API
Look up films and TV shows on Rotten Tomatoes by title or URL. Each row holds the Tomatometer and Popcornmeter with review counts and averages, the critics consensus, cast and crew, genres, runtime, release dates, US box office and poster. A single season works too. $4.60 per 1,000 titles.
Pricing
from $4.45 / 1,000 titles
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Type film and TV titles, or paste Rotten Tomatoes URLs, and get one row per title: the Tomatometer and the Popcornmeter with their review counts, average ratings and fresh-rotten splits, the critics consensus, genres, age rating, runtime, release dates, US box office, cast and crew, the poster and the site's own ids.
The critic review texts are not in there. You get the scores, the counts and the consensus, plus a link to the reviews pages if you want to read them yourself.
| Input | Film or TV titles, or Rotten Tomatoes URLs |
| Output | One row per title: both scores with counts and averages, consensus, genres, rating, runtime, dates, US box office, credits, poster, ids |
| Ceiling | 2,000 titles per run |
| Account needed | None, and no API key |
| Price | $4.60 per 1,000 titles, flat on every plan. The free plan's $5 a month covers about 1,000 |
🔍 What Rotten Tomatoes Scraper does
Give it titles and it searches the site the way its own search box does, then reads the page it lands on. Give it URLs and it reads exactly those. You can do both in one run, and a title that turns up in both is read once.
Titles are the safer input, not slugs. Rotten Tomatoes puts a year in the slug when something
has been remade, and not where you would guess. /m/cats is not the 2019 musical, which lives at
/m/cats_2019. /m/oppenheimer is not the Nolan film, which is /m/oppenheimer_2023. Casablanca
sits at /m/1003707-casablanca. Searching oppenheimer lands on the right one.
Search has the opposite trap. breaking bad on the default setting comes back as El Camino: A
Breaking Bad Movie, because the film outranks the series in the site's own relevance. Set
Movies, TV, or both to TV when you mean the show, or paste /tv/breaking_bad.
📋 What data you get from each Rotten Tomatoes title
| What you get | Field |
|---|---|
| Tomatometer, its sentiment and Certified Fresh flag | tomatometer, tomatometerSentiment, tomatometerCertifiedFresh |
| Critic average, review count and fresh-rotten split | criticsAverageRating, criticReviewCount, criticsFreshCount, criticsRottenCount |
| Top critics' score and count | topCriticsScore, topCriticsReviewCount |
| Popcornmeter, audience average, counts and liked split | audienceScore, audienceAverageRating, audienceReviewCount, audienceRatingCountText, audienceLikedCount, audienceNotLikedCount |
| The critics consensus and the synopsis | criticsConsensus, synopsis |
| Genres, age rating, language and runtime | genres, contentRating, originalLanguage, runtime, runtimeMinutes |
| Release, streaming and air dates, US box office | releaseDateTheaters, releaseDateStreaming, airDate, boxOfficeGrossUsa |
| Directors, writers, producers, creators, distributor, studios | directors, writers, producers, creators, distributor, productionCompanies |
| The top of the credits, with profile links | castAndCrew |
| TV only: network and seasons | network, numberOfSeasons, seasons |
| Poster, review page links and the site's ids | posterUrl, criticReviewsUrl, audienceReviewsUrl, emsId, rtId |
▶️ How to scrape Rotten Tomatoes
- Open Rotten Tomatoes Scraper and click Try for free.
- Put titles into Titles to look up, one per line, or paste links into Rotten Tomatoes URLs.
- Set Movies, TV, or both if a title is ambiguous.
- Set Maximum titles, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
Run it with no titles and no URLs and you get one labelled sample row, which is not charged.
💰 How much does it cost to scrape Rotten Tomatoes?
$4.60 per 1,000 titles. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 1,000 titles.
You pay per title row delivered. Diagnostic rows, a title the site has no match for, a page with no scores yet, a duplicate across your two input fields, and the sample row are not charged. Set a maximum cost on the run and it stops when it gets there.
📥 What you give it
{"searchQueries": ["dune part two", "anora", "severance"],"mediaType": "any","resultsPerQuery": 1,"maxItems": 50}
Or by URL:
{"startUrls": ["https://www.rottentomatoes.com/m/anora","https://www.rottentomatoes.com/tv/severance/s02"]}
| Field | Default | What it is |
|---|---|---|
searchQueries | none, the form starts with dune part two and severance | One title per line. Add the year when a title has been remade: "cats 2019" lands right, "cats" may not. |
startUrls | none | Film pages, TV series pages or a single season like /tv/severance/s02. A /reviews or /cast-and-crew link is trimmed back to the title page, and a bare /m/anora works. |
mediaType | any | any, movies or tv. It steers the search only. Pasted URLs are read as given. |
resultsPerQuery | 1 | Search matches to read per line, up to 20. Raise it when a term is genuinely ambiguous and you want the alternatives too. |
maxItems | 50 | Rows for the whole run, across every search term and URL, up to 2,000. |
proxyConfiguration | none | Optional, and not needed for a normal run. |
📤 What you get back
A real row from a run on 3 October 2026, with the synopsis, the producer list, the credits and the poster URL cut short:
{"url": "https://www.rottentomatoes.com/m/dune_part_two","slug": "dune_part_two","path": "/m/dune_part_two","mediaType": "Movie","isMovie": true,"title": "Dune: Part Two","seriesTitle": null,"year": 2024,"tomatometer": 92,"tomatometerSentiment": "POSITIVE","tomatometerCertifiedFresh": true,"criticsAverageRating": 8.4,"criticReviewCount": 466,"criticsFreshCount": 429,"criticsRottenCount": 37,"topCriticsScore": 87,"topCriticsReviewCount": 78,"audienceScore": 95,"audienceSentiment": "POSITIVE","audienceAverageRating": 4.7,"audienceReviewCount": 2244,"audienceRatingCountText": "5,000+ Verified Ratings","audienceLikedCount": 7468,"audienceNotLikedCount": 412,"criticsConsensus": "Visually thrilling and narratively epic, Dune: Part Two continues Denis Villeneuve's adaptation of the beloved sci-fi series in spectacular form.","synopsis": "\"Dune: Part Two\" will explore the mythic journey of Paul Atreides as he unites with Chani and the Fremen...","genres": ["Sci-Fi", "Adventure", "Action", "Fantasy", "Drama"],"contentRating": "PG-13","originalLanguage": "English","runtime": "2h 46m","runtimeMinutes": 166,"releaseDateTheaters": "Mar 1, 2024, Wide","rereleaseDateTheaters": null,"releaseDateStreaming": "Apr 16, 2024","airDate": null,"boxOfficeGrossUsa": "$282.0M","directors": ["Denis Villeneuve"],"creators": [],"writers": ["Denis Villeneuve", "Jon Spaihts"],"producers": ["Mary Parent", "Cale Boyter", "Denis Villeneuve", "..."],"distributor": "Warner Bros. Pictures","productionCompanies": ["Legendary Pictures"],"network": null,"soundMix": ["Dolby Atmos", "Dolby Digital"],"aspectRatio": null,"castAndCrew": [{ "name": "Denis Villeneuve", "role": "Director", "url": "https://www.rottentomatoes.com/celebrity/denis-villeneuve" },{ "name": "Timothée Chalamet", "role": "Paul Atreides", "url": "https://www.rottentomatoes.com/celebrity/timothee_chalamet" }],"numberOfSeasons": null,"seasons": [],"posterUrl": "https://resizing.flixster.com/Wk685cwvPp6E6fAnFc1noRRCtX0=/164x246/v2/...","criticReviewsUrl": "https://www.rottentomatoes.com/m/dune_part_two/reviews","audienceReviewsUrl": "https://www.rottentomatoes.com/m/dune_part_two/reviews/verified-audience","emsId": "cecd223d-a20d-3268-bbef-9a4c847c673d","rtId": "771566273","searchQuery": "dune part two","position": 1,"scrapedAt": "2026-10-03T00:00:35.192Z"}
| Field | How to read it |
|---|---|
tomatometer, audienceScore | The two percentages. criticsAverageRating is out of 10 and audienceAverageRating out of 5, which is how the site keeps them. |
castAndCrew | The half-dozen people the title page puts in its Cast & Crew strip, each with a profile link. Not the full ensemble. |
directors, writers, producers, creators, distributor, productionCompanies | Complete, because they come from the page's own credits table. |
releaseDateTheaters, boxOfficeGrossUsa | As the site writes them: "Mar 1, 2024, Wide", "$282.0M". Not ISO dates, and box office is US gross only. |
seasons, numberOfSeasons, network | TV rows. seasons is a list of links, and this does not follow them on its own. |
searchQuery, position | Which of your lines found this row and where it ranked, so you can join back to your list. |
TV series pages carry an averaged score and no consensus. That is how the site presents them.
Ask for one season, /tv/severance/s02, and you get a real Tomatometer, a real review count and that
season's consensus.
🧾 Reading the output
| Row | How to spot it | Billed |
|---|---|---|
| A title | _sample and _diagnostic both absent | yes |
| The sample row | _sample: true | no |
| A diagnostic | _diagnostic: true and an errorCode | no |
Every diagnostic row carries a hint alongside its code.
| Code | What it means |
|---|---|
NO_MATCH | The search found nothing for that term. Try the title as the site writes it, and add the year for a remake. |
NOT_FOUND | The URL is a 404. Usually the slug: a remade title carries its year. |
BAD_URL | Not a Rotten Tomatoes film or TV address. |
NOT_A_TITLE_PAGE | The link redirected to a list or a franchise hub rather than a title. |
NOT_SCORED_YET | The page exists but has no Tomatometer or Popcornmeter yet. Unreleased titles and stub pages look like this. |
SEARCH_FAILED | The site search was unreachable for that term. Re-running usually clears it. |
BLOCKED | The site would not serve that page this run. Re-running usually clears it. |
PARSE_FAILED | The page came back in a shape this could not read. Worth reporting. |
One bad title never stops the rest, and a diagnostic row never fails the run.
💡 What people use it for
- Running a watchlist weekly and diffing on
tomatometerandcriticReviewCountto watch a score settle after release. - Pulling scores for a catalogue of titles to sit beside your own data.
- Comparing the critic score against the audience score across a genre or a studio.
- Checking a season at a time on a returning series, rather than the averaged series score.
🚧 What it does not do
- No individual critic reviews. Scores, counts, the split and the consensus, yes. The quotes
from each named critic, no.
criticReviewsUrlandaudienceReviewsUrlpoint at those pages. castAndCrewis the top of the credits. A 60-name ensemble is not in there.- TV series pages have an averaged score and no consensus. Ask for a season instead.
- Some titles simply have no scores, and come back as an uncharged
NOT_SCORED_YETrow rather than a row full of nulls. - Dates and box office arrive as the site writes them, not as ISO dates or numbers. Box office is US gross, and missing on most TV and on anything without a wide US release.
- Search is a search, not an exact-match lookup. One line in, the best match out. Use the URL when you need a guarantee.
- No episodes, showtimes or streaming prices.
seasonsgives you links to go deeper, and nothing follows them for you. - It is not an official Rotten Tomatoes tool. Dami's Studio is independent and is not affiliated with or endorsed by Rotten Tomatoes, or by any other company named on this page.
🧭 Which film, TV, music or game scraper do you need?
| If you want | Use |
|---|---|
| IMDb IDs for films, shows and people | IMDb Search Scraper |
| Critic and audience scores for a film or show | This one |
| TV shows, full episode lists and main cast | TV Show Scraper |
| Artists, releases, recordings and labels, with their MBIDs | MusicBrainz Scraper |
| Steam games, store details and player reviews | Steam Scraper |
| Goodreads ratings and rating counts for books | Goodreads Books Scraper |
| Wikidata Q-ids and claims for the same people and works | Wikidata Scraper |
❓ Questions people ask
Is there a public Rotten Tomatoes API?
This reads the public site and needs nothing from you but the titles.
Do I need a login?
No. No account, no cookie, no key.
How do I look up one season rather than the whole show?
Paste the season link, like https://www.rottentomatoes.com/tv/the_last_of_us/s01. Searching the
show name gives you the series page and its averaged score.
What happens when a title does not exist?
You get an uncharged diagnostic row with NO_MATCH or NOT_FOUND and a hint about the usual cause.
The run still finishes.
Why does the score differ from the one on the site?
Scores and counts keep moving as reviews come in, most of all in the weeks after a release. A row is
a snapshot; scrapedAt says when it was taken.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made
code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/rotten-tomatoes-scraper. Either way
the run happens on your Apify account at the same price.
Is scraping Rotten Tomatoes legal?
These are public title pages. The site's terms govern what you may do with the content, so read them against your plan. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the run ID and the titles or URLs you used. The
errorCode on the diagnostic row usually names the problem on its own.