Documentation Python quickstart Blog Free tools hello@quanticdata.ioLog in

Rotten Tomatoes API

A Rotten Tomatoes API that browses the movie grids — streaming at home, in theaters, coming soon — by genre, MPAA rating and streaming service, sorted RT’s own way, and returns one row per movie: title, Tomatometer with its fresh/rotten sentiment and Certified Fresh badge, audience score with Verified Hot, the tile date parsed to ISO with its label, poster at tile and full size, trailer flag and URL. No key.

$0.001 per delivered movie · $2 free every month · Failed runs never billed

POST /v1/scraper/collectors/rottentomatoes_movies/run
$ curl $QD/rottentomatoes_movies/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"list": "at_home", "sort": "popular", "max_results": 30}'
{ "status": "done", "count": 30,
  "results": [
    {
      "id": "…",
      "title": "…",
      "tomatometer": …,
      "tomatometer_sentiment": "…" } ],
  "cost": 0.03 }
# 30 movies × $0.001 · nothing delivered, nothing charged
Rotten Tomatoes API: list and sort in, a residential exit in the middle, delivered rows with rank, id and title on the right, $0.001 per movie.
You send list and sort; the run goes out through a residential exit and comes back as movies with rank, id and title — 18 fields on every row — and you are billed $0.001 for each movie actually delivered, nothing for a run that delivers none.
$0.001 / movie2,000 movies on the free $2 every month
Semantic inputlist, sort, genre — no URL lists
Up to 240movies per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

Try it

Rotten Tomatoes movies, running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

Get my free API key

What a Rotten Tomatoes API does

This reads Rotten Tomatoes’ own browse endpoint — a plain GET that answers without a browser and is the same payload the page renders from; the tiles are built out of exactly these keys, so the DOM can only ever lose fidelity. It was found by reading where the page’s “Load more” button gets its URL. The two obvious alternatives were rejected on evidence: the markup wraps the same numbers in a leading space and a percent sign with the sentiment split onto a sibling element, and the server-rendered schema.org list carries the Tomatometer but not the audience score, exists only on the first page and stops at 28 rows where the endpoint returns 30 and paginates.

Pagination is a cursor, not a page number, and the human browse page silently ignores it — it re-serves page one — so that route cannot paginate at all. The endpoint walked eight pages and 240 rows with zero repeats. The cursor is percent-encoded because base64 padding inside a query value is only legal by tolerance; RT accepts both spellings today, and this is the contract-correct one. The full-size poster was cross-checked against the schema.org image byte for byte.

Limits, in plain numbers

Everything that bounds one run of this collector. No hidden throttles.

Max per run

240 movies

Price

$0.001 / movie

Per 1,000

$1.00

Failed runs

Free zero rows, zero charge

Free every month

$2 no card

Rate limit

60 req/min on the free tier

What one movie looks like

Every delivered movie carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
rankinteger1-based position in Rotten Tomatoes' order for this response.
idstring · nullableRotten Tomatoes media id (emsId) — stable across grids, and the de-duplication key.
titlestring · nullableMovie title.
tomatometerinteger · nullableTomatometer score 0–100; null when the movie has no critic score yet (0 is a real score).
tomatometer_sentimentstring · nullable"positive" (fresh) or "negative" (rotten); null when unrated.
certified_freshbooleanTrue when Rotten Tomatoes marks the critic score Certified Fresh.
audience_scoreinteger · nullableAudience score 0–100; null when the movie has no audience score yet.
audience_sentimentstring · nullable"positive" or "negative" on the audience side; null when unrated.
verified_hotbooleanTrue when Rotten Tomatoes marks the audience score Verified Hot.
release_date_textstring · nullableThe date line exactly as the tile shows it, e.g. "Streaming Aug 28, 2026" or "Opens Sep 04, 2026".
release_date_labelstring · nullableWhat kind of date it is: Streaming, Opens, Opened, Re-releasing or Re-released.
release_datestring · nullableThat date as ISO YYYY-MM-DD; null when the tile states no parseable date.
release_yearinteger · nullableYear of release_date — the availability year, NOT the film's production year.
posterstring · nullablePoster image as served on the tile (164x246); null when Rotten Tomatoes has no artwork.
poster_fullstring · nullableFull-size original poster embedded inside the tile URL; null when the URL is not in that nested form.
has_trailerbooleanTrue when Rotten Tomatoes holds a trailer for the movie.
media_typestring · nullableRotten Tomatoes' own type for the row — "Movie" on every grid here.
urlstring · nullableMovie page URL on rottentomatoes.com.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
liststringnoWhich Rotten Tomatoes movie grid to browse. One of: at_home, in_theaters, coming_soon.
sortstringnoRotten Tomatoes' own ordering. An unknown value is rejected rather than silently ignored. One of: popular, newest, a_z, critic_highest, critic_lowest, audience_highest, audience_lowest.
genrestringnoNarrow to one genre. Omit for every genre. One of: action, adventure, animation, anime, biography, comedy, crime, documentary, drama, entertainment, faith_and_spirituality, fantasy, game_show, lgbtq, health_and_wellness, history, holiday, horror, house_and_garden, kids_and_family, music, musical, mystery_and_thriller, nature, news, reality, romance, sci_fi, short, soap, special_interest, sports, stand_up, talk_show, travel, variety, war, western.
ratingstringnoNarrow to one MPAA rating. One of: g, pg, pg_13, r, nc_17.
streaming_onstringnoNarrow to titles on one service — most useful with the at_home list. One of: netflix, prime-video, disney-plus, max, hulu, apple-tv-plus, peacock, paramount-plus, amc-plus, acorn-tv, fandango.
countrystringnoProxy exit geo (default us). Rotten Tomatoes serves its US catalogue.
max_resultsintegernoHow many movies to deliver at most (1–240). You pay only for delivered movies.

Pricing

Rotten Tomatoes API pricing

$0.001 per delivered movie. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 movies before you spend anything.

$0.001per delivered movie$1 per 1,000 delivered movies
2,000 movieson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe catalog returns your key's price

Pay as you go

$0/mo
  • $2 free credit / month
  • 60 requests / min
  • List unit prices

Starter

$19/mo
  • $15 free credit / month
  • 300 requests / min
  • 10% off unit prices

Scale

$299/mo
  • $250 free credit / month
  • 1,200 requests / min
  • 30% off unit prices

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/rottentomatoes_movies/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/rottentomatoes_movies/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"list":"at_home","sort":"popular","max_results":30}'

What people build with the Rotten Tomatoes API

Three shapes of work this endpoint was designed around.

Streaming catalog monitoring

What is on Netflix, Prime or Max this week with both scores, re-run to catch arrivals and departures.

Release calendars

Coming-soon and in-theaters grids with the tile date parsed to ISO and labelled, so a “streaming” date is never mistaken for a theatrical one.

Score analytics

Tomatometer and audience score side by side across a genre, with Certified Fresh and Verified Hot as flags.

Rotten Tomatoes API versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
SourceTile text with spaces and percent signsThe endpoint the tiles are built from
Audience scoreMissing from the schema.org listPresent on every row
PaginationThe browse page re-serves page oneCursor pagination, 240 rows without a repeat
DatesA string on the tileISO date plus the label saying what kind of date it is

What people search for

Live autocomplete demand around Rotten Tomatoes movies, pulled with our own Keyword ideas collector.

Rotten Tomatoes API: the POST to /v1/scraper/collectors/rottentomatoes_movies/run with list and sort on the left, and the JSON envelope on the right with 30 movies and usage.cost_usd $0.03.
The same call you would paste into a terminal: a Bearer key, list, sort and genre in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many movies arrived and usage.cost_usd is $0.03, which is 30 × $0.001. A run that delivers nothing costs nothing. The key is good for 60 req/min on the free tier.

Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

FAQ

Questions we get about the Rotten Tomatoes API.

Something else? Ask us →

Does Rotten Tomatoes have an official API?

Its API is not open to the public. This collector reads the public browse endpoint that powers the site’s own grids and needs no key.

Can I search a title?

Not on this surface: it browses grids — at home, in theaters, coming soon — filtered by genre, rating and service. Title search is a different page.

What do sentiment and the badges mean?

tomatometer_sentiment is fresh or rotten as RT states it, certified_fresh is RT’s badge for critic consensus, and verified_hot is the equivalent audience badge. All three are fields, not parsed icons.

Why is the release date labelled?

Because the tile shows different kinds of dates — streaming date, theatrical date — and the label says which. The ISO parse is delivered beside the original text.

Is there a free Rotten Tomatoes API?

Every account gets $2 of credit every month with no card, which is about 2,000 delivered movies on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

How much does one run cost?

Multiply the rows you actually receive by $0.001. A run capped at 240 movies — the maximum for this collector — costs $0.24 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

Run the Rotten Tomatoes API now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Get my free API key