Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Rotten Tomatoes Scraper icon

Rotten Tomatoes Scraper

Scrape Rotten Tomatoes movie and TV data: Tomatometer, Popcornmeter, critics consensus, cast, genres, runtime, release dates. No API key needed.

49 runs on Apify $0.0046 per title ($4.6 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchQueries, startUrls, mediaType (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0046 per title = $4.6 per 1,000

You are charged forWhenPrice
Title returnedOne movie or TV title returned in the dataset, with its scores and metadata. Titles that could not be resolved are not charged.$0.0046

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchQueriesOne movie or TV title per line. The actor searches Rotten Tomatoes the way its own search box does and reads the best match. When a title has been remade, add the year: "cats 2019" lands on the right page, "cats" may not.array
startUrlsOptional. Paste movie pages (https://www.rottentomatoes.com/m/anora), TV series pages (/tv/severance) or a single season (/tv/severance/s02). A /reviews or /cast-and-crew link is fine too, it is trimmed back to the title. Works alongside the field above.array
mediaTypeApplies to the title search only. Pasted URLs are read as given.string
resultsPerQueryHow many search matches to read for each line above. Leave at 1 for a straight lookup. Raise it when a term is genuinely ambiguous and you want the alternatives too. You are charged per title returned.integer
maxItemsHard cap on rows for the whole run, across every search term and URL. You are charged per title returned.integer

What you get

A structured dataset — each result includes fields like:

titleyearmediaTypetomatometeraudienceScorecriticsConsensusgenresruntimereleaseDateTheatersurl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Rotten Tomatoes Scraper: Tomatometer, Popcornmeter and credits for any title

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 paragraph, 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
Ceiling2,000 titles per run
Account neededNone, and no API key
Price$4.60 per 1,000 titles, flat on every plan

🍅 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 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, box starts at 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. Leave it alone unless you need the run to exit from a specific network of your own.

📤 What you get back

A real row from a recent run, with the synopsis, the cast list 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-09-20T02:35:10.721Z"
}
FieldWhat it is
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 itCharged
A title_sample and _diagnostic both absentyes
The sample row_sample: trueno
A diagnostic_diagnostic: true and an errorCodeno

Run it with no titles and no URLs and you get the one sample row. 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 address 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.

▶️ How to run it

1. Open Rotten Tomatoes Scraper and click Try for free. 2. Put titles into Titles to look up, one per line, or paste addresses 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.

💰 How much does it cost?

$4.60 per 1,000 titles. Flat on every Apify plan, no volume tiers.

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 all free.

💡 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.
  • Grabbing consensus paragraphs and posters to build a listing page.

🚧 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.

🧭 Which ratings scraper do you need?

If you wantUse
Critic and audience scores for film and TVThis one
IMDb ratings, credits and title dataIMDb Scraper
Book ratings and reviewsGoodreads Books Scraper
Game listings, prices and reviewsSteam Scraper

❓ Questions people ask

Is there a public Rotten Tomatoes API? Not a self-serve one. 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 address, 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.

Can I run it on a schedule? Yes. Scores and review counts move, so a weekly pass over a watchlist is the common use. scrapedAt is on every row for diffing.

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 scraping and the law is a 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.