Skip to content
ScrapeField

Search TikTok

Search TikTok by keyword. Returns videos by default; type=user returns accounts and type=hashtag returns hashtags. Use this for trend research and creator discovery when you do not already have a username.

3–13 credits
GEThttps://api.scrapefield.com/v1/tiktok/search
Try itno key needed3–13 credits on a real call · 0 here
https://api.scrapefield.com/v1/tiktok/search?query=ferrari

In your code

const params = new URLSearchParams({
  "query": "sourdough starter"
});

const res = await fetch(`https://api.scrapefield.com/v1/tiktok/search?${params}`, {
  headers: { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` },
});

const { data, meta } = await res.json();
console.log(data, meta.credits_charged);

Parameters

Parameters
ParameterWhat it does
query
string · required
What to search for.
type
string
What kind of result to return.
video · user · hashtag, default video
limit
integer
At most this many results, 1–30. A page can hold fewer while next_cursor is set: read until it is null.
1–30, default 30
cursor
string
The meta.next_cursor from the previous page. Omit for the first page.
fresh
boolean
Skip the cache and fetch now. Charged normally. Not available on trial credits — buy any pack to unlock it.
default false

Response

Returns an array of tiktok_video — or, with type, tiktok_profile for user and tiktok_hashtag for hashtag. This is the demo’s answer, the one the playground above returns, in full rather than abbreviated — including the fields that come back null, because a field is null when the platform does not show it and you should know which ones those are before you build on them. A call with your key returns the account you ask for.

{
  "data": [
    {
      "id": "7474971162903189453",
      "share_url": "https://www.tiktok.com/@creator0/video/7474971162903189453",
      "username": "creator0",
      "video_description": "Three days of proofing and it finally behaved. #sourdough #filmphoto #fyp",
      "create_time": "2026-08-05T17:57:32.000Z",
      "duration": 32,
      "cover_image_url": "https://cdn.example/tt/7474971162903189453.jpeg",
      "play_url": "https://cdn.example/tt/7474971162903189453.mp4",
      "view_count": 2697338,
      "like_count": 178949,
      "comment_count": 4165,
      "share_count": 3157,
      "favorites_count": 19324,
      "hashtag_names": [
        "sourdough",
        "filmphoto",
        "fyp"
      ],
      "region_code": "US",
      "music": {
        "id": "7227658933714784352",
        "title": "original sound - creator0",
        "author": "creator0",
        "original": true
      },
      "duet_enabled": true,
      "stitch_enabled": true
    },
    {
      "id": "7411868529043854809",
      "share_url": "https://www.tiktok.com/@creator1/video/7411868529043854809",
      "username": "creator1",
      "video_description": "Same corner, four years apart. #buildinpublic #citywalk #fyp",
      "create_time": "2026-06-24T19:20:11.000Z",
      "duration": 99,
      "cover_image_url": "https://cdn.example/tt/7411868529043854809.jpeg",
      "play_url": "https://cdn.example/tt/7411868529043854809.mp4",
      "view_count": 3585541,
      "like_count": 127299,
      "comment_count": 5541,
      "share_count": 877,
      "favorites_count": 1161,
      "hashtag_names": [
        "buildinpublic",
        "citywalk",
        "fyp"
      ],
      "region_code": "US",
      "music": {
        "id": "7227397580557393804",
        "title": "original sound - creator1",
        "author": "creator1",
        "original": true
      },
      "duet_enabled": true,
      "stitch_enabled": false
    }
  ],
  "meta": {
    "request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
    "credits_charged": 3,
    "credits_remaining": 74218,
    "cached": false,
    "fetched_at": "2026-09-20T09:12:03Z",
    "next_cursor": "eyJwIjoxLCJzIjoiYTNmOSJ9"
  }
}

Fields of tiktok_video

A TikTok video. Named after TikTok's Display and Research APIs.

Fields
FieldWhat it is
id
string
TikTok's numeric id — the number at the end of the URL.
share_url
URL
The video.
username
string
Who posted it.
video_description
string · or null
The caption.
create_time
time, ISO 8601 UTC · or null
When it was posted. null when the source does not say.
duration
integer · or null
Seconds. null when the source does not give it.
cover_image_url
URL · or null
The video's cover image. On TikTok's CDN. TikTok signs the link, and it can stop working within hours, so fetch the file soon. We do not rehost media.
play_url
URL · or null
The video file. On TikTok's CDN. TikTok signs the link, and it can stop working within hours, so fetch the file soon. We do not rehost media.
view_count
integer · or null
null when the source does not give it.
like_count
integer · or null
null when the source does not give it.
comment_count
integer · or null
null when the source does not give it.
share_count
integer · or null
null when the source does not give it.
favorites_count
integer · or null
Saves. null where the page does not show them.
hashtag_names
array of strings
Without the #.
region_code
string · or null
Where it was posted from, ISO 3166-1 alpha-2.
music
object · or null
The sound.
music.id
string
TikTok's id for the sound.
music.title
string
The sound's name, as TikTok shows it.
music.author
string · or null
Who the sound is credited to.
music.original
boolean
An original sound rather than a track.
duet_enabled
boolean · or null
null where that is not known.
stitch_enabled
boolean · or null
null where that is not known.

Fields of tiktok_profile

A TikTok account. Named after TikTok's Display and Research APIs.

Fields
FieldWhat it is
username
string
Without the @.
display_name
string · or null
The display name.
bio_description
string · or null
The bio.
bio_url
URL · or null
The link in the bio.
avatar_url
URL · or null
The profile picture. On TikTok's CDN. TikTok signs the link, and it can stop working within hours, so fetch the file soon. We do not rehost media.
profile_url
URL
The profile.
is_verified
boolean
Whether the account has the verified badge.
follower_count
integer · or null
null when the source does not give it.
following_count
integer · or null
null when the source does not give it.
likes_count
integer · or null
Likes across all their videos. null when the source does not give it.
video_count
integer · or null
null when the source does not give it.

Fields of tiktok_hashtag

A TikTok hashtag, from a search. Named after TikTok's Display and Research APIs.

Fields
FieldWhat it is
hashtag_name
string
Without the #.
url
URL
The hashtag page.
video_count
integer · or null
How many videos use it.
view_count
integer · or null
Views across its videos.

What it costs

3 credits (13 for type=hashtag) per successful call, whether we fetch it or serve it from cache — you pay for the answer, not for how we produced it. Responses are cached for 1 hour and a cached one tells you when the data was actually fetched. A call we fail costs 0 and is refunded automatically.

On the smallest pack that is $2.34 per 1,000 calls; on the largest, $1.32. The full table.

What people build with it

Questions

How much does the TikTok search API cost?

From 3 to 13 credits a call, depending on what you ask for: $2.34 to $10.14 per 1,000 calls on the smallest pack, $1.32 to $5.72 on the largest. A call that fails costs nothing, and the refund is automatic. A cached answer costs the same as a fresh one. Credits are bought in packs and never expire; there is no plan.

Do I need a TikTok account, a login or cookies?

No. You need a key from us and nothing from TikTok. We never take a customer's login, cookies or session, at any price, and no account of yours is ever at risk.

Can I try it without signing up?

Yes. Add demo=true and leave the key out, or press Send request in the playground on this page. The demo answers with a real answer about Ferrari, captured once a week, in exactly the shape a live call returns, whatever you ask, and charges nothing.

How fresh is the data?

An answer is kept for up to 1 hour, and a cached one says when it was fetched, in meta.fetched_at. Add fresh=true to fetch it again now, at the same price; it needs any purchase, not the trial.

What does it return?

A list of tiktok_video objects. Its fields are named after TikTok's Display and Research APIs. A field is null when TikTok does not show it, never missing. Every field is described on this page.

How do I get more than one page?

Pass meta.next_cursor back as cursor, and stop when it is null. Each page is a call, priced the same. A cursor lasts as long as the answer it belongs to is cached.

Can an AI agent call it?

Yes: it is the MCP tool search_tiktok on our MCP server, with the same parameters, answer and price. Without a key, the tool answers from the demo.