Rotten Tomatoes Scraper - Movie & TV Ratings API avatar

Rotten Tomatoes Scraper - Movie & TV Ratings API

Pricing

from $4.45 / 1,000 titles

Go to Apify Store
Rotten Tomatoes Scraper - Movie & TV Ratings API

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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.

InputFilm or TV titles, or Rotten Tomatoes URLs
OutputOne row per title: both scores with counts and averages, consensus, genres, rating, runtime, dates, US box office, credits, poster, ids
Ceiling2,000 titles per run
Account neededNone, 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 getField
Tomatometer, its sentiment and Certified Fresh flagtomatometer, tomatometerSentiment, tomatometerCertifiedFresh
Critic average, review count and fresh-rotten splitcriticsAverageRating, criticReviewCount, criticsFreshCount, criticsRottenCount
Top critics' score and counttopCriticsScore, topCriticsReviewCount
Popcornmeter, audience average, counts and liked splitaudienceScore, audienceAverageRating, audienceReviewCount, audienceRatingCountText, audienceLikedCount, audienceNotLikedCount
The critics consensus and the synopsiscriticsConsensus, synopsis
Genres, age rating, language and runtimegenres, contentRating, originalLanguage, runtime, runtimeMinutes
Release, streaming and air dates, US box officereleaseDateTheaters, releaseDateStreaming, airDate, boxOfficeGrossUsa
Directors, writers, producers, creators, distributor, studiosdirectors, writers, producers, creators, distributor, productionCompanies
The top of the credits, with profile linkscastAndCrew
TV only: network and seasonsnetwork, numberOfSeasons, seasons
Poster, review page links and the site's idsposterUrl, criticReviewsUrl, audienceReviewsUrl, emsId, rtId

▶️ How to scrape Rotten Tomatoes

  1. Open Rotten Tomatoes Scraper and click Try for free.
  2. Put titles into Titles to look up, one per line, or paste links into Rotten Tomatoes URLs.
  3. Set Movies, TV, or both if a title is ambiguous.
  4. Set Maximum titles, then click Start.
  5. 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"
]
}
FieldDefaultWhat it is
searchQueriesnone, the form starts with dune part two and severanceOne title per line. Add the year when a title has been remade: "cats 2019" lands right, "cats" may not.
startUrlsnoneFilm 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.
mediaTypeanyany, movies or tv. It steers the search only. Pasted URLs are read as given.
resultsPerQuery1Search matches to read per line, up to 20. Raise it when a term is genuinely ambiguous and you want the alternatives too.
maxItems50Rows for the whole run, across every search term and URL, up to 2,000.
proxyConfigurationnoneOptional, 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"
}
FieldHow to read it
tomatometer, audienceScoreThe two percentages. criticsAverageRating is out of 10 and audienceAverageRating out of 5, which is how the site keeps them.
castAndCrewThe 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, productionCompaniesComplete, because they come from the page's own credits table.
releaseDateTheaters, boxOfficeGrossUsaAs the site writes them: "Mar 1, 2024, Wide", "$282.0M". Not ISO dates, and box office is US gross only.
seasons, numberOfSeasons, networkTV rows. seasons is a list of links, and this does not follow them on its own.
searchQuery, positionWhich 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

RowHow to spot itBilled
A title_sample and _diagnostic both absentyes
The sample row_sample: trueno
A diagnostic_diagnostic: true and an errorCodeno

Every diagnostic row carries a hint alongside its code.

CodeWhat it means
NO_MATCHThe search found nothing for that term. Try the title as the site writes it, and add the year for a remake.
NOT_FOUNDThe URL is a 404. Usually the slug: a remade title carries its year.
BAD_URLNot a Rotten Tomatoes film or TV address.
NOT_A_TITLE_PAGEThe link redirected to a list or a franchise hub rather than a title.
NOT_SCORED_YETThe page exists but has no Tomatometer or Popcornmeter yet. Unreleased titles and stub pages look like this.
SEARCH_FAILEDThe site search was unreachable for that term. Re-running usually clears it.
BLOCKEDThe site would not serve that page this run. Re-running usually clears it.
PARSE_FAILEDThe 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 tomatometer and criticReviewCount to 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. criticReviewsUrl and audienceReviewsUrl point at those pages.
  • castAndCrew is 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_YET row 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. seasons gives 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 wantUse
IMDb IDs for films, shows and peopleIMDb Search Scraper
Critic and audience scores for a film or showThis one
TV shows, full episode lists and main castTV Show Scraper
Artists, releases, recordings and labels, with their MBIDsMusicBrainz Scraper
Steam games, store details and player reviewsSteam Scraper
Goodreads ratings and rating counts for booksGoodreads Books Scraper
Wikidata Q-ids and claims for the same people and worksWikidata 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.

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.