Twitch API endpoint
Returns a Twitch channel's clips (last 7 days), most-viewed first: title, view count, duration, curator, and the game it was recorded under.
/twitch/clipsQuery parameters:
login (required) — a Twitch channel login (the lowercase URL slug,
e.g. caedrel for twitch.tv/caedrel), not the display name.limit (optional) — number of clips to return. Defaults to 20, clamped
to a maximum of 100.Notable response behavior:
clips is ordered by view count descending, scoped to clips created in
the last 7 days — Twitch's own default clips-tab window and sort.curator is the user who created the clip, which is often a viewer, not
the broadcaster.404. A missing login returns 400 before
any upstream request is made.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| url | 20 | twitch.tv |
| title | 20 | |
| view_count | 20 | 78 to 22,768, median 267 |
| duration_seconds | 20 | 5 to 60, median 27 |
| created_at | 20 | 2026-10-07 to 2026-10-13 |
| thumbnail_url | 20 | static-cdn.jtvnw.net |
| game | 20 | |
| curator | 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| login | string | Yes | Twitch channel login (the lowercase URL slug, e.g. caedrel for twitch.tv/caedrel) | caedrel | |
| limit | integer | No | Number of clips to return (default 20, max 100) | 20 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/twitch/clips?login=caedrel&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"login": "caedrel",
"count": 20,
"clips": [
{
"id": "3804362741",
"url": "https://www.twitch.tv/caedrel/clip/LitigiousChillyBaboonCclamChamp-hhXP4-A8YhevOQRo",
"title": "ROAMER LOCKE PENTA KILL ends the game",
"view_count": 5370,
"duration_seconds": 42,
"created_at": "2026-08-07T10:59:22Z",
"thumbnail_url": "https://static-cdn.jtvnw.net/twitch-video-assets/.../thumb-0000000000-1920x1080.jpg",
"game": {
"id": "21779",
"slug": "league-of-legends",
"name": "League of Legends"
},
"curator": {
"id": "29221067",
"login": "daniel0527",
"display_name": "凡人"
}
}
]
}
}Request schema
No body schema
Response schema
#/definitions/twitch.clipsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | twitch.ClipsResponse | No | ||||
| data.clips | array | No | ||||
| data.clips[].created_at | string | No | 2026-08-07T10:59:22Z | |||
| data.clips[].curator | twitch.ClipCurator | No | ||||
| data.clips[].curator.display_name | string | No | ||||
| data.clips[].curator.id | string | No | ||||
| data.clips[].curator.login | string | No | ||||
| data.clips[].duration_seconds | number | No | 42 | |||
| data.clips[].game | twitch.ClipGame | No | ||||
| data.clips[].game.id | string | No | ||||
| data.clips[].game.name | string | No | League of Legends | |||
| data.clips[].game.slug | string | No | league-of-legends | |||
| data.clips[].id | string | No | ||||
| data.clips[].thumbnail_url | string | No | ||||
| data.clips[].title | string | No | ||||
| data.clips[].url | string | No | ||||
| data.clips[].view_count | integer | No | 5370 | |||
| data.count | integer | No | 20 | |||
| data.login | string | 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/twitch/clips?login=caedrel&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"