TikTok Video Search Scraper — Keywords, Hashtags & Filters avatar

TikTok Video Search Scraper — Keywords, Hashtags & Filters

Pricing

from $2.00 / 1,000 tiktok video founds

Go to Apify Store
TikTok Video Search Scraper — Keywords, Hashtags & Filters

TikTok Video Search Scraper — Keywords, Hashtags & Filters

Search TikTok videos by keyword or hashtag and get views, likes, comments, shares, saves, engagement rate, duration, hashtags, music and creator data. Filter by minimum views, likes or duration, cap videos per creator, sort by relevance or likes. No cookies.

Pricing

from $2.00 / 1,000 tiktok video founds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

55

Total users

24

Monthly active users

5 days ago

Last modified

Share

What is TikTok Video Search Scraper?

TikTok Video Search Scraper searches TikTok videos by keyword or hashtag and returns one clean record per video for researchers, marketers and AI agents. No TikTok login, cookies or proxy setup is needed. It accepts plain-text keywords in searchQueries or hashtags in hashtags, then returns fields such as videoUrl, caption, playCount, likeCount, commentCount, shareCount, collectCount, engagementRate, durationSeconds, creator identifiers, and timestamps. Each dataset row represents one TikTok video result, making the output useful for filtering, ranking, enrichment, and downstream analysis.

You giveYou getPrice
Keywords and/or hashtags, plus optional view, like, duration and per-creator filtersOne row per video: URL, caption, hashtags, views, likes, comments, shares, saves, engagement rate, duration, music and creator$2 per 1,000 videos (video-found), Apify platform usage included; filtered videos are free

Best fit and connected workflows

This Actor fits workflows that start with discovery and continue into deeper review:

  • Topic research from a keyword list, such as product terms, niche phrases, or campaign themes.
  • Hashtag exploration when you want the feed tied to a specific tag.
  • Performance screening with thresholds for views, likes, comments, shares, and duration.
  • Creator review based on the returned creator fields and video metrics.
  • AI agent workflows through Apify MCP, where a tool call returns structured TikTok video rows.

For downstream enrichment after discovery, use the returned TikTok records with:

  • When you want follower counts and bios for the creators you found, continue with the TikTok Profile Scraper and pass the authorUsername values.
  • When you want to know which hashtags are trending before you search, start with the TikTok Trending Hashtags Scraper and feed its hashtag_name values into hashtags.

Practical scenario

A social media manager starts with the keyword nike running and the hashtag running. She sets minPlays to surface higher-traffic videos, keeps includePhotoPosts enabled, and uses sortBy: most-liked for the keyword search. She sets maxVideosPerAuthor to 1 so the list covers many different creators. The Actor returns rows with authorUsername, caption, playCount, likeCount, shareCount, engagementRate, durationSeconds, and videoUrl. She reviews the creators and captions, then opens the most relevant video URLs to shortlist formats for a new campaign brief.

Input

Use plain text keywords in searchQueries, hashtags in hashtags, or both. At least one of those fields should contain values.

FieldTypeDescription
searchQueriesarray of stringsKeyword searches. Each keyword runs its own paginated search.
hashtagsarray of stringsTikTok hashtags to search, with or without #.
maxResultsPerQueryintegerMaximum videos to return and charge for per query, from 1 to 10000. Default: 50.
sortBystringKeyword search ordering: relevance, most-liked, or date-posted. Default: relevance.
datePostedstringKeyword recency window: yesterday, this-week, this-month, last-3-months, last-6-months, or all-time. Default: all-time.
regionstringTwo-letter region code such as US, GB, or DE. Default: US.
minPlaysintegerKeep videos with at least this many plays. Default: 0.
minLikesintegerKeep videos with at least this many likes. Default: 0.
minCommentsintegerKeep videos with at least this many comments. Default: 0.
minSharesintegerKeep videos with at least this many shares. Default: 0.
minDurationSecondsintegerKeep videos at least this long, in seconds. Default: 0.
maxDurationSecondsintegerKeep videos no longer than this many seconds. Default: 0.
includePhotoPostsbooleanIncludes TikTok image carousel posts when enabled. Default: true.
maxVideosPerAuthorintegerKeep at most this many videos per creator (0 = no limit). Default: 0.
maxPagesPerQueryintegerSafety cap on search pages per query. Default: 20.

Focused input example

{
"searchQueries": ["nike running"],
"hashtags": ["running"],
"maxResultsPerQuery": 25,
"sortBy": "most-liked",
"datePosted": "all-time",
"region": "US",
"minPlays": 10000,
"includePhotoPosts": true,
"maxVideosPerAuthor": 2
}

Output

The Actor stores normalized video rows in the default dataset. A run summary is stored in the key-value store under RUN_SUMMARY.

FieldTypeDescription
searchTypestringWhether the row came from a keyword or hashtag search.
querystringThe keyword or hashtag that returned the row.
hashtagstringThe hashtag searched, when applicable.
resultPositioninteger1-based rank within the query.
pageintegerSearch results page where the row was found.
isPhotoPostbooleanTrue for TikTok image carousel posts.
videoIdstringTikTok aweme/video ID.
videoUrlstringCanonical TikTok URL.
captionstringVideo caption text.
createdAtstringISO 8601 post timestamp.
durationSecondsintegerVideo length in seconds.
regionstringTikTok region code.
authorIdstringCreator numeric user ID.
authorSecUidstringCreator stable secUid.
authorUsernamestringCreator handle.
authorNicknamestringCreator display name.
authorVerifiedbooleanCreator verification flag.
authorAvatarUrlstringCreator avatar URL.
playCountintegerView count.
likeCountintegerLike count.
commentCountintegerComment count.
shareCountintegerShare count.
collectCountintegerSave count.
engagementRatenumber(likes + comments + shares) / plays, rounded to 4 decimals.
coverUrlstringThumbnail URL.
imageUrlsarrayImage URLs for photo posts.
hashtagsarrayHashtags found in the caption.
musicIdstringMusic track ID.
musicTitlestringMusic track title.
musicAuthorstringMusic track author.
scrapedAtstringISO 8601 scrape timestamp.

Example output record from a real run (avatar and cover URLs left out)

{
"searchType": "keyword",
"query": "nike running",
"resultPosition": 1,
"page": 1,
"isPhotoPost": false,
"videoId": "7694350820791291167",
"videoUrl": "https://www.tiktok.com/@justinehuang_/video/7694350820791291167",
"caption": "alphafly 4 hyper pink 💓⚡️🔥 #Running #alphafly #shoes #marathon #nike unreleased",
"createdAt": "2026-10-08T17:31:16.000Z",
"durationSeconds": 16,
"region": "US",
"authorId": "6737339887018705925",
"authorUsername": "justinehuang_",
"authorNickname": "justine",
"playCount": 4498,
"likeCount": 199,
"commentCount": 4,
"shareCount": 24,
"collectCount": 16,
"engagementRate": 0.0505,
"hashtags": ["running", "alphafly", "shoes", "marathon", "nike"]
}

How it works

The Actor runs a public TikTok search for each keyword or hashtag, reads result pages until it reaches maxResultsPerQuery or maxPagesPerQuery, removes duplicates, applies your filters and saves one row per video. Filters run before any charge. The output schema points to the default dataset plus the RUN_SUMMARY record with counts, filter stats and the stop reason.

Pricing

This Actor uses Pay per event with Apify platform usage included.

  • video-found (TikTok Video Found): $2 per 1,000 videos saved to the dataset after your filters.
  • apify-actor-start: a tiny charge once per run.
  • Filtered-out and duplicate videos are not charged.

Example: a run that saves 50 videos costs $0.10 in video events, plus the configured Actor-start event. maxResultsPerQuery caps each keyword or hashtag. See the Pricing tab for current rates.

Use with AI agents (MCP)

This Actor is available as an Apify Actor usable through Apify MCP. It is a structured tool for asking for TikTok video search results by keyword or hashtag and receiving normalized rows with engagement metrics, creator data, and URLs.

Exact Actor identity: khadinakbar/tiktok-video-search-scraper

Find TikTok videos for the keyword "protein recipe" and the hashtag "mealprep". Return rows with creator username, caption, plays, likes, comments, shares, engagement rate, duration, and video URL. Use a minimum plays filter of 10000 and keep photo posts if they match.

How to interpret the output:

  • Each dataset row represents one saved TikTok video record.
  • searchType, query, and hashtag show how the record was found.
  • engagementRate is calculated from likes, comments, and shares divided by plays.
  • scrapedAt and createdAt help separate post time from collection time.

Scope and pagination guidance:

  • maxResultsPerQuery sets the saved-video cap per keyword or hashtag.
  • maxPagesPerQuery sets a safety ceiling on search pages per query.
  • maxVideosPerAuthor spreads results across creators.
  • The default dataset is the primary machine-readable result set, and RUN_SUMMARY adds run-level telemetry.

Use via Apify API

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("khadinakbar/tiktok-video-search-scraper").call(run_input={
"searchQueries": ["nike running"],
"maxResultsPerQuery": 25,
"sortBy": "most-liked",
"minPlays": 10000,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["videoUrl"], item["playCount"], item["engagementRate"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/tiktok-video-search-scraper').call({
searchQueries: ['nike running'],
maxResultsPerQuery: 25,
sortBy: 'most-liked',
minPlays: 10000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(item.videoUrl, item.playCount, item.engagementRate);
}

Best results and outcome guidance

A useful setup is to keep the query focused, then add filters that match the signal you want to study. Keyword searches work well for topic discovery, while hashtags help when you already know the conversation tag. sortBy: most-liked is a practical choice for review queues, and datePosted narrows keyword searches to a recent window. When you want shorter clips, set maxDurationSeconds; when you want higher-engagement rows, use minPlays, minLikes, minComments, or minShares. Set maxVideosPerAuthor to 1 when you want a creator-discovery list with one video per account.

Continue the workflow

Design note

I found that the dataset contract includes collectCount and engagementRate, while the overview view highlights the more review-friendly fields authorUsername, caption, playCount, likeCount, commentCount, shareCount, engagementRate, durationSeconds, createdAt, and videoUrl. That shape makes the default dataset easy to scan while still preserving the fuller record for downstream use.

FAQ

When should I use keywords vs hashtags?

Use searchQueries for topic phrases such as product names, recipes, or campaign themes. Use hashtags when you want the TikTok hashtag feed for a tag such as fitness or running. You can also combine both in the same run.

How many videos can I expect per keyword?

It depends on the keyword. Popular topics fill maxResultsPerQuery quickly; narrow phrases or strict filters return fewer. Raise maxPagesPerQuery or relax the filters for more rows.

What is the difference between the dataset and RUN_SUMMARY?

The default dataset holds one row per saved TikTok video. RUN_SUMMARY stores execution diagnostics, filter stats, cost estimates, and stop reason information.

Can I use this Actor in an MCP workflow?

Yes. It is an Apify Actor usable through Apify MCP, which makes it a good fit for structured search-and-return workflows in agents.

How are video positions and pages represented?

resultPosition is the 1-based rank within a query, and page shows the search results page where the row was found.

Responsible use

Use the output in ways that respect TikTok's Terms of Service, applicable privacy and data-protection laws, and the rights of the creators whose public content appears in search results. Review your own obligations before storing, sharing, or automating decisions from the returned data.