Kick API endpoint
Returns one page of Kick's live-stream directory: title, viewer count, start time, language, mature flag, tags, category, thumbnail and the channel for each live broadcast. sort is viewer_count_desc (the default, most viewers first) or featured. language filters to one stream language by code (kick-languages lists the languages Kick shows in its own picker; the directory accepts a wider range of codes than that list, and an unrecognized code returns a 400), and category_id filters to one category by the numeric id from kick-subcategories or kick-search-categories. limit is 1 to 100 (default 24). Page onward by passing the previous response's next_cursor as after; next_cursor is empty on the last page.
/kick/livestreamsParameters (all optional):
sort: viewer_count_desc (most viewers first, the default) or featured.language: a stream language code such as en, ja, es or pt-BR: 2 to 3 letters, optionally followed by a hyphen and a 2 to 4 letter region. Codes are case-insensitive on Kick's side. kick-languages lists the 67 languages Kick shows in its own language picker, but the live directory accepts a wider ISO-style range (for example af, sw, cy and xh are accepted although absent from that list), so this is not a closed set: Kick itself decides whether a code is recognized, and an unrecognized one such as zz returns 400.category_id: a category's numeric id, from kick-subcategories or kick-search-categories.limit: 1 to 100; defaults to 24.after: the previous response's next_cursor.Notable response behavior:
sort, a malformed language (not letters, or not in the shape above), a limit outside 1 to 100, or a negative category_id returns 400 before Kick is called. A well-formed but unrecognized language returns 400 from Kick's own rejection.next_cursor is empty on the last page.viewers is the live viewer count at request time. started_at is RFC 3339 in UTC.category_id returns an empty list, not an error.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"sort": "viewer_count_desc",
"livestreams": [
{
"id": "01a17349-8728-74fa-972f-093056e74b43",
"title": "【コレコレ】KICK闇ニュース!相談やSNSトラブル解決【ミラー、録画禁止】",
"viewers": 93457,
"started_at": "2026-10-25T13:39:21Z",
"language": "ja",
"mature": false,
"category": {
"id": 15,
"name": "Just Chatting",
"slug": "just-chatting"
},
"channel": {
"id": 57035257,
"slug": "korekore_ch",
"username": "korekore_ch",
"profile_picture": "https://files.kick.com/images/user/58166499/profile_image/conversion/e0edc160-d87e-40aa-b0e6-555b08583d3e-medi…",
"url": "https://kick.com/korekore_ch"
},
"thumbnail_url": "https://images.kick.com/video_thumbnails/XFe3ftHjLy1x/kc6PlsgTUpf4/720.webp"
},
{
"id": "01a171ff-7328-70a7-ba8d-576d11ad68c3",
"title": "AURORA(1) vs G2(0) | BO3 | - PGL Masters Bucharest 2026",
"viewers": 25670,
"started_at": "2026-10-25T07:38:49Z",
"language": "tr",
"mature": false,
"category": {
"id": 1552,
"name": "Counter-Strike 2",
"slug": "counter-strike-2"
},
"channel": {
"id": 61474127,
"slug": "maj3r",
"username": "MAJ3R",
"profile_picture": "https://files.kick.com/images/user/62615924/profile_image/conversion/3fadc794-02c5-4d9b-9db0-b366fa461b98-medi…",
"url": "https://kick.com/maj3r"
},
"thumbnail_url": "https://images.kick.com/video_thumbnails/roKOC4RFmGCH/fg0SJgqmv0X4/720.webp"
}
],
"next_cursor": "eyJvIjozfQ"
}
}
| Field | Filled in, of 24 checked | Values in the sample |
|---|---|---|
| id | 24 | |
| title | 24 | |
| viewers | 24 | 2,461 to 29,388, median 4,401 |
| started_at | 24 | 2026-10-24 to 2026-10-26 |
| language | 24 | |
| mature | 24 | true in 4 of 24 |
| category | 24 | |
| channel | 24 | |
| thumbnail_url | 24 | images.kick.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| sort | string | No | Ordering: viewer_count_desc is most viewers first (default), featured is Kick's featured order Allowed values: viewer_count_desc, featured. | viewer_count_desc | |
| language | string | No | Stream language code such as en, ja, es, pt-BR, optionally with a region (2 to 3 letters, then an optional 2 to 4 letter region); see kick-languages for the codes Kick lists | ja | |
| category_id | integer | No | Category id from kick-subcategories' or kick-search-categories' own id field | 15 | |
| limit | integer | No | 24 | Page size, 1 to 100; defaults to 24 | 24 |
| after | string | No | Previous response's next_cursor; omit for the first page | eyJvIjoxfQ | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kick/livestreams?sort=viewer_count_desc&language=en&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"sort": "viewer_count_desc",
"livestreams": [
{
"id": "01a17349-8728-74fa-972f-093056e74b43",
"title": "【コレコレ】KICK闇ニュース!相談やSNSトラブル解決【ミラー、録画禁止】",
"viewers": 93457,
"started_at": "2026-10-25T13:39:21Z",
"language": "ja",
"mature": false,
"category": {
"id": 15,
"name": "Just Chatting",
"slug": "just-chatting"
},
"channel": {
"id": 57035257,
"slug": "korekore_ch",
"username": "korekore_ch",
"profile_picture": "https://files.kick.com/images/user/58166499/profile_image/conversion/e0edc160-d87e-40aa-b0e6-555b08583d3e-medi…",
"url": "https://kick.com/korekore_ch"
},
"thumbnail_url": "https://images.kick.com/video_thumbnails/XFe3ftHjLy1x/kc6PlsgTUpf4/720.webp"
},
{
"id": "01a171ff-7328-70a7-ba8d-576d11ad68c3",
"title": "AURORA(1) vs G2(0) | BO3 | - PGL Masters Bucharest 2026",
"viewers": 25670,
"started_at": "2026-10-25T07:38:49Z",
"language": "tr",
"mature": false,
"category": {
"id": 1552,
"name": "Counter-Strike 2",
"slug": "counter-strike-2"
},
"channel": {
"id": 61474127,
"slug": "maj3r",
"username": "MAJ3R",
"profile_picture": "https://files.kick.com/images/user/62615924/profile_image/conversion/3fadc794-02c5-4d9b-9db0-b366fa461b98-medi…",
"url": "https://kick.com/maj3r"
},
"thumbnail_url": "https://images.kick.com/video_thumbnails/roKOC4RFmGCH/fg0SJgqmv0X4/720.webp"
}
],
"next_cursor": "eyJvIjozfQ"
}
}Request schema
No body schema
Response schema
#/definitions/kick.livestreamsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | kick.LivestreamsResponse | No | ||||
| data.category_id | integer | No | ||||
| data.language | string | No | ||||
| data.livestreams | array | No | ||||
| data.livestreams[].category | kick.CategoryRef | No | ||||
| data.livestreams[].category.id | integer | No | ||||
| data.livestreams[].category.name | string | No | ||||
| data.livestreams[].category.slug | string | No | ||||
| data.livestreams[].channel | kick.ChannelRef | No | ChannelRef record, 6 fields: id, profile_picture, slug, url, username, verified. Described under Get a Kick video by its uuid API. | |||
| data.livestreams[].id | string | No | ||||
| data.livestreams[].language | string | No | ||||
| data.livestreams[].mature | boolean | No | ||||
| data.livestreams[].started_at | string | No | ||||
| data.livestreams[].tags | array | No | ||||
| data.livestreams[].thumbnail_url | string | No | ||||
| data.livestreams[].title | string | No | ||||
| data.livestreams[].viewers | integer | No | ||||
| data.next_cursor | string | No | ||||
| data.sort | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/kick/livestreams?sort=viewer_count_desc&language=en&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"