(NEW) TikTok Scraper – Videos, Profiles, Hashtags, Comments avatar

(NEW) TikTok Scraper – Videos, Profiles, Hashtags, Comments

Pricing

from $0.35 / 1,000 videos

Go to Apify Store
(NEW) TikTok Scraper – Videos, Profiles, Hashtags, Comments

(NEW) TikTok Scraper – Videos, Profiles, Hashtags, Comments

Scrape TikTok videos, hashtags, profiles, search, comments and followers from $0.35 per 1,000. Clockworks-compatible input, AI analysis, no login.

Pricing

from $0.35 / 1,000 videos

Rating

5.0

(1)

Developer

Harsh Maur

Harsh Maur

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

3 hours ago

Last modified

Share

TikTok Scraper: Videos, Profiles, Hashtags, Comments, Followers and AI Analysis

Export TikTok data to JSON, CSV or Excel: videos with views, likes, comments, shares and saves, creator profiles with follower counts, comments with their replies, followers and following lists, sounds, hashtags and search results. Add watermark-free video downloads, transcripts and AI labels when you need them.

You don't need a TikTok account, cookies or an API key, and there is no proxy to set up. Paste a username, a hashtag, a keyword or a link and press Start.

Moving from clockworks/tiktok-scraper? Paste your existing input. The field names are the same (see Switching from clockworks/tiktok-scraper).

What can this TikTok scraper do?

  • Scrape TikTok profiles. Get a creator's latest, oldest or most popular videos, their reposts, and the profile data on every row.
  • Scrape TikTok hashtags. Collect the videos under any hashtag. Turn on exact match to keep only videos whose caption really carries the tag.
  • Search TikTok. Search videos by keyword, sorted by relevance, likes or date, within a recent period, or list the accounts behind them.
  • Scrape single videos. Paste video or photo post links, short vm.tiktok.com links, or video IDs. Optionally add the related videos TikTok recommends next to each one.
  • Scrape TikTok sounds. Paste a music link or ID to get the videos that use the sound.
  • Collect comments and replies. Set how many comments and how many replies per comment you want.
  • List followers and following. Get the accounts that follow a profile, or that the profile follows.
  • Download videos and images. Save MP4 files without the watermark, plus covers, slideshow images, avatars and sound covers.
  • Get transcripts. Download TikTok's own subtitles, or have AI transcribe videos that have none.
  • Analyze videos with AI. Label each video with a category, a sponsored flag, a brand-safety flag and sentiment, answer your own yes/no questions, and write a summary or a scene-by-scene description.

TikTok Scraper: how to use it

  1. Add one or more Profiles, Hashtags, Search keywords, Video URLs or Music links. You can mix them in one run, or paste any TikTok link into Any TikTok URL.
  2. Set Videos per profile, hashtag, search or music. Add Max videos in total if you want a hard cap for the whole run.
  3. Optional: add date and likes filters, comments, followers, downloads, transcripts or AI analysis.
  4. Click Start. Rows appear in the dataset while the run is going, and you can download them in any format Apify supports.

Example input

This run takes the 50 latest videos from two creators posted since 1 September 2026 with at least 10,000 likes, plus 20 comments with up to 5 replies each per video:

{
"profiles": ["khaby.lame", "mrbeast"],
"resultsPerPage": 50,
"profileSorting": "latest",
"excludePinnedPosts": true,
"oldestPostDateUnified": "2026-09-01",
"leastDiggs": 10000,
"commentsPerPost": 20,
"maxRepliesPerComment": 5
}

Scrape TikTok profiles

Add usernames to profiles, with or without the @, or paste profile links. Each profile returns up to resultsPerPage videos. The author's profile is attached to every video row in authorMeta: name, nickName, verified, signature, bioLink, fans, following, heart, video, region and more.

  • profileSorting: latest (default), popular or oldest.
  • profileScrapeSections: ["videos"], ["reposts"] or both.
  • excludePinnedPosts: skip the videos a creator pinned to the top, so "latest" means latest.

TikTok hashtag scraper

Add hashtags to hashtags, with or without the #. TikTok's hashtag feed also contains videos that don't carry the tag. Set hashtagMatch to exact to keep only videos whose caption contains the hashtag. Videos dropped by the filter are not charged, which matters when you track a campaign tag.

Each hashtag video has searchHashtag with the tag name and its total views on TikTok.

TikTok search scraper

Add keywords to searchQueries and pick what you want back with searchSection:

searchSectionReturns
"" (Top) or "/video"Videos for the keyword. Order them with videoSearchSorting (MOST_RELEVANT, MOST_LIKED, LATEST) and limit the period with videoSearchDateFilter (ALL_TIME to LAST_6_MONTHS)
"/user"The accounts that posted the matching videos, up to maxProfilesPerQuery per keyword, as profile rows

Sorting and the search period cost nothing extra.

Scrape TikTok videos by URL

Paste links to single videos or photo posts into postURLs. Short vm.tiktok.com and vt.tiktok.com share links work, and so do bare video IDs. You get one full row per link, with views, likes, shares, saves, the caption, hashtags, the sound and the creator's profile:

{ "postURLs": ["https://www.tiktok.com/@charlidamelio/video/7137423965982592302"], "commentsPerPost": 50 }

Turn on scrapeRelatedVideos to also collect the videos TikTok suggests next to each one, up to resultsPerPage per link.

TikTok sound and music scraper

Add sound links (tiktok.com/music/...) or music IDs to musics to list the videos that use a sound. This shows who picked up a trending audio and how those videos perform. Each row carries the sound in musicMeta, and the date and likes filters work here too.

Filter TikTok videos by date and likes

All filters are free and work together, on profiles, hashtags, search and music:

  • oldestPostDateUnified: posted on or after a date ("2026-09-01") or within a number of days ("30").
  • newestPostDate: posted on or before a date.
  • leastDiggs and mostDiggs: at least or at most this many likes.

You can ask for "videos from the last 30 days with more than 50,000 likes" in a single run.

TikTok comments scraper

Set commentsPerPost to collect comments from every scraped video, and maxRepliesPerComment to include replies. topLevelCommentsPerPost caps comments that are not replies. Comments are rows with dataType: "comment" in the same dataset. A reply's repliesToId holds the cid of the comment it answers, so you can rebuild each thread.

To get the comments of specific videos only, put the links in postURLs and set commentsPerPost.

TikTok followers scraper

Set maxFollowersPerProfile and maxFollowingPerProfile for the profiles in your input. Each account is a row with dataType: "follower". connectionType is follower or following, connectedTo is the profile from your input, and authorMeta is the account itself.

Download TikTok videos without watermark

Turn on shouldDownloadVideos to save each video's MP4 without the TikTok watermark. TikTok's own video links expire. The saved files stay in the run's key-value store, and their links are in mediaUrls on each video row.

You can also save shouldDownloadCovers, shouldDownloadSlideshowImages (every image of a photo post, listed in slideshowImageLinks), shouldDownloadAvatars and shouldDownloadMusicCovers.

TikTok transcript and subtitle scraper

downloadSubtitlesOptions takes one of four values:

ValueWhat you get
NEVER_DOWNLOAD_SUBTITLESNothing (default)
DOWNLOAD_SUBTITLESTikTok's own captions, linked in videoMeta.subtitleLinks
DOWNLOAD_AND_TRANSCRIBE_VIDEOS_WITHOUT_SUBTITLESCaptions, plus an AI transcript for videos that have none
TRANSCRIBE_ALL_VIDEOSAn AI transcript for every video

The text lands in videoMeta.transcript, and videoMeta.transcriptSource says whether it came from TikTok's subtitles or from ai.

TikTok AI video analysis

Turn on aiAnalysis and every video gets an aiAnalysis object:

  • category: one of comedy, food, beauty_fashion, fitness_sports, music_dance, gaming, education, tech, travel, home_diy, pets_animals, family_kids, business_finance, news_politics, art_creativity, automotive or other
  • sponsored: whether the video looks like paid promotion
  • brandSafe: whether a brand could safely appear next to it
  • sentiment: positive, neutral or negative
  • answers: your own yes/no questions from aiQuestions (up to 20), each answered true, false or null when the AI is unsure

Two more options watch and listen to the video itself:

  • aiVideoSummary: a short summary in videoMeta.aiVideoSummary.
  • aiVideoDescription: a timed, scene-by-scene description in videoMeta.aiVideoDescription.

Example for influencer vetting:

{
"profiles": ["khaby.lame"],
"resultsPerPage": 30,
"aiAnalysis": true,
"aiQuestions": [
"Does the creator promote a product?",
"Does the video contain swearing?"
],
"aiVideoSummary": true
}

Scrape TikTok as if from another country

Set proxyCountryCode to a country (for example GB or DE) to load TikTok from that region and see the search and hashtag results people there see. It costs nothing extra. Leave it at None for the default setting.

TikTok data output

Every row has a dataType: video, comment, profile, follower or failed. The Output tab has a view for each, and you can filter on dataType when you export.

Video row

Arrays and nested objects are trimmed here.

{
"dataType": "video",
"id": "7694335322922044703",
"text": "Was the ball out, or was it just my imagination? 🀨#learnfromkhaby #comedy",
"textLanguage": "en",
"createTime": 1791477076,
"createTimeISO": "2026-10-08T16:31:16.000Z",
"webVideoUrl": "https://www.tiktok.com/@khaby.lame/video/7694335322922044703",
"playCount": 5000000,
"diggCount": 600000,
"commentCount": 10900,
"shareCount": 18700,
"collectCount": 35131,
"repostCount": 0,
"authorMeta": {
"id": "127905465618821121",
"name": "khaby.lame",
"nickName": "Khabane lame",
"verified": true,
"fans": 163000000,
"heart": 2700000000,
"video": 1358
},
"musicMeta": {
"musicName": "original sound",
"musicAuthor": "Khabane lame",
"musicOriginal": true,
"musicId": "7694335437137087262"
},
"videoMeta": {
"height": 1280,
"width": 720,
"duration": 30,
"definition": "720p",
"format": "mp4",
"transcript": null,
"transcriptSource": null,
"aiVideoSummary": null
},
"hashtags": [{ "id": null, "name": "comedy", "title": null, "cover": null }],
"isSlideshow": false,
"isPinned": false,
"isAd": false,
"isSponsored": false,
"isAiGenerated": false,
"hasTikTokShopProduct": false,
"mediaUrls": [],
"input": "khaby.lame",
"fromProfileSection": "videos",
"aiAnalysis": {
"category": "comedy",
"sponsored": false,
"brandSafe": true,
"sentiment": "positive",
"answers": { "Does the creator promote a product?": false }
}
}

Other video fields: locationCreated, locationMeta, mentions, detailedMentions, effectStickers, slideshowImageUrls, slideshowImageLinks, duetEnabled, stitchEnabled, suggestedWords, isStory, submittedVideoUrl, searchQuery, searchHashtag.

Comment row

{
"dataType": "comment",
"videoWebUrl": "https://www.tiktok.com/@khaby.lame/video/7694335322922044703",
"cid": "7694337701600068373",
"createTimeISO": "2026-10-08T16:40:10.000Z",
"text": "I'm Muslim",
"diggCount": 5444,
"replyCommentTotal": 54,
"repliesToId": null,
"likedByAuthor": false,
"pinnedByAuthor": false,
"uid": "7451523731317228550",
"uniqueId": "khankingmuhammadjan",
"commentLanguage": "en",
"imageUrls": []
}

Profile, follower and failed rows

  • profile: input and the full authorMeta.
  • follower: authorMeta (the account), connectedTo (your input profile), connectionType and connectionDescription.
  • failed: errorCode, error and input. Codes include profile_not_found, hashtag_not_found, music_not_found, video_unavailable and blocked.

No empty runs: free failure rows

When an input can't be scraped, you get a failed row that says which input and why, instead of a silently empty dataset. Failed rows are never charged.

{
"dataType": "failed",
"errorCode": "profile_not_found",
"error": "@some.deleted.user does not exist.",
"input": "some.deleted.user"
}

How much does it cost to scrape TikTok?

Pricing is pay per event. You pay only for rows you receive, and the filters, sorting and region choice add nothing to the price:

What you getPrice
Videos$0.35 per 1,000 videos
Comments and replies$0.20 per 1,000 comments
Followers and following$0.25 per 1,000 accounts
Profiles (one per scraped profile, or from profile search)$4.00 per 1,000 profiles
AI analysis (labels and your questions)$1.50 per 1,000 videos
AI summary, scene description or AI transcript$25 per 1,000 started 30-second blocks (a 45-second video counts as 2)
Video download without watermark$10 per 1,000 videos

Date and likes filters, exact hashtag match, search sorting, region choice, TikTok's own subtitles and image downloads are included. failed rows are free.

Example: 1,000 videos from a hashtag, each with AI analysis, cost $0.35 + $1.50 = $1.85.

The AI options run on paid Apify plans. On the free plan they are ignored, and one run searches up to 40 keywords.

Switching from clockworks/tiktok-scraper

The input is compatible. Field names follow clockworks/tiktok-scraper, so you can paste a saved input or API payload and run it here: hashtags, profiles, searchQueries, postURLs, resultsPerPage, profileScrapeSections, profileSorting, excludePinnedPosts, oldestPostDateUnified, newestPostDate, leastDiggs, mostDiggs, maxFollowersPerProfile, maxFollowingPerProfile, searchSection, maxProfilesPerQuery, videoSearchSorting, videoSearchDateFilter, scrapeRelatedVideos, commentsPerPost, topLevelCommentsPerPost, maxRepliesPerComment, the shouldDownload… options, downloadSubtitlesOptions, aiVideoSummary, aiVideoDescription and proxyCountryCode.

The output uses the same field names too (authorMeta, musicMeta, videoMeta, webVideoUrl, diggCount, playCount and so on), so existing spreadsheets and scripts keep working.

What is different:

  • Lower flat price. Filters, sorting and region choice don't add a charge per result.
  • Date and likes filters work together in one run.
  • Exact hashtag match drops videos that don't carry the tag.
  • Free failure rows tell you what went wrong instead of an empty run.
  • Comments, replies and followers are rows in the same dataset, marked by dataType. commentsDatasetUrl and followDatasetUrl are kept for compatibility but are null.
  • AI analysis: category, sponsored, brand safety, sentiment and your own yes/no questions.
  • New fields startUrls, musics, maxItems, hashtagMatch, aiAnalysis and aiQuestions.
  • Relative dates can be days, weeks, months or years ("30", "30 days", "2 weeks"). profileScrapeSections: ["stories"] is accepted but returns no stories: TikTok shows stories only to logged-in users. Fields this actor doesn't use, such as videoKvStoreIdOrName, are ignored; downloads always go to the run's own key-value store.

Fast, light runs

Runs start fast and use little memory (256 MB by default). For many AI summaries or video downloads, 512 MB makes the run about twice as fast.

Use cases

  • Influencer research. Compare creators by fans, average playCount and engagement, and vet their content with AI brand-safety labels.
  • Hashtag campaign tracking. Count the videos, views and likes under a campaign tag with exact match on, every day.
  • Trend and content research. Search a topic sorted by likes for the last week and see which formats and sounds take off.
  • Comment and sentiment analysis. Export comments with replies for a brand's videos and study what people say.
  • Audience research. List a creator's followers or the accounts they follow.
  • Video archive and transcripts. Save watermark-free MP4s and transcripts for analysis, captions or AI training sets you have rights to.

Send TikTok data to Slack, Notion or Google Sheets

Choose an authorized MCP connector in mcpConnector and the scraped videos are posted to that app when the run finishes. With a schedule, this gives you a daily feed of a creator's or a hashtag's new videos. If you leave the field empty, nothing is sent anywhere.

Use the TikTok scraper from AI agents

Claude, ChatGPT, Cursor and other MCP-capable agents can call this actor through Apify's MCP server:

https://mcp.apify.com/?tools=harshmaur/tiktok-scraper

TikTok API, schedules and integrations

  • Apify API: start runs and read the dataset from any language, or use the Python and JavaScript clients.
  • Schedules: run hourly, daily or weekly to track profiles, hashtags or keywords.
  • Webhooks: get notified when a run ends.
  • Make, Zapier and n8n: connect through Apify's integrations or a plain HTTP request to the API.

FAQ

The scraper reads only public data that anyone can see on TikTok without logging in. You are responsible for following the laws in your country and TikTok's terms, especially when you store personal data such as usernames and comments, or republish videos. If in doubt, ask a lawyer.

Do I need a TikTok account, cookies or proxies?

No. There is no login and nothing to paste. The scraper handles the connection to TikTok itself.

Can I scrape private accounts?

No. Private accounts and their videos are not public, so the scraper can't read them.

Why did an input fail?

The failed row tells you. profile_not_found means the account doesn't exist or is banned, hashtag_not_found that the tag has no videos, video_unavailable that TikTok removed or hides the video, and blocked that TikTok refused every attempt. Failed rows are free.

Why did I get fewer videos than I asked for?

TikTok shows a limited number of videos per profile, hashtag and keyword to logged-out visitors, and your filters drop videos that don't match. Split broad topics into narrower keywords or hashtags to collect more.

Can I use the input I already have for clockworks/tiktok-scraper?

Yes. Paste it as it is. See Switching from clockworks/tiktok-scraper for the small differences.

How do I get only new videos every day?

Schedule a run with oldestPostDateUnified set to "1" to keep only videos from the last day.

Are the video downloads really without watermark?

Yes. shouldDownloadVideos saves the MP4 without the TikTok watermark to the run's key-value store, and the link is in mediaUrls.

What does the AI analysis cost and how accurate is it?

See the pricing table for the price. The labels come from an AI model looking at the caption, cover image and transcript. Questions the model is unsure about come back as null instead of a guess.

More scrapers by the same developer