OrbTop

Rotten Tomatoes Tomatometer & Popcornmeter Score Scraper

AIDEVELOPER TOOLS

Rotten Tomatoes Tomatometer & Popcornmeter Score Scraper

Scrape Tomatometer and Popcornmeter scores, critics consensus, genres, release dates, runtime, directors, cast, and streaming availability for movies and TV series from Rotten Tomatoes.

What It Does

The scraper discovers titles via the RT sitemap (tens of thousands of movies and TV series) by default and extracts structured score data from each detail page. For targeted runs, either pass startUrls to skip the sitemap for a single run, or set discovery: "urls" with a urls list to run in a dedicated direct-URL discovery mode (ported from the decommissioned rotten-tomatoes-scraper).

Data comes from three embedded JSON blobs per page — the media scorecard, the JSON-LD schema block, and the where-to-watch affiliate list — so it's stable and doesn't depend on CSS selectors that change with redesigns.

Output

Each record contains:

Field Type Description
title string Movie or TV series title
media_type string movie or tv
rt_url string Canonical RT detail page URL
tomatometer_score integer Critics score (0–100), or null if unscored
tomatometer_state string certified-fresh, fresh, or rotten
critics_review_count integer Number of critics reviews counted
audience_score integer Audience (Popcornmeter) score (0–100)
audience_rating_count integer Number of audience ratings counted
critics_consensus string RT critics consensus text
mpaa_rating string MPAA/content rating (e.g. PG-13, TV-MA)
genres array Genre list from structured data
release_date_theaters string Theatrical release date
release_date_streaming string Streaming release date
runtime_minutes integer Runtime in minutes
directors array Director name(s)
streaming_providers array Current streaming platforms
cast array Top-billed cast member name(s), from JSON-LD
synopsis string Movie or show synopsis/description, from JSON-LD

Input

maxItems (integer, required) — Maximum records to return. Set to 10–100 for test runs, leave higher for bulk pulls.

mediaType (string, optional) — Filter by movie, tv, or leave empty to scrape both. Only applies to sitemap-driven discovery; ignored when startUrls or discovery: "urls" are used.

startUrls (array, optional) — List of specific RT movie or TV detail page URLs. When provided, the scraper hits those pages directly and skips sitemap discovery entirely. Useful for monitoring a watchlist or validating specific titles.

discovery (string, optional) — sitemap (default): discover titles via the RT sitemap, unchanged behavior. urls: scrape only the explicit title URLs given in the urls field, no sitemap discovery. Ported from the decommissioned rotten-tomatoes-scraper.

urls (array, optional) — Explicit RT movie or TV detail URLs to scrape when discovery is "urls". Ignored in sitemap mode.

{
  "maxItems": 100,
  "mediaType": "movie",
  "startUrls": []
}

For targeted runs (legacy startUrls bypass):

{
  "maxItems": 5,
  "startUrls": [
    { "url": "https://www.rottentomatoes.com/m/dune_part_two" },
    { "url": "https://www.rottentomatoes.com/tv/the_boys_2019" }
  ]
}

For the dedicated direct-URL discovery mode:

{
  "maxItems": 5,
  "discovery": "urls",
  "urls": [
    "https://www.rottentomatoes.com/m/oppenheimer_2023",
    "https://www.rottentomatoes.com/tv/breaking_bad"
  ]
}

Discovery Strategy

Full-catalog runs use RT's public sitemap index at /sitemaps/sitemap.xml, which links to dedicated sitemap files for movies (movie_N.xml) and TV series (tv-series_N.xml). The scraper filters to canonical title pages only — season pages, episode pages, and photo galleries are skipped.

discovery: "urls" bypasses the sitemap entirely and scrapes only the URLs given in urls, detecting movie vs tv from the URL path (/m/ vs /tv/) the same way the legacy startUrls bypass does.

RT detail pages serve structured data via embedded <script> blocks, so no JavaScript rendering is required. The actor runs as a lightweight HTML crawler.

Notes

  • Scores update as new reviews come in — results reflect whatever RT shows at scrape time.
  • Titles with no reviews yet return null for tomatometer_score and audience_score.
  • The tomatometer_state field follows RT's own certification logic: certified-fresh requires a minimum review count plus a score above the threshold; otherwise it's fresh or rotten based on the score.
  • streaming_providers lists the platforms RT shows in the "Where to Watch" module. This is affiliate data and may not reflect every available platform.
  • cast and synopsis come from the same JSON-LD block as genres/directors/mpaa_rating and are populated in both sitemap and urls discovery modes.