TikTok Search Scraper - [Videos, Hashtags & Users] avatar

TikTok Search Scraper - [Videos, Hashtags & Users]

Pricing

Pay per event + usage

Go to Apify Store
TikTok Search Scraper - [Videos, Hashtags & Users]

TikTok Search Scraper - [Videos, Hashtags & Users]

Scrape TikTok keyword, top, hashtag, and user search results. Provider-backed, no cookies required, perfect for SEO and AI agents, MCP optimized.

Pricing

Pay per event + usage

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

2

Monthly active users

9 days ago

Last modified

Share

TikTok Search Scraper - Videos, Hashtags & Users

TikTok Search Scraper is an Apify Actor for keyword, top, hashtag, and user search across TikTok. It accepts search queries, hashtags, and creator-name or brand-name user queries, then stores one normalized dataset record per returned search result. Those records can represent videos, top search items, hashtags, or user profiles, with useful fields such as video IDs and URLs, captions, creator usernames, profile URLs, follower counts, and engagement metrics when returned. The actor is provider-backed, requires no cookies, and is usable through Apify MCP for natural-language workflows.

Best fit and connected workflows

This actor fits workflows that start with TikTok discovery and end with targeted enrichment or downstream analysis. Common routing patterns include:

  • Search by keyword to collect TikTok videos for content research, social listening, or trend triage.
  • Search by hashtag to gather topical video rows around a subject or campaign term.
  • Search by user query to identify creator profiles and public profile metrics.
  • Use searchType: all when you want keyword videos, top results, and user profiles from the same search query.
  • Send discovered public profile URLs or IDs into TikTok Profile Posts Scraper - Creator Feed Data when you want creator feed enrichment for selected profiles.
  • Use Send discovered public profile URLs or IDs into TikTok Profile Videos Scraper when you want profile video enrichment for selected creators.

Practical scenario

Maya is preparing a creator shortlist for a running-shoe campaign. She starts with searchQueries: ["nike running"], searchType: "keyword", and userQueries: ["nike"]. The actor returns a first page of video rows and profile rows. Maya reviews videoUrl, caption, authorUsername, playCount, likeCount, and profileUrl to separate creator-led videos from brand-owned profiles. Her next action is to open the strongest profile records in a downstream profile scraper for deeper creator review.

Inputs

FieldTypePurpose
searchQueriesarray of stringsKeywords or phrases to search on TikTok. Used with searchType.
searchTypestringSearch surface for searchQueries: keyword, top, users, or all.
keywordQueriesarray of stringsAlways runs keyword video search for these queries.
topQueriesarray of stringsAlways runs top search for these queries. Top search can include videos and photo carousels.
hashtagsarray of stringsHashtags to search, with or without #.
userQueriesarray of stringsCreator profile searches by keyword, brand name, or person name.
providerOrderstringProvider preference: ScrapeCreators first or SociaVault first, or single-provider modes.
maxResultsPerQueryintegerMaximum normalized rows saved per query or hashtag.
maxPagesPerQueryintegerSafety cap for provider pagination per search target.
regionstringAlpha-2 country code for search localization when supported.
datePostedstringTime filter for keyword search.
publishTimestringTime filter for top search. Defaults to datePosted when omitted.
sortBystringSort order for keyword and top search where supported.
trimbooleanRequests trimmed provider responses when supported.
includeRawDatabooleanAdds raw provider payloads to each row for debugging and custom parsing.

Focused input example

{
"searchQueries": ["nike running"],
"searchType": "keyword",
"hashtags": ["running"],
"userQueries": ["nike"],
"providerOrder": "scrapecreators-first",
"region": "US",
"datePosted": "all-time",
"sortBy": "relevance",
"maxResultsPerQuery": 25,
"maxPagesPerQuery": 3,
"trim": true,
"includeRawData": false
}

Output fields

The default dataset stores normalized rows with a shared shape across videos, top results, hashtag results, and user profiles.

FieldMeaning
recordTypevideo, top_result, or user.
searchTypekeyword, top, hashtag, or users.
providerProvider that returned the row.
querySearch query or hashtag.
hashtagHashtag for hashtag search rows.
resultPositionPosition in the normalized result list.
pageProvider page used to fetch the row.
cursorCursor used for that provider page.
contentTypeTikTok content type when returned.
videoId, videoUrlVideo identifiers and URLs.
caption, createdAtVideo text and creation timestamp.
authorUsername, authorNickname, authorVerifiedCreator metadata for video rows.
username, profileUrl, nickname, bio, verifiedProfile metadata for user rows.
playCount, likeCount, commentCount, shareCount, collectCountVideo engagement metrics when returned.
followerCount, followingCount, heartCount, videoCount, privateAccountPublic profile metrics when returned.
hashtags, musicId, musicTitle, musicAuthorTag and sound metadata when returned.
scrapedAtTimestamp when the row was saved.

Illustrative dataset record

{
"recordType": "video",
"searchType": "keyword",
"provider": "scrapecreators",
"query": "nike running",
"resultPosition": 1,
"page": 1,
"cursor": 10,
"contentType": "video",
"videoId": "7452069943757114646",
"videoUrl": "https://www.tiktok.com/@creator/video/7452069943757114646",
"caption": "New running shoes today",
"createdAt": "2026-01-01T00:00:00.000Z",
"authorUsername": "creator",
"authorNickname": "Creator Name",
"authorVerified": true,
"playCount": 2932976,
"likeCount": 197747,
"commentCount": 347,
"shareCount": 26467,
"collectCount": 10436,
"scrapedAt": "2026-06-11T00:00:00.000Z"
}

How it works

The actor is built as a provider-backed TikTok search scraper and uses the configured provider order to fetch results. It supports ScrapeCreators primary with SociaVault fallback, SociaVault primary with ScrapeCreators fallback, and single-provider modes. Results are normalized into the default dataset, while OUTPUT and RUN_SUMMARY records in the default key-value store provide terminal run details for automation and agent workflows. The actor also supports trim for provider payload handling and includeRawData for storing raw provider data alongside normalized rows.

Pricing

This actor uses Pay per event pricing on the Apify platform. The charged events are:

  • apify-actor-start: charged once when the actor starts after input validation.
  • search-result-scraped: charged for each TikTok search result row successfully saved to the dataset.

For example, if a run saves twenty-five result rows, the start event is charged once and the per-row event is charged twenty-five times. The Apify platform usage shown in the run details and the live Pricing tab determines the full cost view, including platform usage alongside event charges.

Use with AI agents (MCP)

This Actor is available through Apify MCP as a tool for TikTok search discovery. The exact Actor identity is khadinakbar/tiktok-search-scraper.

Tool description: use it to search TikTok by keyword, top search, hashtag, or user query and return normalized dataset rows with videos, profiles, metrics, and metadata for downstream agent steps.

Search TikTok for "nike running" and return keyword videos plus creator profiles from the first page. Keep the result set focused, then surface the top candidate profiles for follow-up enrichment.

Output interpretation:

  • Read dataset rows from the default dataset to inspect videos, top results, hashtags, or user profiles.
  • Use runSummary for provider usage, counts, and terminal status in agent pipelines.
  • Use runOutput for machine-readable terminal outcome details, including useful result counts and PPE charge counts.

Provenance and scope:

  • Rows are provider-backed and normalized into the dataset.
  • Search scope follows the selected inputs: keyword, top, hashtag, user, or combined search routing.
  • includeRawData can carry raw provider payloads for debugging and custom parsing.

Pagination and cost guidance:

  • maxResultsPerQuery controls how many normalized rows are saved per query or hashtag.
  • maxPagesPerQuery limits provider pagination per target.
  • Larger result targets increase per-row event counts and therefore total PPE usage.

Apify API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor("khadinakbar/tiktok-search-scraper").call({
searchQueries: ["nike running"],
searchType: "keyword",
hashtags: ["running"],
userQueries: ["nike"],
region: "US",
maxResultsPerQuery: 25,
maxPagesPerQuery: 3,
providerOrder: "scrapecreators-first",
includeRawData: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results and outcome guidance

Choose the narrowest search input that matches the task. Use searchQueries for topic exploration, hashtags for tag-based discovery, and userQueries for creator lookup. When you need a broader sweep from one term, searchType: "all" combines keyword, top, and user search for each query. Use region when localization matters, and use sortBy, datePosted, and publishTime to shape the returned order where the provider supports it. For larger workflows, start with a lower maxResultsPerQuery, review the returned profiles or videos, and then execution enrichment on the selected records.

Continue the workflow

Design note

I found that the dataset schema exposes both video and user search fields in one normalized record shape, with recordType distinguishing the row type and scrapedAt always present on saved rows. That makes the output easy to route in downstream automation.

FAQ

Use searchQueries with searchType: "keyword" when you want video results around a topic. Use userQueries when you want creator profiles returned as user rows.

When should I use searchType: "all"?

Use searchType: "all" when you want the same query to produce keyword videos, top results, and user profile matches in one run.

How do I move from discovery to enrichment?

After this Actor returns public profile URLs or IDs, send those records into TikTok Profile Posts Scraper - Creator Feed Data or TikTok Profile Videos Scraper for profile-focused follow-up.

How do I keep pagination focused?

Set maxPagesPerQuery to a small value for discovery runs, then increase it only for broader collection tasks. Pair it with maxResultsPerQuery to shape the final dataset size.

How do I inspect run details in automation?

Read the default dataset for result rows, then read RUN_SUMMARY and OUTPUT from the default key-value store for provider usage, counts, and terminal outcome data.

Responsible use

Use the actor for lawful research, monitoring, and enrichment workflows that respect TikTok access rules and the rights of others. Review the returned public data in the context of your own compliance, privacy, and platform obligations before storing or acting on it.