Rotten Tomatoes API endpoint
Returns current or inactive critics from Rotten Tomatoes' public author directory. Browse one letter or search by name; use `next_cursor` as `after` or `previous_cursor` as `before`, as indicated by the corresponding page flag. The letter values come from the live directory controls.
/rottentomatoes/critics/authorsletter — directory letter. Values: #, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z. Defaults to a. Use this or search, not both.search — optional critic-name search. When present, Rotten Tomatoes clears the letter filter.inactive — set to true to query the site's inactive critics directory. Defaults to false.after — opaque cursor from data.next_cursor; pass it back while data.has_next_page is true.before — opaque cursor from data.previous_cursor; pass it back while data.has_previous_page is true. Use after or before, not both.limit — critics per page, from 1 to 100; defaults to 100.Each critic includes their public directory path, approval badges, and affiliated publications when present. An empty author list is a valid no-results response. The response includes forward and backward page flags and cursors.
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| name | 40 | |
| path | 40 | |
| publication_label | 19 | |
| publications | 19 | median 1 entry |
| badges | 21 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| letter | string | No | Directory letter. Omit when using search; default a. Allowed values: #, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z. | a | |
| search | string | No | Search critics by name; cannot be combined with letter | Mae Abdulbaki | |
| inactive | boolean | No | Include the site's inactive critics list | false | |
| after | string | No | Opaque cursor from data.next_cursor | MQ== | |
| before | string | No | Opaque cursor from data.previous_cursor; cannot be combined with after | MA== | |
| limit | integer | No | Rows per page, default 100, range 1 to 100 | 100 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/rottentomatoes/critics/authors?letter=%23&inactive=true&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"letter": "a",
"inactive": false,
"limit": 3,
"has_next_page": true,
"next_cursor": "MQ==",
"has_previous_page": false,
"authors": [
{
"name": "Ganesh Aaglave",
"path": "/critics/ganesh-aaglave",
"publication_label": "when published by",
"publications": [
{
"id": "2784",
"name": "Firstpost",
"path": "/critics/source/2784",
"editorial_url": "http://www.firstpost.com/tag/moviereview"
}
]
}
],
"source_url": "https://www.rottentomatoes.com/napi/critics/authors?isInactiveCriticsList=false&letter=a&pageCount=3&userToken=null",
"public_page_derived": true
}
}Request schema
No body schema
Response schema
#/definitions/rottentomatoes.criticsAuthorsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | rottentomatoes.CriticsAuthorsResponse | No | ||||
| data.after | string | No | ||||
| data.authors | array | No | ||||
| data.authors[].badges | array | No | Individually approved | |||
| data.authors[].name | string | No | Mae Abdulbaki | |||
| data.authors[].path | string | No | /critics/mae-abdulbaki | |||
| data.authors[].publication_label | string | No | when published by | |||
| data.authors[].publications | array | No | ||||
| data.authors[].publications[].editorial_url | string | No | https://example.com/reviews | |||
| data.authors[].publications[].id | string | No | 2784 | |||
| data.authors[].publications[].name | string | No | Firstpost | |||
| data.authors[].publications[].path | string | No | /critics/source/2784 | |||
| data.before | string | No | ||||
| data.fetched_at | string | No | 2026-09-26T10:00:00Z | |||
| data.has_next_page | boolean | No | true | |||
| data.has_previous_page | boolean | No | false | |||
| data.inactive | boolean | No | false | |||
| data.letter | string | No | a | |||
| data.limit | integer | No | 100 | |||
| data.next_cursor | string | No | MQ== | |||
| data.previous_cursor | string | No | MA== | |||
| data.public_page_derived | boolean | No | true | |||
| data.search | string | No | ||||
| data.source_url | string | No | https://www.rottentomatoes.com/napi/critics/authors?isInactiveCriticsList=false&letter=a&pageCount=100&userToken=null | |||
| 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/critics/authors?letter=%23&inactive=true&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"