Skip to content

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

NameTypeRequiredDescriptionExample
querystringyesKeyword to search for
date_postedenum(yesterday, this-week, this-month, last-3-months, last-6-months, all-time)noTime Frameall-time
sort_byenum(relevance, most-liked, date-posted)noSort byrelevance
regionstringnoNote, 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
cursornumbernoCursor to get more videos. Get 'cursor' from previous response.10
trimbooleannoSet 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 --help

Example 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

StatusMeaningAction
200Success.Use the JSON payload.
400Invalid or missing parameter.Verify required parameters and value format.
401Missing or invalid x-api-key.Pass a valid API key in the header.
402Out of credits.Top up at scrapecreators.com or wait for plan reset.
404Resource not found or private.Confirm the handle, URL, or id and that the resource is public.
429Rate limited.Backoff and retry with exponential delay.
500Server error or upstream platform failure.Retry with backoff; report persistent errors to support.