Endpoint Playground
Searches TikTok photo posts with the app's own Photos-tab call and returns the page unmodified. Rows live in `search_item_list` (each row's `aweme_info` carries `image_post_info.images`, the carousel images) while `aweme_list` is an empty array; `feedback_type` is `"photo_tab"`. `keyword` is required; `count` is bounded at 50 (default 10, the app's value) and `offset` is forwarded as the app's row offset. `sort_type` (0 relevance, 1 like count, 3 date posted) and `publish_time` (recency window in days) are the app's filter-sheet controls. The route is signature-validated, so it needs device-backed request signing to be configured for the deployment and fails with an error instead of returning an empty page when it is not.
curl 'https://api.crawlora.net/api/v1/tiktok/mobile/search/photos?keyword=lofi' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| keyword | string | Yes | lofi | Search keyword |
| count | integer | No | Rows per page, bounded at 50 (default 10) | |
| offset | integer | No | Row offset forwarded to the app route (first page only in guest mode) | |
| sort_type | integer | No | Sort: 0 relevance, 1 like count, 3 date posted | |
| publish_time | integer | No | Recency window in days: 0 all, 1, 7, 30, 90, 180 | |
| search_source | string | No | Forwarded search source (default tab_search) |
{
"code": 200,
"msg": "OK",
"data": {
"search_item_list": [
{
"aweme_info": {
"aweme_id": "7516855864041540878",
"desc": "#fyp #foryoupage #quran #lofi",
"image_post_info": {
"images": [
{
"display_image": {
"url_list": [
"https://p16-sign.example/...jpeg"
]
}
}
]
}
},
"search_aweme_info": {
"has_creation_intention": false
}
}
],
"aweme_list": [],
"cursor": 10,
"has_more": 1,
"feedback_type": "photo_tab",
"response_cropped": 1,
"status_code": 0
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.