Rotten Tomatoes Tomatometer & Popcornmeter Score Scraper
Pricing
Pay per event
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 from Rotten Tomatoes. Discover titles via the RT sitemap (default) or explicit title URLs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
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
nullfortomatometer_scoreandaudience_score. - The
tomatometer_statefield follows RT's own certification logic:certified-freshrequires a minimum review count plus a score above the threshold; otherwise it'sfreshorrottenbased on the score. streaming_providerslists the platforms RT shows in the "Where to Watch" module. This is affiliate data and may not reflect every available platform.castandsynopsiscome from the same JSON-LD block asgenres/directors/mpaa_ratingand are populated in bothsitemapandurlsdiscovery modes.