Appearance
Search by Keyword
GET /v1/tiktok/search/keyword
Searches for TikTok videos by keyword or phrase , the general video search across all of TikTok. Returns search_item_list, an array of objects each containing aweme_info with aweme_id, desc (caption), statistics (play_count, digg_count/likes, comment_count, share_count), video info, and author details. Paginate with cursor. TikTok may return duplicate results.
Authentication
All requests require the x-api-key header. Get your key at scrapecreators.com.
Query Parameters
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
query | string | yes | Keyword to search for | |
date_posted | enum(yesterday, this-week, this-month, last-3-months, last-6-months, all-time) | no | Time Frame | all-time |
sort_by | enum(relevance, most-liked, date-posted) | no | Sort by | relevance |
region | string | no | Note, this doesn't filter the tiktoks only in a specfic region, it puts the proxy there. Use it in case you want to scrape posts only available for some country. Use 2 letter country codes like US, GB, FR, etc | |
cursor | number | no | Cursor to get more videos. Get 'cursor' from previous response. | 10 |
trim | boolean | no | Set to true to get a trimmed response |
Example Request
curl
bash
curl 'https://api.scrapecreators.com/v1/tiktok/search/keyword?query=<query>' \
-H 'x-api-key: $SCRAPECREATORS_API_KEY'Node / TypeScript
js
const params = new URLSearchParams({ query: '...' });
const res = await fetch(`https://api.scrapecreators.com/v1/tiktok/search/keyword?${params}`, {
headers: { 'x-api-key': process.env.SCRAPECREATORS_API_KEY }
});
const data = await res.json();
console.log(data);Python
python
import os, requests
r = requests.get(
'https://api.scrapecreators.com/v1/tiktok/search/keyword',
headers={'x-api-key': os.environ['SCRAPECREATORS_API_KEY']},
params={'query': '...'},
)
r.raise_for_status()
print(r.json())CLI
bash
scrapecreators tiktok search-keyword --helpExample Response
json
{
"search_item_list": [
{
"aweme_id": "7268287584244124971",
"desc": "Tìm 'musclesandnursing'",
"desc_language": "vi",
"region": "US",
"statistics": {
"aweme_id": "7268287584244124971",
"collect_count": 6978,
"comment_count": 187,
"digg_count": 481608,
"download_count": 458,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"play_count": 1282645,
"repost_count": 0,
"share_count": 2721,
"whatsapp_share_count": 56
},
"video": {
"CoverTsp": 0,
"ai_dynamic_cover": {
"uri": "tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121~tplv-tiktokx-origin.image?dr=9229&refresh_token=f517ff94&x-expires=1750438800&x-signature=D3imLVwGqpA9zsbLqnvdO%2FafuVs%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=c1333099&idc=no1a&sc=dynamic_cover&biz_tag=tt_video&s=SEARCH"
],
"url_prefix": null
},
"ai_dynamic_cover_bak": {
"uri": "tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121~tplv-tiktokx-origin.image?dr=9229&refresh_token=f517ff94&x-expires=1750438800&x-signature=D3imLVwGqpA9zsbLqnvdO%2FafuVs%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=c1333099&idc=no1a&sc=dynamic_cover&biz_tag=tt_video&s=SEARCH"
],
"url_prefix": null
},
"animated_cover": {
"uri": "tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/094a5ba1ff174727a9a483476a8d1642_1692280121~tplv-tiktokx-origin.image?dr=9229&refresh_token=f517ff94&x-expires=1750438800&x-signature=D3imLVwGqpA9zsbLqnvdO%2FafuVs%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=c1333099&idc=no1a&sc=dynamic_cover&biz_tag=tt_video&s=SEARCH"
],
"url_prefix": null
},
"big_thumbs": [],
"bit_rate": [
{
"HDR_bit": "",
"HDR_type": "",
"bit_rate": 1225469,
"dub_infos": null,
"fid_profile_labels": "",
"fps": 30,
"gear_name": "normal_540_0",
"is_bytevc1": 0,
"play_addr": {
"data_size": 3503925,
"file_cs": "c:0-20264-cec0",
"file_hash": "2e54ea91b0d4db38c7e631f3e5d316a0",
"height": 1024,
"uri": "v12025gd0000cjf2aabc77u3cqbmfgsg",
"url_key": "v12025gd0000cjf2aabc77u3cqbmfgsg_h264_540p_1225469",
"url_list": [
"https://v45.tiktokcdn-eu.com/9376fcf5b7e4e4056ac2238e8a50a2d8/68559dc0/video/tos/maliva/tos-maliva-ve-0
... (truncated)Credits
Most ScrapeCreators endpoints consume 1 credit per successful response. Some heavier endpoints (transcripts, AI-driven enrichment, ad detail lookups) may cost more. Check GET /v1/credit-balance for your remaining balance.
Errors
| Status | Meaning | Action |
|---|---|---|
| 200 | Success. | Use the JSON payload. |
| 400 | Invalid or missing parameter. | Verify required parameters and value format. |
| 401 | Missing or invalid x-api-key. | Pass a valid API key in the header. |
| 402 | Out of credits. | Top up at scrapecreators.com or wait for plan reset. |
| 404 | Resource not found or private. | Confirm the handle, URL, or id and that the resource is public. |
| 429 | Rate limited. | Backoff and retry with exponential delay. |
| 500 | Server error or upstream platform failure. | Retry with backoff; report persistent errors to support. |