Tiktok Search Scraper avatar

Tiktok Search Scraper

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Tiktok Search Scraper

Tiktok Search Scraper

TikTok Search Scraper extracts videos, creators, hashtags, sounds, captions, engagement metrics, and other data from TikTok search results. Automate content discovery, keyword research, trend analysis, competitor monitoring, influencer research, and TikTok marketing intelligence.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

ScraperForge

ScraperForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

TikTok Search Scraper — Keyword Search with Region, Sort & Publish-Time Targeting

Search TikTok by keyword and export every matching video as structured data: caption, engagement counts, the creator's full audience stats, the sound, hashtags with positions, and direct media addresses including playable and downloadable video links.

Target one of 27 countries, sort by relevance, likes or recency, narrow to a publish-time window, and let unlimited mode run until TikTok stops returning results.


What is TikTok Search Scraper?

TikTok's search is where intent lives — people type what they actually want to know. But the results are an endless scroll with no export, and TikTok's public APIs do not offer open keyword search.

This Actor runs the search programmatically. Each keyword is queried independently, results are paged, and every video is normalised into a flat record with nested objects for video, music, stats and author.

Two design details matter. First, the region is applied through cookies and Accept-Language headers, not just a query parameter — so a DE run returns genuinely German results rather than US results wearing a flag. Second, hashtag enrichment fills in cover images and descriptions that TikTok's search response leaves incomplete.


What data can you extract?

Video

url, id, desc (caption), createTime, searchTerm, isAd, adAuthorization, adLabelVersion, duetEnabled, stitchEnabled, duetDisplay, stitchDisplay, shareEnabled, itemCommentStatus, itemMute, privateItem, secret, originalItem, officalItem, warnInfo, takeDown, downloadSetting, locationCreated, diversificationLabels, effectStickers, stickersOnItem.

video

width, height, ratio, duration, cover, originCover, dynamicCover, shareCover, reflowCover, zoomCover, playAddr, downloadAddr, bitrate, bitrateInfo, codecType, encodedType, encodeUserTag, format, definition, videoQuality, volumeInfo, subtitleInfos.

stats

playCount, diggCount (likes), commentCount, shareCount.

authorStats

followerCount, followingCount, heart, heartCount, videoCount, diggCount.

music

id, title, authorName, album, original, duration, playUrl, coverLarge, coverMedium, coverThumb.

People and tags

author (username), nickname, authorId, authorSecId, avatarThumb, authorPrivate, challenges[] (hashtags), textExtra[] with hashtagName, hashtagId, userUniqueId, secUid, start, end, type, isCommerce.


For keyword and content research

Search results are TikTok's own answer to "what is good content for this term". Sorting by likes rather than relevance shows what resonated, not just what matched.

For influencer discovery

Every video carries authorStats — follower count, total hearts, video count. You can rank creators by engagement relative to audience size from a single export, without a second lookup.

For localised market research

Running one keyword across US, GB, DE and BR shows how differently a topic plays by market. Because region targeting is applied properly, the comparison is meaningful.

For campaign and brand monitoring

Search your brand term with a WEEK window and you have a rolling mentions report with engagement attached.

For ad-intelligence work

isAd, adAuthorization and adLabelVersion separate promoted content from organic — useful when measuring whether a topic is driven by paid pushes.

For sound and format research

music on every row shows which sounds recur in top results, and duetEnabled / stitchEnabled indicate which content invites participation.


How to search TikTok step by step

  1. Open the Actor and enter one or more Search Keywords.
  2. Set a Video Limit (minimum 30), or switch on Unlimited Mode.
  3. Pick a Region and, for fresh content, a Publish Time Filter.
  4. Choose a Sort Type: relevance, most liked, or newest.
  5. Click Start, then export the Output tab as JSON (recommended).

⬇️ Input

Example input

{
"keywords": ["chatgpt", "ai tools"],
"limit": 200,
"region": "US",
"sortType": "1",
"publishTime": "WEEK",
"includeSearchTerms": true
}

Input reference

FieldTypeDefaultDescription
keywordsarray— (required)One or more TikTok search terms. Each is searched independently.
limitinteger10How many videos to scrape. Minimum 30 applies; ignored when unlimited mode is on.
isUnlimitedbooleanfalseIgnore the limit and keep scraping until TikTok returns no more results.
regionstringUSTarget country (ISO alpha-2). 27 options: US, GB, CA, AU, IN, DE, FR, ES, IT, NL, JP, KR, BR, PT, MX, TR, RU, PL, ID, TH, VN, PH, AR, CN, TW, HK, BD. Applied via cookies and Accept-Language headers.
sortTypestring00 relevance, 1 most liked, 2 newest first.
publishTimestringALL_TIMEALL_TIME, YESTERDAY, WEEK, MONTH, THREE_MONTH, SIX_MONTH.
includeSearchTermsbooleantrueAdd searchTerm to each video so you know which keyword found it.
enrichHashtagsbooleantrueFill in missing hashtag cover and description fields (~0.5s per unique hashtag).
proxyConfigurationobjectApify ResidentialThis Actor always runs on Apify Residential proxies (3 retries); any Apify group you select is overridden. Custom proxy URLs are tried first (3 retries) with residential as fallback.

⬆️ Output

Example output (trimmed)

{
"url": "https://www.tiktok.com/@examplecreator/video/7558512477600861471",
"id": "7558512477600861471",
"desc": "5 ChatGPT prompts that actually saved me time this week #chatgpt #productivity",
"createTime": "1786451234",
"searchTerm": "chatgpt",
"author": "examplecreator",
"nickname": "Example Creator",
"authorId": "6789012345",
"avatarThumb": "https://p16-sign.tiktokcdn.com/…",
"stats": {
"playCount": 2140000,
"diggCount": 184000,
"commentCount": 3120,
"shareCount": 14800
},
"authorStats": {
"followerCount": 612000,
"followingCount": 184,
"heartCount": 18400000,
"videoCount": 412
},
"video": {
"width": 1080,
"height": 1920,
"duration": 47,
"definition": "720p",
"format": "mp4",
"cover": "https://p16-sign.tiktokcdn.com/…",
"playAddr": "https://v16-webapp.tiktok.com/…",
"downloadAddr": "https://v16-webapp.tiktok.com/…"
},
"music": {
"id": "7123456789012345678",
"title": "original sound",
"authorName": "examplecreator",
"original": true,
"duration": 47
},
"challenges": [{ "hashtagName": "chatgpt" }, { "hashtagName": "productivity" }],
"isAd": false,
"duetEnabled": true,
"stitchEnabled": true
}

Illustrative values — a live run returns current TikTok data.


Usage recipes

What is winning this week for a keyword

{
"keywords": ["ai tools"],
"limit": 200,
"sortType": "1",
"publishTime": "WEEK",
"region": "US"
}

Compare the same keyword across markets

Run once per region and merge the exports:

{
"keywords": ["skincare routine"],
"limit": 100,
"region": "GB"
}

Exhaustive brand sweep

{
"keywords": ["your brand name"],
"isUnlimited": true,
"sortType": "2",
"publishTime": "MONTH"
}

Unlimited mode runs until TikTok stops returning results — check the cost estimate before using it on a broad term.

Multi-keyword research with attribution

{
"keywords": ["meal prep", "meal prep ideas", "high protein meal prep"],
"limit": 150,
"includeSearchTerms": true
}

Pivot on searchTerm to see which phrasing surfaces the strongest content.

Faster runs

{
"keywords": ["travel hacks"],
"limit": 500,
"enrichHashtags": false
}

How does this compare to TikTok's official API?

TikTok's Research API provides query access to public content but is restricted to approved academic and non-profit researchers in eligible regions, with an application process. The Display API only reaches content of users who authorised your app, and the Commercial Content API covers advertising transparency rather than organic search.

None of them give a marketer open keyword search with region and recency targeting. This Actor reads the public search interface with no account, no application and no eligibility criteria.


Integrate and automate

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run = client.actor("scraperforge/tiktok-search-scraper").call(run_input={
"keywords": ["chatgpt"],
"limit": 100,
"sortType": "1",
"publishTime": "WEEK",
"region": "US",
})
for v in client.dataset(run["defaultDatasetId"]).iterate_items():
print(v["stats"]["playCount"], "|", v["author"], "|", v["desc"][:60])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });
const run = await client.actor('scraperforge/tiktok-search-scraper').call({
keywords: ['chatgpt'],
limit: 100,
region: 'US',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

REST API

curl -X POST "https://api.apify.com/v2/acts/scraperforge~tiktok-search-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"keywords":["chatgpt"],"limit":100,"region":"US"}'

n8n, Make, Zapier and AI agents

Call the Actor from n8n, Make, Zapier or an MCP-capable agent — for instance, an agent that researches a keyword weekly and drafts content angles from the top results.

Schedules and webhooks

Attach a Schedule for continuous keyword monitoring, and use webhooks or the Google Sheets / Airtable / Slack integrations to deliver results.


Pricing and what you are charged for

Pay-per-event: a small Actor-start charge plus a charge per video row delivered.

Because this Actor always runs on Apify Residential proxies, that proxy traffic is billed separately by the platform according to your plan. Be deliberate with Unlimited Mode — it runs until TikTok stops returning results.

Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run.


Limits, reliability and blocking

  • Minimum 30 videos per run when unlimited mode is off — that is the smallest batch TikTok's search returns reliably.
  • Unlimited mode has no ceiling. Check your cost estimate before using it on a broad keyword.
  • Residential proxies are enforced. Any Apify group you select is overridden; custom proxy URLs are tried first with residential as fallback.
  • Region influences results strongly but does not guarantee origin — it shapes what TikTok serves, not where every video was filmed.
  • enrichHashtags adds roughly 0.5s per unique hashtag. Turn it off for maximum speed on large runs.
  • Media addresses expireplayAddr, downloadAddr and covers are short-lived CDN links.
  • The comments field mirrors TikTok's search response and is typically empty; comment counts live in stats.commentCount.
  • Public content only. Private accounts and restricted videos are not returned.
  • Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for unlimited runs.

This Actor collects publicly available TikTok search results — the same videos any visitor can find. It does not log in, follow accounts, or access private content.

Videos, captions and sounds remain the intellectual property of their creators, and handles, avatars and bios are personal data. Use the data for research and analysis, credit creators where you reference them, and process personal data under GDPR and comparable rules. Media addresses are provided as metadata — downloading and reusing video files is your responsibility and subject to copyright. You are responsible for ensuring your use complies with TikTok's terms and applicable law.


❓ Frequently asked questions

Do I need a TikTok account or API key?

No. The Actor searches public TikTok content without authentication.

How do I get results for a specific country?

Set region to the ISO alpha-2 code. It is applied through cookies and Accept-Language headers for genuine local relevance.

What do the sort types mean?

0 relevance, 1 most liked, 2 newest first. They return meaningfully different result sets.

How do I get only recent videos?

Use publishTimeYESTERDAY, WEEK or MONTH.

Why is the minimum 30 videos?

That is the smallest batch TikTok's search reliably returns; asking for fewer would discard data already fetched.

Can I scrape everything for a keyword?

Yes — enable isUnlimited. Watch the cost estimate, since the run continues until TikTok stops serving results.

How do I know which keyword found a video?

Leave includeSearchTerms on; every row carries a searchTerm field.

Can I download the videos?

The Actor returns playAddr and downloadAddr. Fetching the files is up to you, and subject to TikTok's terms and copyright.

Which export format should I use?

JSON — video, music, stats and authorStats are nested objects.


Browse the full collection on the ScraperForge profile.


💬 Feedback

Need comment extraction, extra fields, or a custom TikTok research pipeline? Open an issue on the Issues tab of this Actor.