Twitch API endpoint
Returns a Twitch channel's upcoming broadcast schedule -- planned segments with title, start/end time, and game/category -- starting today. A channel with no schedule configured returns an empty segments list, not an error.
/twitch/scheduleQuery parameters:
channel (required) — a Twitch channel login (the lowercase URL
slug, e.g. caedrel).weeks (optional) — number of weeks ahead to return, starting
today (default 1, max 4).Notable response behavior:
200 with an empty
segments list, not an error.next_segment_id/next_segment_at identify the next upcoming
segment (which may be outside the requested weeks window if the
window starts mid-gap).categories lists the game(s) planned for that
broadcast; a segment can have zero categories if none was set.404. A missing channel returns
400 before any upstream request is made.| Field | Filled in, of 6 checked | Values in the sample |
|---|---|---|
| id | 6 | |
| title | 6 | |
| start_at | 6 | 2026-10-12 to 2026-10-18 |
| end_at | 6 | 2026-10-12 to 2026-10-18 |
| is_cancelled | 6 | true in 0 of 6 |
| categories | 6 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| channel | string | Yes | Twitch channel login (the lowercase URL slug) | caedrel | |
| weeks | integer | No | Number of weeks ahead to return, starting today (default 1, max 4) | 1 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/twitch/schedule?channel=caedrel" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"channel": "caedrel",
"count": 5,
"next_segment_id": "eyJzZWdtZW50SUQiOiJkYjgzMmNiYi1lMmUzLTQzODUtOTRiYS1iNTQ4MTk2M2E4ODkiLCJpc29ZZWFyIjoyMDI2LCJpc29XZWVrIjozM30=",
"next_segment_at": "2026-08-15T12:00:00Z",
"segments": [
{
"id": "eyJzZWdtZW50SUQiOiI3YmJmYzA3OC00Nzg3LTQzMWEtOWQ4Yy0xNDRjYmI3YWRkOWIiLCJpc29ZZWFyIjoyMDI2LCJpc29XZWVrIjozM30=",
"title": "LEC",
"start_at": "2026-08-10T12:00:00Z",
"end_at": "2026-08-10T19:00:00Z",
"is_cancelled": false,
"categories": [
{
"id": "21779",
"slug": "league-of-legends",
"name": "League of Legends",
"box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/21779-144x192.jpg"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/twitch.scheduleResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | twitch.ScheduleResponse | No | ||||
| data.channel | string | No | ||||
| data.count | integer | No | 5 | |||
| data.next_segment_at | string | No | 2026-08-15T12:00:00Z | |||
| data.next_segment_id | string | No | ||||
| data.segments | array | No | ||||
| data.segments[].cancelled_until | string | No | ||||
| data.segments[].categories | array | No | ||||
| data.segments[].categories[].box_art_url | string | No | ||||
| data.segments[].categories[].id | string | No | ||||
| data.segments[].categories[].name | string | No | League of Legends | |||
| data.segments[].categories[].slug | string | No | league-of-legends | |||
| data.segments[].end_at | string | No | 2026-08-15T19:00:00Z | |||
| data.segments[].id | string | No | ||||
| data.segments[].is_cancelled | boolean | No | false | |||
| data.segments[].start_at | string | No | 2026-08-15T12:00:00Z | |||
| data.segments[].title | string | No | LEC | |||
| 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/twitch/schedule?channel=caedrel" \
-H "x-api-key: $CRAWLORA_API_KEY"