Rotten Tomatoes API endpoint
Returns TV series rows from Rotten Tomatoes' browse listing. Use `/rottentomatoes/browse/filters?list=tv_series_browse` to discover current filters; pagination uses the opaque `after` cursor from the previous response.
/rottentomatoes/browse/tvReturns TV rows from Rotten Tomatoes' public browse JSON route. Discover current
filter values at /rottentomatoes/browse/filters?list=tv_series_browse.
Query parameters:
list: tv_series_browse (default).sort: popular, newest, a_z, critic_highest, critic_lowest,
audience_highest, or audience_lowest.genres: comma-separated values: 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.ratings: tvy, tvy7, tvg, tvpg, tv14, tvma.audience: upright, spilled.critics: fresh, rotten.affiliates: theaters, fandango, apple-tv-plus, netflix,
prime-video, disney-plus, max, peacock, hulu, paramount-plus,
amc-plus, acorn-tv, apple-tv.after: opaque cursor from data.page_info.end_cursor; omit for the first
page.limit: rows to return, default 10, maximum 30.The service validates filter values against the current selected-list menus.
The response includes the upstream page cursor and data.public_page_derived.
An explicit upstream grid with no rows returns items: [] and its page flags.
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| position | 10 | 1 to 10, median 5 |
| media_type | 10 | TvSeries in all 10 |
| title | 10 | “Carrie” and 9 other values |
| path | 10 | “/tv/carrie” and 9 other values |
| url | 10 | rottentomatoes.com |
| image_url | 10 | resizing.flixster.com |
| date_created | 9 | “Latest Episode: Oct 07” and 5 other values |
| tomatometer_score | 10 | 41 to 100, median 87 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| list | string | No | TV browse list: tv_series_browse Allowed values: tv_series_browse. | tv_series_browse | |
| sort | string | No | Sort value from browse/filters Allowed values: popular, newest, a_z, critic_highest, critic_lowest, audience_highest, audience_lowest. | popular | |
| genres | string | No | Comma-separated genre values from browse/filters Allowed values: 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. | action,drama | |
| ratings | string | No | Comma-separated content ratings from browse/filters Allowed values: tvy, tvy7, tvg, tvpg, tv14, tvma. | tv14 | |
| audience | string | No | Comma-separated Popcornmeter values from browse/filters Allowed values: upright, spilled. | upright | |
| critics | string | No | Comma-separated Tomatometer values from browse/filters Allowed values: fresh, rotten. | fresh | |
| affiliates | string | No | Comma-separated streaming/service values from browse/filters Allowed values: theaters, fandango, apple-tv-plus, netflix, prime-video, disney-plus, max, peacock, hulu, paramount-plus, amc-plus, acorn-tv, apple-tv. | netflix | |
| after | string | No | Opaque next-page cursor returned in data.page_info.end_cursor | Mjk= | |
| limit | integer | No | Rows to return, default 10, max 30 | 10 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/rottentomatoes/browse/tv?list=tv_series_browse&sort=popular&genres=action&ratings=tvy&audience=upright&critics=fresh&affiliates=theaters&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"list": "tv_series_browse",
"sort": "popular",
"limit": 1,
"items": [
{
"position": 1,
"media_type": "TVSeries",
"title": "Example Series",
"path": "/tv/example_series",
"url": "https://www.rottentomatoes.com/tv/example_series"
}
],
"page_info": {
"has_next_page": true,
"end_cursor": "Mjk="
},
"public_page_derived": true
}
}Request schema
No body schema
Response schema
#/definitions/rottentomatoes.browseResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | rottentomatoes.BrowseResponse | No | ||||
| data.fetched_at | string | No | 2026-06-07T14:46:16Z | Time the data was fetched, in UTC (RFC 3339). | ||
| data.items | array | No | Titles on this page of the browse list. | |||
| data.items[].critics_review_count | integer | No | 136 | Number of critic reviews behind the Tomatometer score. | ||
| data.items[].date_created | string | No | 2026 | Release date text shown on the browse card, such as `2026`. | ||
| data.items[].image_url | string | No | URL of the poster image. | |||
| data.items[].media_type | string | No | Movie | Kind of title, such as `Movie`. | ||
| data.items[].path | string | No | /m/wildwood_nj | Rotten Tomatoes path of the title page, such as `/m/wildwood_nj`. | ||
| data.items[].position | integer | No | 1 | Position of the title in the returned list, starting at 1. | ||
| data.items[].title | string | No | Wildwood, NJ | Title name as shown on the browse card. | ||
| data.items[].tomatometer_score | integer | No | 87 | Tomatometer critics score, as a percentage. | ||
| data.items[].url | string | No | https://www.rottentomatoes.com/m/wildwood_nj | Rotten Tomatoes page URL of the title. | ||
| data.items[].video | object | No | Featured video of the title, when Rotten Tomatoes provides one. | |||
| data.items[].video.description | string | No | Description of the video. | |||
| data.items[].video.duration | string | No | 2:32 | Length of the video as text, such as `2:32`. | ||
| data.items[].video.thumbnail | string | No | URL of the video thumbnail image. | |||
| data.items[].video.title | string | No | Breaking Bad: Official Clip - Walter Wants to Cook | Title of the video. | ||
| data.items[].video.upload_date | string | No | 2024-07-11T19:23:03 | Date and time the video was uploaded, such as `2024-07-11T19:23:03`. | ||
| data.items[].video.url | string | No | https://www.rottentomatoes.com/tv/breaking_bad/s01/e01/videos/JR3ymbH1dpLb | Rotten Tomatoes page URL of the video. | ||
| data.limit | integer | No | 10 | Maximum number of rows requested. | ||
| data.list | string | No | movies_in_theaters | Browse list that was returned, such as `movies_in_theaters`. | ||
| data.page_info | object | No | Paging information. Pass `end_cursor` as `after` to get the next page. | |||
| data.page_info.end_cursor | string | No | Mjk= | Cursor of the last item on this page. Pass it as `after` to get the next page. | ||
| data.page_info.has_next_page | boolean | No | true | Whether more items follow this page. | ||
| data.page_info.has_previous_page | boolean | No | true | Whether items precede this page. | ||
| data.page_info.start_cursor | string | No | MA== | Cursor of the first item on this page. | ||
| data.public_page_derived | boolean | No | true | Always `true`: the data comes from publicly visible Rotten Tomatoes pages. | ||
| data.sort | string | No | popular | Sort order applied to the list, such as `popular`. | ||
| data.source_url | string | No | https://www.rottentomatoes.com/browse/movies_in_theaters/sort:popular | URL the data was read from. | ||
| data.title | string | No | Movies in Theaters (2026) | Title of the browse list, as Rotten Tomatoes shows it. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/rottentomatoes/browse/tv?list=tv_series_browse&sort=popular&genres=action&ratings=tvy&audience=upright&critics=fresh&affiliates=theaters&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"