TikTok API endpoint
Searches the mobile app's LIVE surface by keyword: `data` of `{type, anchor}` entries with `feedback_type` set to `live`, plus `cursor` and `has_more`. `keyword` is required; without it the gateway answers a valid but empty envelope. This is the API's first LIVE endpoint.
/tiktok/mobile/live/searchSearches the mobile app's LIVE surface by keyword: data, where each entry is {type, anchor} and anchor carries the live room's room_id, nickname, avatar covers and viewer counters, plus cursor and has_more. feedback_type is the literal live. The measured keyword=lofi&count=10 call returned 10 anchors with has_more: 0, cursor: 10.
keyword is required. Without it the gateway answers a valid but empty envelope (HTTP 200, data: [], status_code: 0) rather than an error, so a keyword-less request can never yield a usable page and the API rejects it up front.
Query parameters:
keyword: required. Search keyword. Example: lofi.count: optional. Results to request (0 = app default, max 50). Default: 0.| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| keyword | string | Yes | Search keyword | lofi | |
| count | integer | No | Results to request (0 = app default, max 50) |
curl -X GET "https://api.crawlora.net/api/v1/tiktok/mobile/live/search?keyword=lofi&count=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"status_code": 0,
"data": [
{
"type": 1,
"anchor": {
"room_id": "1",
"nickname": "example",
"avatar_thumb": {
"url_list": [
"https://example.invalid/avatar.jpg"
]
},
"room_view_stats": {
"display_value": 1
}
}
}
],
"has_more": 0,
"cursor": 10,
"guide_search_words": [],
"global_doodle_config": {},
"extra_data": {},
"feedback_type": "live",
"extra": {
"logid": "example",
"now": 1792283000
},
"log_pb": {
"impr_id": "example"
},
"status_msg": ""
}
}Request schema
No body schema
Response schema
#/definitions/tiktokmobile.liveSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tiktokmobile.LiveSearchResponse | No | ||||
| data.cursor | integer | No | ||||
| data.data | array | No | ||||
| data.extra | unknown | No | ||||
| data.extra_data | unknown | No | ||||
| data.feedback_type | string | No | ||||
| data.global_doodle_config | unknown | No | ||||
| data.guide_search_words | unknown | No | ||||
| data.has_more | boolean | No | ||||
| data.log_pb | unknown | No | ||||
| data.status_code | integer | No | ||||
| data.status_msg | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Invalid input | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/tiktok/mobile/live/search?keyword=lofi&count=10" \
-H "x-api-key: $CRAWLORA_API_KEY"