TikTok Scraper: Hashtag, Search & Trending Videos, No Login avatar

TikTok Scraper: Hashtag, Search & Trending Videos, No Login

Pricing

from $0.80 / 1,000 videos

Go to Apify Store
TikTok Scraper: Hashtag, Search & Trending Videos, No Login

TikTok Scraper: Hashtag, Search & Trending Videos, No Login

Scrape TikTok videos by hashtag, keyword search or trending feed: plays, likes, shares, saves, comments, caption, music and author followers. Free date filter, optional MP4 download and a views vs creator median score to spot viral videos. No login or cookies. Works via API and MCP.

Pricing

from $0.80 / 1,000 videos

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

64

Total users

38

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

20 #jewelrytok videos in 52 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 290,000 runs across 310+ public actors.

Give it TikTok hashtags, search keywords, or ask for the trending feed, and get one flat row per video: plays, likes, shares, saves and comments, the caption and its hashtags, length, music, the creator's followers, following, total likes and video count, ad, sponsored and TikTok Shop flags, and the exact posting time. Since late October 2026 TikTok shows its hashtag feeds and search results only to logged-in accounts, so hashtags and keywords are read from the public TikTok pages that still answer (a hashtag's page and TikTok's topic pages at tiktok.com/discover/...), and every row says in dataSource which page it came from. Keep only recent or popular videos at no extra cost, save the MP4 files, and see which videos beat the creator's usual reach. No TikTok login, no cookies of yours and no API key.

Why choose this actor?

  • Still works after TikTok's login wall. In late October 2026 TikTok stopped serving hashtag feeds and keyword search to visitors who are not logged in, and scrapers that read them began returning nothing. This actor reads the pages TikTok still shows publicly: a hashtag's top videos from its hashtag page, then TikTok's topic page for the word (about 80 to 100 videos), then related topic pages. On 31 October, #jewelrytok at 150 videos returned 150 full rows in about a minute.
  • Recent videos only, and you pay only for those. postedWithinDays keeps only videos posted in the last N days, judged by each video's own posting time. On 31 October, #jewelrytok with a 14 day window returned 10 videos in 10 seconds and skipped 27 older ones without charging for them.
  • Saves and shares, not just views. Every row carries playCount, diggCount, shareCount, collectCount and commentCount as numbers, plus authorFollowers, so you can rank videos by saves per view or find small accounts with outsized reach. Turn on author median plays and each video also gets playsVsAuthorMedian, its plays divided by the creator's usual.
  • Keywords sorted your way. Each keyword is read from TikTok's topic page for it (tiktok.com/discover/lab-grown-diamond). With searchSortBy set to most_liked and a 30 day window, a "lab grown diamond" run on 31 October started with the month's most liked posts on that page: 229,600 likes, then 149,000, then 125,100.
  • MP4 files that open anywhere. With downloadVideos on, each video is saved to the run's storage with a public link in videoFileUrl. In a keyword run on 26 September, 2 videos and their 2 MP4 files (1.6 and 1.8 MB) came back in 10 seconds. A download that fails is not charged.

Run it on Apify

Part of The Mine Works Social media and video family: Threads Scraper, Reddit Scraper, Threads Search Scraper, Instagram Profile Scraper, Instagram Followers & Following, Reddit Search Scraper.

Guide and FAQs: TikTok Hashtag and Search Scraper on themineworks.com.

Try it in one minute

Paste this into the JSON tab of the input page and press Start:

{
"hashtags": ["jewelrytok"],
"maxItems": 10,
"postedWithinDays": 14
}

You get up to 10 #jewelrytok videos from the last two weeks, usually in under a minute.

There are three kinds of input, and you can mix them in one run. hashtags takes tags with or without # (jewelrytok, #EngagementRing) or a tiktok.com/tag/... link. keywords takes search terms (lab grown diamond ring) or a tiktok.com/search?q=... link, read from TikTok's topic page for the term. trending switches on TikTok's Explore feed for the category in trendingCategory. maxItems is the most videos per hashtag, per keyword and for the trending feed.

Apify's free plan includes $5 of credit every month, which covers about 1,700 videos at this actor's Free plan price ($0.0028 a video plus the $0.005 start fee, in runs of 1,000 videos).

Copy to your AI assistant

themineworks/tiktok-hashtag-search-scraper on Apify. Returns public TikTok videos by hashtag, search keyword or the Explore trending feed, one row per video with plays, likes, shares, saves, comments, caption, hashtags, duration, music, author followers, following, total likes and video count, ad/sponsored/Shop flags and posting time. Call ApifyClient("TOKEN").actor("themineworks/tiktok-hashtag-search-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give at least one of: hashtags (string[], with or without #), keywords (string[]), trending (true). Optional: trendingCategory ("120" All, "102" Beauty Care, "111" Food, "112" Sports and 17 more; default "120"), maxItems (1 to 1000 per input, default 50), postedWithinDays (keep only videos posted in the last N days; older ones are free), minPlays and minLikes (skip weaker videos, never charged), region ("US" only), downloadVideos (default false; MP4 link in videoFileUrl, $0.002 per file), includeAuthorMedianPlays (default false; adds authorMedianPlays and playsVsAuthorMedian). Keyword only options: searchSortBy ("relevance", "most_liked", "latest"), searchDatePosted ("any", "last_24_hours", "last_week", "last_month", "last_3_months", "last_6_months"), searchContentType ("videos" or "photos"), deepSearch (default true; adds related topic pages when a hashtag's or keyword's own pages end before maxItems), includeSuggestions (default false; free autocomplete suggestions and related questions in the key-value record SUGGESTIONS). Every row carries dataSource (hashtag_page, topic_page, related_topic_page, explore_trending or creative_center_top_videos) and dataSourceUrl; keyword rows also carry searchRank and searchPass. Rows with a _type field (info, no_results, invalid_input) are not videos and are never charged. Per input diagnostics are in the key-value record OUTPUT. Full spec: GET https://api.apify.com/v2/acts/themineworks~tiktok-hashtag-search-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • Up to 48 fields per video, about 40 in a typical row. Engagement counts, caption, hashtags, caption language, duration, cover image, music (and whether it is the creator's original sound), creator name, ID, profile link, followers, following, total likes, video count and verified flag, ad, sponsored and TikTok Shop flags, effects used, location tags when the creator added one, pictures of photo posts, and which input found the video.
  • Three kinds of input in one run. Hashtags (the hashtag page's top videos, then the topic page and related topic pages), keywords (the term's topic page, then related topic pages) and the Explore trending feed in 21 categories (16 a call, up to 80 calls). A video found by two inputs is delivered once, credited to the first. Keywords run three at a time.
  • Sort and date options for keywords. searchSortBy most_liked or latest reads the keyword's whole topic page and sorts it before delivering, so the first rows are the most liked or newest posts on it. searchDatePosted (24 hours up to 6 months) keeps only posts inside the window. searchContentType photos keeps carousel and slideshow posts, with their pictures in imageUrls.
  • Related topic pages, on by default. One topic page holds about 80 to 100 videos. When a hashtag or keyword ends before maxItems, the actor also reads TikTok's related topic pages for it and topic pages for its search suggestions, which also finds videos for a word with no topic page of its own (such as skincare). A video found twice is delivered and charged once. Set deepSearch to false to keep only the term's own pages.
  • A date filter that saves money. postedWithinDays keeps only videos posted in the last N days, judged by each video's own posting time. Videos outside the window are skipped before any charge.
  • Engagement filters. minPlays and minLikes drop weaker videos from every input before they are delivered, so you are not charged for them.
  • Free search suggestions. includeSuggestions adds TikTok's autocomplete suggestions and related questions for each keyword and hashtag to the run's SUGGESTIONS record, at no charge. Useful for keyword research and for picking the next hashtags to watch.
  • Breakout detection. includeAuthorMedianPlays reads each creator's 15 most recent posts once per run, and adds authorMedianPlays, authorMedianSample and playsVsAuthorMedian.
  • MP4 download without TikTok cookies. TikTok's own videoUrl only plays with the cookies of the page that issued it. With downloadVideos on, the actor opens each video's own page, fetches the file with that page's cookies and stores it in your run, so videoFileUrl opens in any browser or editor. Slideshow (photo) posts have no MP4 and are skipped.
  • Refusals handled, never billed, never silent. A request TikTok refuses is retried on a new IP. An input that finds nothing gets one free no_results row in the dataset saying why and which pages were tried, so a run never ends empty and silent, and nothing is charged for it.

How to use it

Basic: one hashtag

{
"hashtags": ["jewelrytok"],
"maxItems": 50
}
{
"keywords": ["lab grown diamond ring", "moissanite engagement ring"],
"maxItems": 40
}

You get the videos on TikTok's topic page for each term (tiktok.com/discover/lab-grown-diamond-ring), in TikTok's order, with searchRank and dataSource on each row.

Keyword results are filtered to posts that mention every word of the keyword in the caption or hashtags; other posts are dropped before charging, so a keyword can return fewer videos than Max videos per input.

The most liked videos about a topic this week

{
"keywords": ["lab grown diamond", "skincare routine"],
"searchSortBy": "most_liked",
"searchDatePosted": "last_week",
"minLikes": 100,
"maxItems": 40
}

The actor reads each keyword's topic page, keeps the posts of the last seven days and sorts them by likes, so the first rows are the most liked of them. minLikes drops anything under 100 likes before it is charged. Swap most_liked for latest to watch a brand or product name for new posts every day.

Keyword research with free suggestions

{
"keywords": ["lab grown diamond"],
"maxItems": 20,
"includeSuggestions": true
}

The videos land in the dataset as usual, and the SUGGESTIONS record holds what TikTok's search box suggests for the term and the related questions it shows, at no charge. Feed the best ones back in as new keywords or hashtags.

{
"trending": true,
"trendingCategory": "102",
"maxItems": 100
}

102 is Beauty Care. Each call to the Explore feed is a fresh draw, so repeated runs return different videos.

Daily niche monitor with breakout scores

{
"hashtags": ["jewelrytok", "engagementring", "labgrowndiamonds"],
"keywords": ["lab grown diamond ring"],
"maxItems": 60,
"postedWithinDays": 2,
"includeAuthorMedianPlays": true
}

Save it as a task and schedule it daily (for example 0 8 * * *). Sort each run by playsVsAuthorMedian: a value of 8 means the video did eight times its creator's usual plays, which points at a hook, format or sound that is taking off, even on small accounts. The 2 day window keeps each run to fresh videos, so overlapping days cost little.

Build a swipe file of video ads and Shop videos

{
"hashtags": ["tiktokmademebuyit", "amazonfinds"],
"maxItems": 200,
"postedWithinDays": 30,
"downloadVideos": true
}

Filter on isAd, isSponsored or isECVideo to separate paid and TikTok Shop videos from organic ones, and keep the MP4 links in videoFileUrl for your creative team. Each saved file costs $0.002.

Input parameters

ParameterTypeDefaultWhat it does
hashtagsarray of stringsnone (form prefill: jewelrytok)Hashtags with or without #, or tiktok.com/tag/... links. Lowercased, spaces removed, duplicates removed. Read from the hashtag page, then the topic page for the same word.
keywordsarray of stringsnoneSearch terms, read from TikTok's topic page for each term.
trendingbooleanfalseAlso read TikTok's Explore (trending) feed for trendingCategory.
trendingCategorystring120 (All)Explore category: 120 All, 119 Singing & Dancing, 104 Comedy, 112 Sports, 100 Anime & Comics, 107 Relationship, 101 Shows, 110 Lipsync, 105 Daily Life, 102 Beauty Care, 103 Games, 114 Society, 109 Outfit, 115 Cars, 111 Food, 113 Animals, 106 Family, 108 Drama, 117 Fitness & Health, 116 Education, 118 Technology.
maxItemsinteger (1 to 1,000)50 (form prefill: 10)Most videos for each hashtag, each keyword and the trending feed.
postedWithinDaysinteger (1 to 3,650)noneKeep only videos posted in the last N days. Older videos are skipped and never charged.
minPlaysintegernoneSkip videos with fewer plays, for every input. Skipped videos are never charged.
minLikesintegernoneSkip videos with fewer likes, for every input. Skipped videos are never charged.
regionstringUSCountry TikTok is browsed from. Only US works: on 26 September TikTok refused its web video feeds to logged out visitors from the UK, the EU, Canada, Australia, Brazil, Japan and Mexico, and TikTok is not available in India. Creators from anywhere still appear in US feeds.
downloadVideosbooleanfalseSave each video's MP4 to the run's key-value store and put a public link in videoFileUrl. Charged per file saved.
includeAuthorMedianPlaysbooleanfalseAdd authorMedianPlays, authorMedianSample and playsVsAuthorMedian to every row, from each creator's recent posts.

Keyword options (searchSortBy, searchDatePosted and searchContentType apply to keywords only; deepSearch applies to hashtags and keywords):

ParameterTypeDefaultWhat it does
searchSortBystringrelevancerelevance, most_liked or latest. most_liked and latest sort the keyword's topic page before delivering.
searchDatePostedstringanyany, last_24_hours, last_week, last_month, last_3_months or last_6_months. Keeps only posts inside the window. With any, postedWithinDays decides.
searchContentTypestringvideosvideos, or photos for carousel and slideshow posts.
deepSearchbooleantrueAlso read related topic pages when a hashtag's or keyword's own pages end before maxItems. Does nothing when the own pages already reach maxItems. Posts found twice are delivered and charged once. Set false to keep only the term's own pages.
includeSuggestionsbooleanfalseSave TikTok's autocomplete suggestions and related questions for each keyword and hashtag to the SUGGESTIONS record. Free.

Give at least one hashtag, one keyword, or trending: true; a run with none ends at once with one free invalid_input row and charges only the start fee.

Run options. The default memory is 2 GB (the trending feed can need a headless browser to sign TikTok's requests) and the default timeout is 3,600 seconds. If a run reaches its timeout, it stops 15 seconds early, keeps every video already delivered and writes the OUTPUT record with ended_on_deadline: true.

What data do you get?

One row per video. Fields TikTok does not give for a video are left out of the row rather than sent as null.

The video: id, webVideoUrl (public link), createTime (Unix seconds) and createTimeISO, text (caption), textLanguage, hashtags, durationSec, isSlideshow, coverUrl, effectStickers, and for photo posts imageCount and imageUrls.

Engagement: playCount (views), diggCount (likes), shareCount, collectCount (saves) and commentCount, all numbers.

Music: musicId, musicTitle, musicAuthor, musicOriginal (true when it is the creator's own sound).

The creator, on every row from every input: authorUsername, authorNickname, authorId, authorSecUid, authorUrl, authorAvatarUrl, authorFollowers, authorFollowing, authorTotalLikes, authorVideoCount, authorVerified.

Commercial flags: isAd (paid ad), isSponsored (branded or sponsored content), isECVideo (TikTok Shop video).

Location, when the creator tagged one: locationCreated, poiName, poiAddress, poiCity, poiCategory.

Optional fields: authorMedianPlays, authorMedianSample and playsVsAuthorMedian with author median plays on; videoFileUrl and videoFileBytes with downloads on.

TikTok's own video addresses: videoUrl and downloadAddr. They only play with the cookies of the session that fetched them and expire within hours, so use videoFileUrl for a file you can keep.

Where it came from: dataSource (hashtag_page, topic_page, related_topic_page, explore_trending or creative_center_top_videos) and dataSourceUrl (that TikTok page), sourceType (hashtag, keyword or trending), sourceInput (the tag, term or category), scrapedAt, and on keyword rows searchRank (the post's place in that keyword's results) and searchPass (the page that found it, for example topic page lab-grown-diamond).

After the videos, the dataset ends with one _type: "info" row (a short message and a scheduling tip). An input that found nothing gets a _type: "no_results" row instead, with the reason and the pages tried. Neither is a video or ever charged, so skip rows that have a _type field. The per input diagnostics are in the key-value record OUTPUT: for each input, videos requested and delivered, filtered by date, filtered by minPlays or minLikes, duplicates, pages read, feed_items_seen, whether the pages ran out, and sources: every page read for the input with its status, videos listed and videos delivered. With includeSuggestions on, the key-value record SUGGESTIONS holds, for each keyword and hashtag, autocomplete (TikTok's search box suggestions) and related_questions.

Stable fields for automations

These 18 fields were present in every video row of our two runs on the live build (22 rows).

FieldWhat it holds
idTikTok video ID; the deduplication key
webVideoUrlPublic link to the video
createTimePosting time, Unix seconds
createTimeISOPosting time, ISO format
textCaption
hashtagsHashtags in the caption, as a list
playCountViews
diggCountLikes
shareCountShares
collectCountSaves
commentCountComments
durationSecLength in seconds
coverUrlCover image URL
authorUsernameCreator's username
authorFollowersCreator's follower count
sourceTypehashtag, keyword or trending
sourceInputThe hashtag, keyword or category that found it
scrapedAtISO timestamp when the row was captured

We will not rename these fields. New fields may be added over time; existing ones keep their names.

Output examples

Real rows from our test runs of the live build on 26 September 2026, from business accounts, with long TikTok addresses shortened.

A video from the #jewelrytok run with a 14 day window:

{
"id": "7684738074651282718",
"webVideoUrl": "https://www.tiktok.com/@powetikjewelz/video/7684738074651282718",
"createTime": 1789242523,
"createTimeISO": "2026-09-12T19:48:43.000Z",
"text": "Overly obsessed with the full stack of our flower bangles 😍😍 Add yours to the cart today #jewelrybusiness #goldjewelry #powetikjewelz #flowerbangles ",
"textLanguage": "en",
"hashtags": ["jewelrybusiness", "goldjewelry", "powetikjewelz", "flowerbangles"],
"playCount": 39400,
"diggCount": 1225,
"shareCount": 64,
"collectCount": 263,
"commentCount": 29,
"durationSec": 6,
"videoUrl": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/...",
"coverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/...",
"isSlideshow": false,
"musicId": "7403750169130388266",
"musicTitle": "original sound",
"musicAuthor": "anastasia",
"musicOriginal": true,
"authorUsername": "powetikjewelz",
"authorNickname": "Powetik Jewelz 💎",
"authorId": "7613525421330351134",
"authorFollowers": 2922,
"authorVideoCount": 194,
"authorVerified": false,
"isAd": false,
"isSponsored": false,
"isECVideo": false,
"effectStickers": ["Green Screen", "High Quality", "comfy 2.0"],
"sourceType": "hashtag",
"sourceInput": "jewelrytok",
"scrapedAt": "2026-09-26T13:05:59.535Z"
}

A video from the lab grown diamond ring keyword run with downloads on (trimmed to the fields that differ; the file link's signature is cut here):

{
"id": "7687212494900841741",
"webVideoUrl": "https://www.tiktok.com/@aleni.diamond.cus/video/7687212494900841741",
"createTimeISO": "2026-09-19T11:51:33.000Z",
"playCount": 1100000,
"durationSec": 12,
"authorUsername": "aleni.diamond.cus",
"authorNickname": "Aleni | Diamond Custom💍",
"authorFollowers": 16400,
"videoFileUrl": "https://api.apify.com/v2/key-value-stores/oIZVgXgY8oZ3LTZJM/records/video-7687212494900841741.mp4?signature=...",
"videoFileBytes": 1754098,
"sourceType": "keyword",
"sourceInput": "lab grown diamond ring"
}

A video from a lab grown diamond keyword run on 27 October 2026, trimmed to the creator and search fields:

{
"id": "7697114850887060750",
"webVideoUrl": "https://www.tiktok.com/@dulcijewelry/video/7697114850887060750",
"createTimeISO": "2026-10-16T04:17:21.000Z",
"playCount": 37500,
"diggCount": 1902,
"collectCount": 366,
"authorUsername": "dulcijewelry",
"authorUrl": "https://www.tiktok.com/@dulcijewelry",
"authorFollowers": 42800,
"authorFollowing": 230,
"authorTotalLikes": 103200,
"authorVideoCount": 123,
"sourceType": "keyword",
"sourceInput": "lab grown diamond",
"searchRank": 2,
"searchPass": "relevance / any time"
}

A video from a jewelrytok hashtag run on 31 October 2026, trimmed to the source fields:

{
"id": "7638079465813331213",
"webVideoUrl": "https://www.tiktok.com/@beccaxbloom/video/7638079465813331213",
"playCount": 30900000,
"collectCount": 80672,
"sourceType": "hashtag",
"sourceInput": "jewelrytok",
"dataSource": "hashtag_page",
"dataSourceUrl": "https://www.tiktok.com/tag/jewelrytok"
}

The per input entry from a 31 October #jewelrytok run's OUTPUT record (key-value store, not the dataset), with a 14 day window, trimmed:

{
"sourceType": "hashtag",
"sourceInput": "jewelrytok",
"requested": 10,
"delivered": 10,
"filtered_by_date": 27,
"duplicates_skipped": 0,
"pages": 2,
"sources": [
{ "source": "hashtag_page", "word": "jewelrytok", "url": "https://www.tiktok.com/tag/jewelrytok", "status": "ok", "pages": 1, "items": 10, "delivered": 0 },
{ "source": "topic_page", "word": "jewelrytok", "url": "https://www.tiktok.com/discover/jewelrytok", "status": "ok", "pages": 1, "items": 30, "delivered": 10 }
],
"status": "ok"
}

Pricing

Pay per event: you pay for each video delivered, for each MP4 saved when downloads are on, and a small start fee per run.

EventFreeBronzeSilverGold and above
video-scraped, per video$0.0028$0.0022$0.0015$0.0008
video-scraped, per 1,000 videos$2.80$2.20$1.50$0.80
video-download, per MP4 saved$0.002$0.002$0.002$0.002
apify-actor-start, per run$0.0025 per GB of run memory, minimum one eventsamesamesame

The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.0025 for each GB of memory the run uses, with a minimum of one event. This actor runs on 2 GB by default, so a default run pays two events: $0.005.

Worked examples. 50 videos from one hashtag cost $0.145 on Free and $0.045 on Gold, start fee included. 1,000 videos (10 hashtags at 100 each) cost $2.805 on Free and $0.805 on Gold. 100 videos with their MP4 files cost $0.485 on Free and $0.285 on Gold. The date filter, sort order, engagement filters, related topic pages, search suggestions and author median plays cost nothing extra. A photo post from keyword search is one row, charged like a video.

Never charged: videos outside your date window, videos below your minPlays or minLikes, a video found again by another input or another page (charged once), search suggestions, failed downloads, slideshows when downloads are on (no MP4 exists), anything TikTok refused to serve, and the info, no_results and invalid_input rows. A run that delivers nothing pays only the start fee.

There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your plan; if it and this table ever differ, the Pricing tab is right.

FAQ

Why did my hashtag and keyword results change at the end of October 2026? TikTok stopped serving its hashtag feeds and its search results to visitors who are not logged in (measured 30 and 31 October 2026, even from a real browser). The builds before 31 October read those feeds and from then on returned nothing. The current build reads the public pages that still answer instead: the hashtag page's top videos, TikTok's topic pages and related topic pages. The row fields are the same, plus dataSource and dataSourceUrl saying which page each row came from. The videos are the ones on those pages, so they differ from what the old hashtag feed or search returned, and a topic page holds about 80 to 100 videos.

What does it read from TikTok? The public pages the TikTok website shows a visitor who is not logged in: a hashtag's page, TikTok's topic pages (tiktok.com/discover/...), each video's own page, and the Explore page. It never logs in.

How many videos can one hashtag give? Up to maxItems (1,000 at most), but each public page is short: the hashtag page lists about 10 top videos and a topic page about 80 to 100. With deepSearch on, related topic pages add more; on 31 October #jewelrytok at 150 gave 10 from the hashtag page, 89 from its topic page and 51 from a related topic page. Some very large tags (#booktok, #skincare) have no public hashtag page and some words have no topic page; then related topic pages are used, and if none has videos you get a free no_results row. The OUTPUT record lists every page read for each input.

Can I sort keyword results or limit them by date? Yes. searchSortBy most_liked or latest sorts the keyword's topic page before delivering, and searchDatePosted or postedWithinDays keeps only posts inside the window. TikTok's topic pages have no sort or date options of their own, so these work on the 80 to 100 videos a topic page lists (plus related pages with deepSearch), not on all of TikTok. For hashtags and the trending feed, postedWithinDays is applied to what the pages return.

How many videos can one keyword give? Usually 80 to 100 from the term's own topic page, more with deepSearch (related topic pages, on by default). The OUTPUT record lists each page with its status and the videos it delivered.

How long does a keyword run take? In our 31 October tests, two keywords at 10 videos each took 5 seconds and one keyword sorted by likes at 20 took 23 seconds. A hashtag takes longer when its hashtag page videos are used, because each is completed from its own page (10 videos in about 40 seconds). Refused requests are retried and never charged. Set deepSearch to false for the fastest run.

Can I get photo posts (carousels and slideshows)? Yes, set searchContentType to photos for keywords; topic pages hold few photo posts, so expect fewer rows. Photo posts have isSlideshow: true, imageCount and imageUrls. Hashtag and trending rows already include photo posts mixed with videos.

What are search suggestions? With includeSuggestions on, the run saves TikTok's search box suggestions (autocomplete) and its related questions for each keyword and hashtag to the key-value record SUGGESTIONS. They are free and never added to the dataset, so they never change what you pay.

How fresh are the numbers? Live. Plays, likes, saves and follower counts are what TikTok shows at the moment of the run, and scrapedAt records when.

Which countries does it work from? The United States only. On 26 September TikTok refused its web video feeds to logged out visitors browsing from the UK, the EU, Canada, Australia, Brazil, Japan and Mexico, and TikTok is not available in India. The videos themselves can come from creators anywhere: a local hashtag or a search in another language finds local content.

Do I need a TikTok account, cookies or an API key? No. There is nothing of yours to connect, block or ban. You need only an Apify account.

Which proxy does it use? Apify's US datacenter proxy, with a new IP for each retry. Only the trending feed can need a browser session, and only it falls back to US residential (at most 3 sessions) when datacenter sessions are refused. Proxy and compute are included in the price.

What happens if TikTok blocks the run? A refused request is retried on a new IP and never charged. If nothing answered for an input, the dataset gets a free no_results row saying so, the input is marked blocked in the OUTPUT record, and the run's status message says so.

Can I download the videos? Yes, with downloadVideos. Each MP4 is saved in the run's key-value store, and videoFileUrl is a public link to it. Files stay as long as the run's storage is kept under your Apify plan's data retention. TikTok's own videoUrl is not a usable download link outside the session that fetched it.

Can I schedule it? Yes. Save your input as a task, then in Apify Console go to Schedules, Create new, and pick a time or a cron expression. Use postedWithinDays close to the time between runs, and deduplicate on id when you store rows.

How do I export the data? From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Drop the row that has a _type field if you want videos only.

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/tiktok-hashtag-search-scraper.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http tiktok-hashtag-search-scraper "https://mcp.apify.com/?tools=themineworks/tiktok-hashtag-search-scraper".

Is it legal to scrape TikTok? The actor collects only publicly visible video data and never logs in or gets past a login wall. Usernames, captions and follower counts can still be personal data, so you are responsible for how you store and use them, including TikTok's terms and data protection laws such as GDPR and CCPA. This is general information, not legal advice.

Integrations

  • Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to append each scheduled run's videos.
  • Make, Zapier and n8n: use the Apify app or node to run the actor every morning and send videos above a playsVsAuthorMedian threshold to Slack or a content board.
  • Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
  • API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
  • MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through https://mcp.apify.com.

To follow up on the creators you find, TikTok Creator Scraper returns their profiles, and Instagram Reels Views Scraper covers the same kind of short video on Instagram.

More from The Mine Works

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

E-commerce and marketplaces

Company and business data

Food and local services

Developer and AI tools

More tools

Support

Found an input that returns nothing, or a field you need? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new data source, email dmineworks@gmail.com.

TikTok Scraper turns hashtags, searches and the trending feed into clean video rows with real engagement numbers, a free date filter and optional MP4 files.