# Rotten Tomatoes API — $0.001 per movie

> Rotten Tomatoes API: Rotten Tomatoes browse grids — Tomatometer, audience score, release. $0.001 per delivered movie, nothing delivered means nothing charged.

[Home](https://quanticdata.io/)/[Collectors](https://quanticdata.io/collectors/)/*Rotten Tomatoes API*

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

By [Aldo Morese](https://quanticdata.io/about/), founder of QuanticData · Published Aug 21, 2026 · Updated Sep 3, 2026

[Get my free API key](https://app.quanticdata.io/register) [See the request](/collectors/rotten-tomatoes-api/#integration)

$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
```

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 / movie**2,000 movies on the free $2 every month

**Semantic input**list, sort, genre — no URL lists

**Up to 240**movies per run, pagination handled for you

**No browser**read over HTTP/TLS — cheaper and faster than rendering

On this page: [Try it](/collectors/rotten-tomatoes-api/#try) [What it is](/collectors/rotten-tomatoes-api/#what) [Limits](/collectors/rotten-tomatoes-api/#caps) [Output fields](/collectors/rotten-tomatoes-api/#output) [Inputs](/collectors/rotten-tomatoes-api/#input) [Pricing](/collectors/rotten-tomatoes-api/#pricing) [Integration](/collectors/rotten-tomatoes-api/#integration) [Use cases](/collectors/rotten-tomatoes-api/#use-cases) [Versus the alternatives](/collectors/rotten-tomatoes-api/#compare) [FAQ](/collectors/rotten-tomatoes-api/#faq)

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](https://app.quanticdata.io/register)

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

Input is meaning, not a URL *list* *sort* *genre* *rating* *streaming_on*

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

| Field | Type | What it holds |
| --- | --- | --- |
| `rank` | integer | 1-based position in Rotten Tomatoes' order for this response. |
| `id` | string · nullable | Rotten Tomatoes media id (emsId) — stable across grids, and the de-duplication key. |
| `title` | string · nullable | Movie title. |
| `tomatometer` | integer · nullable | Tomatometer score 0–100; null when the movie has no critic score yet (0 is a real score). |
| `tomatometer_sentiment` | string · nullable | "positive" (fresh) or "negative" (rotten); null when unrated. |
| `certified_fresh` | boolean | True when Rotten Tomatoes marks the critic score Certified Fresh. |
| `audience_score` | integer · nullable | Audience score 0–100; null when the movie has no audience score yet. |
| `audience_sentiment` | string · nullable | "positive" or "negative" on the audience side; null when unrated. |
| `verified_hot` | boolean | True when Rotten Tomatoes marks the audience score Verified Hot. |
| `release_date_text` | string · nullable | The date line exactly as the tile shows it, e.g. "Streaming Aug 28, 2026" or "Opens Sep 04, 2026". |
| `release_date_label` | string · nullable | What kind of date it is: Streaming, Opens, Opened, Re-releasing or Re-released. |
| `release_date` | string · nullable | That date as ISO YYYY-MM-DD; null when the tile states no parseable date. |
| `release_year` | integer · nullable | Year of release_date — the availability year, NOT the film's production year. |
| `poster` | string · nullable | Poster image as served on the tile (164x246); null when Rotten Tomatoes has no artwork. |
| `poster_full` | string · nullable | Full-size original poster embedded inside the tile URL; null when the URL is not in that nested form. |
| `has_trailer` | boolean | True when Rotten Tomatoes holds a trailer for the movie. |
| `media_type` | string · nullable | Rotten Tomatoes' own type for the row — "Movie" on every grid here. |
| `url` | string · nullable | Movie page URL on rottentomatoes.com. |

## Inputs

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

| Input | Type | Required | What it does |
| --- | --- | --- | --- |
| `list` | string | no | Which Rotten Tomatoes movie grid to browse. One of: `at_home`, `in_theaters`, `coming_soon`. |
| `sort` | string | no | Rotten 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`. |
| `genre` | string | no | Narrow 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`. |
| `rating` | string | no | Narrow to one MPAA rating. One of: `g`, `pg`, `pg_13`, `r`, `nc_17`. |
| `streaming_on` | string | no | Narrow 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`. |
| `country` | string | no | Proxy exit geo (default us). Rotten Tomatoes serves its US catalogue. |
| `max_results` | integer | no | How 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.001**per delivered movie*$1 per 1,000 delivered movies*

**2,000 movies**on the free allowance*$2 every month, no card*

**Zero rows**zero charge*blocks, captchas and retries are on us*

**−30%**on volume tiers*the 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

Most popular

### Growth

$79/mo

- $50 free credit / month

- 600 requests / min

- 20% 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](https://quanticdata.io/web-data-api-for-ai/). 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}'
```

```
import requests

r = requests.post(
    "https://api.quanticdata.io/v1/scraper/collectors/rottentomatoes_movies/run",
    headers={"Authorization": f"Bearer {QD_API_KEY}"},
    json={
        "list": "at_home",
        "sort": "popular",
        "max_results": 30
    },
    timeout=120,
)
for row in r.json()["payload"]["results"]:
    print(row)
```

```
const res = await fetch(
  "https://api.quanticdata.io/v1/scraper/collectors/rottentomatoes_movies/run",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.QD_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({"list":"at_home","sort":"popular","max_results":30}),
  },
);
const { payload } = await res.json();
console.table(payload.results);
```

```
claude mcp add quanticdata \
  -e QUANTICDATA_API_KEY=qd_live_your_key_here \
  -- npx -y quanticdata-mcp

# then, in the chat:
> run the rottentomatoes_movies collector with list="at_home" and sort="popular"
```

## 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 scraper | This collector |
| --- | --- | --- |
| Source | Tile text with spaces and percent signs | The endpoint the tiles are built from |
| Audience score | Missing from the schema.org list | Present on every row |
| Pagination | The browse page re-serves page one | Cursor pagination, 240 rows without a repeat |
| Dates | A string on the tile | ISO 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.

Searches: [rotten tomatoes api key](/collectors/rotten-tomatoes-api/#try) [rotten tomatoes api free](/collectors/rotten-tomatoes-api/#try) [rotten tomatoes api cost](/collectors/rotten-tomatoes-api/#try) [rotten tomatoes api python](/collectors/rotten-tomatoes-api/#try) [rotten tomatoes api github](/collectors/rotten-tomatoes-api/#try) [rotten tomatoes api key free](/collectors/rotten-tomatoes-api/#try) [rotten tomatoes api documentation](/collectors/rotten-tomatoes-api/#try)

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:

- [Fandango/Rotten Tomatoes: terms of service](https://www.rottentomatoes.com/policies/terms-and-policies)

- [Schema.org: the Review type](https://schema.org/Review)

- [IETF: RFC 9309, Robots Exclusion Protocol](https://www.rfc-editor.org/rfc/rfc9309.html)

## FAQ

Questions we get about the Rotten Tomatoes API.

[Something else? Ask us →](mailto:hello@quanticdata.io)

### 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](https://app.quanticdata.io/register)

Related: [All 100 collectors](https://quanticdata.io/collectors/) [Wikipedia API](https://quanticdata.io/collectors/wikipedia-api/) [YouTube video data API](https://quanticdata.io/collectors/youtube-video-data-api/) [iTunes Search API](https://quanticdata.io/collectors/itunes-search-api/) [Market research data](https://quanticdata.io/market-research-data/) [Documentation](https://quanticdata.io/docs/)

## Also on this site

Quantic**Data**

Residential proxies & web data APIs for AI.

#### Proxies

- [Residential Basic](https://quanticdata.io/residential-proxies/#basic)

- [Residential Premium](https://quanticdata.io/residential-proxies/#plans)

- [Cheap Residential](https://quanticdata.io/cheap-residential-proxies/)

- [Mobile Proxies](https://quanticdata.io/mobile-proxies/)

- [Datacenter Proxies](https://quanticdata.io/datacenter-proxies/)

- [ISP Proxies](https://quanticdata.io/isp-proxies/)

- [Rotating Proxies](https://quanticdata.io/rotating-proxies/)

- [Sneaker Proxies](https://quanticdata.io/sneaker-proxies/)

- [SOCKS5 Proxies](https://quanticdata.io/socks5-proxies/)

- [IPv6 Proxies](https://quanticdata.io/ipv6-proxies/)

- [Proxy locations](https://quanticdata.io/proxies/)

#### Data APIs

- [MCP Server](https://quanticdata.io/mcp-server/)

- [Web Scraper API](https://quanticdata.io/web-scraping-api/)

- [SERP API](https://quanticdata.io/serp-api/)

- [Collectors](https://quanticdata.io/collectors/)

- [Web Data for AI](https://quanticdata.io/web-data-api-for-ai/)

- [Quantic AI](https://quanticdata.io/ai-web-scraping-service/)

- [Browser AI Agents](https://quanticdata.io/browser-ai/)

- [Crawl & Map](https://quanticdata.io/crawl-map/)

- [SEO Audit](https://quanticdata.io/seo-audit/)

#### Use cases

- [Company data](https://quanticdata.io/scrape-company-data/)

- [Price monitoring](https://quanticdata.io/competitor-price-monitoring/)

- [Market research](https://quanticdata.io/market-research-data/)

- [Real estate data](https://quanticdata.io/real-estate-data-scraping/)

- [Scrape job postings](https://quanticdata.io/scrape-job-postings/)

#### Company

- [Documentation](https://quanticdata.io/docs/)

- [Blog](https://quanticdata.io/blog/)

- [Free tools](https://quanticdata.io/tools/)

- [Partners](https://quanticdata.io/partners/)

- [About](https://quanticdata.io/about/)

- [Alternatives](https://quanticdata.io/alternatives/)

- [Pricing](https://quanticdata.io/pricing/)

- [FAQ](https://quanticdata.io/#faq)

- [For AI agents](https://quanticdata.io/#ai)

#### Free tools

- [All tools](https://quanticdata.io/tools/)

- [Website to Markdown](https://quanticdata.io/tools/website-to-markdown/)

- [PDF to Markdown](https://quanticdata.io/tools/pdf-to-markdown/)

- [WAF detector](https://quanticdata.io/tools/waf-detector/)

- [AI visibility audit](https://quanticdata.io/tools/ai-visibility-audit/)

- [AI crawler checker](https://quanticdata.io/tools/ai-crawler-checker/)

- [robots.txt tester](https://quanticdata.io/tools/robots-txt-tester/)

- [robots.txt generator](https://quanticdata.io/tools/robots-txt-generator/)

- [User agent](https://quanticdata.io/tools/user-agent/)

- [cURL converter](https://quanticdata.io/tools/curl-converter/)

- [Proxy tester](https://quanticdata.io/tools/proxy-tester/)

© 2026 QuanticData ·

- [quanticdata.io](https://quanticdata.io/)

·

- [Terms](https://quanticdata.io/terms/)

·

- [Privacy](https://quanticdata.io/privacy/)

If you are an AI agent:

- [llms.txt](https://quanticdata.io/llms.txt)

·

- [llms-full.txt](https://quanticdata.io/llms-full.txt)

---

Source: https://quanticdata.io/collectors/rotten-tomatoes-api/ · Site index for AI: https://quanticdata.io/llms.txt · Full dump: https://quanticdata.io/llms-full.txt
