ReelShort API endpoint
Returns one whole ReelShort shelf, such as TOP (up to 200 titles) or New Release: shelf id, name and every title with its id, title, description, cover, link, episode count, tags, plays and favorites. Shelf ids come from reelshort-home. Only public catalog metadata is read; no playable video is returned.
/reelshort/shelfReturns one whole ReelShort shelf in a single response.
id is required: a shelf id from reelshort-home (the TOP shelf is 51003506, New Release is 51003505). A reelshort.com/shelf/... URL is also accepted.
Notable response behavior:
total is the number of titles returned.404; a malformed id returns 400.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"id": 51003506,
"name": "TOP",
"total": 200,
"books": [
{
"id": "6a3d980baaf954b86307ecc4",
"title": "Rise of the Caged King",
"description": "Once a business elite, Silas is framed for murder by his rival Chase and his own wife Marina. Sentenced to 60…",
"cover_url": "https://v-img.crazymaplestudios.com/v-images/book_cover_batch/200000000000005418/5507e9c1-44cd-4b4f-984f-afa8a…",
"url": "https://www.reelshort.com/movie/rise-of-the-caged-king-6a3d980baaf954b86307ecc4",
"episodes": 64,
"tags": [
"Playing Dumb"
],
"plays": 41862670,
"favorites": 321965,
"first_paid_episode": 13,
"has_trailer": true,
"language": "en"
},
{
"id": "67f6d31af51c3a3b9e0549f2",
"title": "Undercover Prison King",
"description": "When ex-soldier Troy Poe inherits a corrupt private prison, he decides to go in undercover as an inmate to exp…",
"cover_url": "https://v-img.crazymaplestudios.com/v-images/book_cover_batch/200000000000000213/5abcdb27-ef1b-4f35-92e0-03b3c…",
"url": "https://www.reelshort.com/movie/undercover-prison-king-67f6d31af51c3a3b9e0549f2",
"episodes": 80,
"tags": [
"Hidden Identity"
],
"plays": 240007507,
"favorites": 1674994,
"first_paid_episode": 10,
"has_trailer": true,
"language": "en"
},
{
"id": "6a8752ac7c23cb02b40f062b",
"title": "Just One Kiss",
"description": "Based on the Wattpad novel by Emily Jean. Determined to lose her virginity before she starts college, Farrah B…",
"cover_url": "https://v-img.crazymaplestudios.com/v-images/book_cover_batch/200000000000003580/7b267f8c-ec32-4554-8248-9a53a…",
"url": "https://www.reelshort.com/movie/just-one-kiss-6a8752ac7c23cb02b40f062b",
"episodes": 72,
"tags": [
"Playing Dumb"
],
"plays": 36269643,
"favorites": 252382,
"first_paid_episode": 12,
"has_trailer": true,
"language": "en"
}
]
}
}
| Field | Filled in, of 200 checked | Values in the sample |
|---|---|---|
| id | 200 | |
| title | 200 | “Agent of Shadows” and 199 other values |
| description | 200 | median 130 characters |
| cover_url | 200 | v-img.crazymaplestudios.com and 1 other host |
| url | 200 | reelshort.com |
| episodes | 200 | 18 to 118, median 66 |
| tags | 200 | median 1 entry |
| plays | 200 | 1,052,820 to 788,247,852, median 69,956,847 |
| favorites | 200 | 18,790 to 14,709,404, median 310,031 |
| first_paid_episode | 200 | 5 to 24, median 11 |
| has_trailer | 200 | true in 200 of 200 |
| language | 200 | en in all 200 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Shelf id from reelshort-home (for example 51003506), or a reelshort.com shelf URL | 51003506 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/reelshort/shelf?id=51003506" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": 51003506,
"name": "TOP",
"total": 200,
"books": [
{
"id": "6a3d980baaf954b86307ecc4",
"title": "Rise of the Caged King",
"description": "Once a business elite, Silas is framed for murder by his rival Chase and his own wife Marina. Sentenced to 60…",
"cover_url": "https://v-img.crazymaplestudios.com/v-images/book_cover_batch/200000000000005418/5507e9c1-44cd-4b4f-984f-afa8a…",
"url": "https://www.reelshort.com/movie/rise-of-the-caged-king-6a3d980baaf954b86307ecc4",
"episodes": 64,
"tags": [
"Playing Dumb"
],
"plays": 41862670,
"favorites": 321965,
"first_paid_episode": 13,
"has_trailer": true,
"language": "en"
},
{
"id": "67f6d31af51c3a3b9e0549f2",
"title": "Undercover Prison King",
"description": "When ex-soldier Troy Poe inherits a corrupt private prison, he decides to go in undercover as an inmate to exp…",
"cover_url": "https://v-img.crazymaplestudios.com/v-images/book_cover_batch/200000000000000213/5abcdb27-ef1b-4f35-92e0-03b3c…",
"url": "https://www.reelshort.com/movie/undercover-prison-king-67f6d31af51c3a3b9e0549f2",
"episodes": 80,
"tags": [
"Hidden Identity"
],
"plays": 240007507,
"favorites": 1674994,
"first_paid_episode": 10,
"has_trailer": true,
"language": "en"
},
{
"id": "6a8752ac7c23cb02b40f062b",
"title": "Just One Kiss",
"description": "Based on the Wattpad novel by Emily Jean. Determined to lose her virginity before she starts college, Farrah B…",
"cover_url": "https://v-img.crazymaplestudios.com/v-images/book_cover_batch/200000000000003580/7b267f8c-ec32-4554-8248-9a53a…",
"url": "https://www.reelshort.com/movie/just-one-kiss-6a8752ac7c23cb02b40f062b",
"episodes": 72,
"tags": [
"Playing Dumb"
],
"plays": 36269643,
"favorites": 252382,
"first_paid_episode": 12,
"has_trailer": true,
"language": "en"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/reelshort.shelfResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | reelshort.ShelfResponse | No | ||||
| data.books | array | No | ||||
| data.books[].cover_url | string | No | ||||
| data.books[].description | string | No | ||||
| data.books[].episodes | integer | No | ||||
| data.books[].favorites | integer | No | ||||
| data.books[].first_paid_episode | integer | No | FirstPaidEpisode is the episode number from which episodes are paid; 0 when ReelShort lists none. | |||
| data.books[].has_trailer | boolean | No | ||||
| data.books[].id | string | No | ||||
| data.books[].language | string | No | ||||
| data.books[].plays | integer | No | Plays and Favorites are ReelShort's own read_count and collect_count. | |||
| data.books[].tags | array | No | ||||
| data.books[].title | string | No | ||||
| data.books[].url | string | No | ||||
| data.id | integer | No | ||||
| data.name | string | No | ||||
| data.total | integer | No | ||||
| 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 |
| 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/reelshort/shelf?id=51003506" \
-H "x-api-key: $CRAWLORA_API_KEY"