TikTok Data Extractor avatar

TikTok Data Extractor

Pricing

from $1.50 / 1,000 results

Go to Apify Store
TikTok Data Extractor

TikTok Data Extractor

Collect TikTok videos from links, profiles, hashtags or keywords: views, likes, shares, music, comments and transcripts. No login needed. Great for trend research, influencer vetting and competitor tracking. Export to Excel or CSV.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Data WiKi

Data WiKi

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Categories

Share

🚀 What is TikTok Data Extractor?

TikTok Data Extractor is an Apify Actor that collects public TikTok videos from video links, profiles, hashtags and keyword searches in one run, with no login and no cookies. Each video comes back as one row with caption, plays, likes, shares, saves, author stats, music and cover links, plus optional top comments and transcripts, ready for JSON, CSV or Excel.

  • One list for everything: mix a video link, @mrbeast, #funny and funny cats in the same run, like a TikTok scraper that takes many kinds of input at once.
  • Rows appear while the run is going: each video is saved as soon as it is ready, so a stopped run keeps everything collected so far.
  • Output in tabs: overview, engagement, authors, music, media, content, transcripts and source tabs, plus comments, profiles, hashtags and sources tables that are not billed.
  • Failures stay visible: an input that cannot be collected gets its own row with an error code, and the other inputs carry on.
  • Connection changes on its own: the run starts without a proxy and moves to another connection when TikTok stops answering.

The Actor runs in the cloud, so nothing is installed on your computer, and it reads only what a visitor without an account can see. Click Try for free, add an input and press Start.

📊 What data can you extract from TikTok?

You get one dataset row per video, and you can export the rows as JSON, CSV, Excel, XML or HTML. Read this way, the Actor works as a TikTok video data extractor for spreadsheets and databases. Field names below are the exact names in the dataset. TikTok leaves some values empty, so a field can be null.

FieldDescriptionExample
id, webVideoUrlVideo id and link to the video7000000000000000001
text, textLanguageCaption and its language code"Penalty practice", en
createTime, createTimeISO, scrapedAtPosting time (Unix and ISO) and collection time2026-01-01T12:00:00.000Z
isAd, isPinned, isPrivateAd flag, pinned flag, private flagfalse
authorMetaCreator id, name, nickname, verified flag, bio (signature), bioLink, avatar, fans, following, heart, video, digg, friends, region, accountCreatedISO and moreexample_creator
musicMetaSound name, author, original flag, album, duration, copyright and commerce flags, cover and play linkOriginal sound
playCount, diggCount, commentCount, shareCount, collectCount, repostCountPlays, likes, comments, shares, saves and reposts50000, 3000
engagementtotalInteractions, engagementRatePct, likeRatePct, commentRatePct, shareRatePct, saveRatePct, playsPerFollower7.44
videoMetaSize, length, resolution, format, codec, bitrate, quality score, cover links, play and download links, caption languages720 x 1280
hashtags, mentions, detailedMentionsHashtags and mentions found in the caption["football"]
contentCategories, isAiGenerated, aiDescriptionContent categories and AI label[], false
location, permissionsCountry code and place tag; duet, stitch, share, repost and comment settings"countryCode": "US"
isSlideshow, slideshowTitle, mediaUrlsSlideshow flag, its title and image linksfalse, []
effectStickers, stickerTexts, anchors, playlistIdEffects, sticker texts, anchors and playlist[]
transcript, comments, commentsErrorTranscript text and language, top-level comments, and the reason comments are missingnull
hashtagMeta, searchQuery, sourceType, sourceInput, collectedViaWhich input produced the row and how it was collectedhashtag, #football
input, url, error, errorCodeOnly on failed inputs: the input, its link, a message and a codePROFILE_PRIVATE

The authorMeta object holds the creator's followers, following, total likes and video count, plus bioLink when the creator lists one. Together they give you the TikTok creator stats of each video's author. The videoMeta fields hold the TikTok video metadata of the clip: size, length and quality. Caption language, categories, AI label, place and permissions have their own fields.

Four extra tables sit next to the videos in the Output tab and are not billed:

  • Comments: one row per comment with text, likes, replyCount, creator flags and the comment author, like the output of a TikTok comments scraper.
  • Profiles: one row per profile you enter, with followers, following, total likes, videos, region and bio link, as a TikTok user data extractor table.
  • Hashtags: one row per hashtag you enter with TikTok's video and view totals.
  • Sources: one row per input with status, videosSaved, error and errorCode.

⚠️ The comments field and the comments table are filled only when Comments per video is above 0, and transcript only when transcripts are switched on.

💡 Use cases for TikTok data

  • Influencer shortlists: sort the authorMeta followers, total likes and engagementRatePct of creators under a niche hashtag for TikTok influencer research.
  • Creator checks before outreach: compare followers, plays and engagement rates of recent videos for TikTok influencer vetting, and read authorMeta.bioLink for contact links.
  • Hashtag discovery: collect the videos under a few hashtags and read their hashtags, plays and music for TikTok hashtag research. The hashtags table adds TikTok's total views per hashtag.
  • Trend watching: set Posted after to a few days and sort by playCount for TikTok trend research on the videos TikTok shows for a keyword.
  • Competitor profiles: follow a brand's profile and its newest videos for TikTok competitor analysis, with plays, shares and saves side by side.
  • Content planning: captions, contentCategories, music and videoMeta.duration of well-played videos feed TikTok content research for your next posts.
  • Performance reporting: the engagement object gives the TikTok engagement rate of every video. Load the rows into a sheet for TikTok video analytics and compare playsPerFollower across creators.
  • Audience reactions: collect top comments per video and score them for TikTok comment sentiment analysis, using the likes and language fields of the comments table.
  • Training data: structured rows with captions, transcripts and comments make a TikTok dataset for classification, summaries or search.

🛠️ How to scrape TikTok videos

The Actor is a TikTok data scraper you run from the Apify Console in a few clicks.

  1. Create a free Apify account and open TikTok Data Extractor in the Apify Store.
  2. Add video links, profiles, hashtags, search links or keywords to Links, profiles, hashtags or keywords, one per line, to scrape TikTok videos from all of them at once.
  3. Set Max videos per profile, hashtag or search (default 10) and, if you want, Posted after such as 7d.
  4. Set Comments per video (default 2) to scrape TikTok comments, and choose Add transcripts if you need the spoken words.
  5. Click Start and follow the live log and the status message.
  6. Open the Output tab, switch between the tabs and download the data as JSON, CSV or Excel.

💡 Start with one hashtag and the default of 10 videos to see the data, then raise the limits. 💡 To scrape TikTok profile videos, enter @name or the profile link.

💰 How much does it cost to scrape TikTok?

TikTok Data Extractor uses pay per event pricing: you pay for each video saved to the dataset, plus a small start event per run. The price per video depends on your Apify plan tier, from $2.00 per 1,000 videos on the Free tier to $1.50 on Gold and above.

EventName in the Pricing tabPrice
Video savedmain_result (result, primary event)Free $0.002, Bronze $0.0018, Silver $0.0016, Gold, Platinum and Diamond $0.0015 per video
Run startapify-actor-start (Actor Start)$0.00005 per GB of memory; the Actor is set to 4,096 MB (4 GB), so 4 x $0.00005 = $0.0002 per run

Apify platform usage (compute) is billed on top of the events above. Failed inputs and the comments, profiles, hashtags and sources tables are not billed.

Plan tierPrice per videoCalculationPer 1,000 videos
Free$0.0021,000 x $0.002$2.00
Bronze$0.00181,000 x $0.0018$1.80
Silver$0.00161,000 x $0.0016$1.60
Gold, Platinum, Diamond$0.00151,000 x $0.0015$1.50

Worked examples, event costs only:

  • 100 videos on the Free tier: 100 x $0.002 = $0.20, plus $0.0002 start = $0.2002.
  • 1,000 videos on the Bronze tier: 1,000 x $0.0018 = $1.80, plus $0.0002 start = $1.8002.
  • 10,000 videos on the Gold tier: 10,000 x $0.0015 = $15.00, plus $0.0002 start = $15.0002.

If you set a maximum cost for a run, the Actor stops cleanly when the limit is reached and keeps the videos saved so far. See the Pricing tab for the current rates of your plan.

⬇️ Input

Only Links, profiles, hashtags or keywords (urls) is required, and the Input tab explains every field. An entry can be a TikTok video link, a profile (@mrbeast or a profile link), a hashtag (#funny or a tiktok.com/tag link), a TikTok search link or any plain keyword. Hashtag entries work like a TikTok hashtag scraper.

This example reads a hashtag and a keyword, keeps videos from the last 7 days, saves up to 5 per input, collects 2 comments per video and adds transcripts:

{
"urls": ["#football", "funny cats"],
"resultsPerPage": 5,
"oldestPostDateUnified": "7d",
"commentsPerPost": 2,
"downloadSubtitlesOptions": "DOWNLOAD_SUBTITLES",
"proxyConfiguration": { "useApifyProxy": false }
}
  • Videos per input: resultsPerPage (default 10, minimum 0) is the number of videos saved for every profile, hashtag and keyword. A video link always gives exactly that one video, which makes the Actor a TikTok video scraper for single clips. 0 means as many as TikTok shows without a login, which varies.
  • Comments: commentsPerPost (default 2, minimum 0) is how many top-level comments to collect per video. 0 switches comments off, and TikTok may return fewer for videos with few comments.
  • Date filter: oldestPostDateUnified keeps videos posted after a point. Use a number with h, d, w, m or y such as 24h, 7d, 2w, 3m or 1y, or a date like 2026-01-31. Leave it empty for no date filter.
  • Transcripts: downloadSubtitlesOptions is NEVER_DOWNLOAD_SUBTITLES (default) or DOWNLOAD_SUBTITLES. Videos without TikTok captions keep an empty transcript. With the option on, the Actor acts as a TikTok transcript scraper for every video that has captions.
  • Proxy: proxyConfiguration is optional. With no proxy selected, the Actor starts without one and switches to a proxy on its own if TikTok blocks the run. Pick a proxy there to start with it instead.

⬆️ Output

The scraped results are shown as a dataset in the Storage tab. The table view is for convenience and does not show all the fields. The Output tab offers the same rows as eight tabs (overview, engagement, authors, music, media, content, transcripts and source), next to the comments, profiles, hashtags and sources tables. The music tab shows the TikTok music data of each video: sound name, author and original flag.

You can download the data as JSON, CSV, Excel, XML or HTML and pick the fields before exporting. To export TikTok comments to Excel, open the comments table and choose Excel. The transcripts tab downloads the same way for a TikTok transcript download.

The example below is illustrative: the values are made up to show the structure and are not from a real run. It continues the input above.

{
"id": "7000000000000000001",
"text": "Penalty practice #football #training",
"textLanguage": "en",
"createTime": 1767268800,
"createTimeISO": "2026-01-01T12:00:00.000Z",
"isAd": false,
"authorMeta": {
"id": "6000000000000000001",
"name": "example_creator",
"profileUrl": "https://www.tiktok.com/@example_creator",
"nickName": "Example Creator",
"verified": false,
"fans": 20000,
"following": 150,
"heart": 900000,
"video": 320
},
"musicMeta": { "musicName": "Original sound", "musicAuthor": "example_creator", "musicOriginal": true },
"webVideoUrl": "https://www.tiktok.com/@example_creator/video/7000000000000000001",
"diggCount": 3000,
"shareCount": 200,
"playCount": 50000,
"collectCount": 400,
"commentCount": 120,
"hashtags": [{ "id": "1", "name": "football" }, { "id": "2", "name": "training" }],
"isSlideshow": false,
"engagement": {
"totalInteractions": 3720,
"engagementRatePct": 7.44,
"likeRatePct": 6,
"commentRatePct": 0.24,
"shareRatePct": 0.4,
"saveRatePct": 0.8,
"playsPerFollower": 2.5
},
"transcript": { "language": "eng-US", "source": "auto-captions (original speech)", "text": "Here is how to take a penalty." },
"comments": [
{ "id": "8000000000000000001", "text": "Great tips", "likes": 12, "replyCount": 0, "author": { "name": "example_fan" } }
],
"sourceType": "hashtag",
"sourceInput": "#football",
"collectedVia": "hashtag feed",
"scrapedAt": "2026-01-02T08:00:00.000Z"
}

A failed input gets a row like this one, and Sources records the same message:

{
"input": "@example_private",
"url": "https://www.tiktok.com/@example_private",
"sourceType": "profile",
"error": "@example_private is a private account - videos are not visible logged-out",
"errorCode": "PROFILE_PRIVATE"
}

⚠️ Limitations and error handling

  • Public data only: private accounts and private videos are not available, and the Actor reads nothing behind a login.
  • Partial feeds: TikTok shows people without an account only part of a hashtag, search or profile, so some inputs return fewer videos than Max videos per profile, hashtag or search. Run a small test to see how many you get.
  • Comments: only top-level comments are collected, and the number of replies is in replyCount. TikTok may return fewer comments than you asked for.
  • Transcripts: a transcript exists only for videos that have TikTok captions. Other videos keep an empty transcript, and the caption languages are always listed in videoMeta.subtitleLanguages.
  • Expiring links: play and download links in videoMeta and musicMeta can expire after a while, so download files soon after the run.
  • Slideshows: a slideshow post returns its images as TikTok slideshow data in mediaUrls and slideshowTitle.
  • Empty values: TikTok does not provide every field for every video, so some fields stay null.
  • Stops: a run ends cleanly when your spending limit is reached and keeps the videos saved so far; the log and status message say so.

A failed input is saved as a row with error and errorCode, and the other inputs carry on:

errorCodeMeaningWhat to do
POST_NOT_FOUND, POST_NOT_FOUND_OR_PRIVATEThe video was removed, is private or cannot be shownCheck the link in a browser
POST_PRIVATEThe video is privateNothing, private videos are not available
POST_REGION_BLOCKEDTikTok does not show the video in the region of the connectionChoose a proxy in another country
FETCH_FAILEDThe page could not be readRun again later or choose a proxy
NOT_FOUNDThe profile or hashtag does not existCheck the spelling
PROFILE_PRIVATEThe account is privateNothing, its videos are not visible
PROFILE_EMPTYThe profile has no public videosNothing
PROFILE_UNAVAILABLE, PROFILE_FEED_UNAVAILABLEThe profile or its video list could not be readRun again later or choose a proxy
HASHTAG_FEED_UNAVAILABLE, NO_TRENDING_FOR_HASHTAGTikTok returned no videos for the hashtagTry another hashtag or run again later
SEARCH_UNAVAILABLE, SEARCH_QUERY_NOT_FOUNDTikTok returned no videos for the keywordTry another keyword or run again later
FILTER_NO_PASSVideos were found but none passed Posted afterUse a longer period
INVALID_INPUTThe entry is not a video link, profile, hashtag, search link or keywordCorrect the entry
INVALID_URLSA short link could not be resolved or does not lead to a video or profileUse the full TikTok link
MUSIC_NOT_FOUNDA TikTok sound link returned no videosCheck the link or run again later
BLOCKEDTikTok kept refusing the connectionChoose a proxy and run again
PARSE_ERROR, UNEXPECTED_ERRORA video or input could not be processedRun again; open an issue if it repeats

The Sources table shows one status per input: done, failed, stopped or skipped. The run itself fails with a clear status message when Posted after or another number is not valid, when no input is given, or when no video could be collected from any input.

🔌 Integrating TikTok Data Extractor with other apps

You can start the Actor from the Apify API, run it on a schedule and connect it to other tools through webhooks and integrations. The API tab of the Actor shows ready-made JavaScript, Python and CLI calls, and the Apify API reference describes how to start runs and read datasets. Called this way, it is a TikTok scraper API that takes the input as JSON and returns the dataset. It is not an official TikTok API.

Run it again and again

Schedule the Actor with the same profiles or hashtags and set Posted after to match the interval, for example 7d for a weekly run. Each run is a separate dataset, so you can compare plays and followers from one run to the next to track competitors yourself in a TikTok competitor tracker sheet. Pass the rows on to a sheet or dashboard for your own reports.

🔗 Other social media scrapers by data_wiki

ActorWhat it extractsWhen to use it
TikTok Shop product search scraperTikTok Shop products by keyword with units sold, prices, reviews and sellersWhen you need shop products, not videos
Instagram reels by hashtag scraperPublic Instagram reels by hashtag or keywordWhen your hashtag research also covers Instagram
Douyin keyword and hashtag search scraperDouyin videos by keyword, hashtag or linkWhen you follow short videos on Douyin, the Chinese app
Douyin creator profile scraperPublic Douyin creator profiles with followers and postsWhen you compare creators on Douyin
Pinterest keyword searchPins, boards, creators and related searches for any keywordYour keyword research also covers Pinterest, not only TikTok videos
Tripadvisor reviews datasetReview rows with stars, text, trip type and place detailsAfter spotting a destination trend, to read what visitors say about places there

The data in this Actor comes from public pages of TikTok. New to Apify? The Apify documentation explains runs, datasets and schedules.

TikTok Data Extractor only extracts data that users have made publicly available on TikTok and does not extract private data. Results can still contain personal data, such as usernames, captions and comments, so collect it only for a legitimate reason. Whether your use is allowed depends on TikTok's terms and on privacy laws such as GDPR and CCPA, and you are responsible for following them and for keeping request volumes reasonable. Consult a lawyer if you are unsure. Apify explains the topic in is web scraping legal? and ethical web scraping.

❓ FAQ

How does TikTok Data Extractor work?

You give it video links, profiles, hashtags, search links or keywords. The Actor recognises each entry, reads the public videos, adds the comments and transcripts you switch on, and saves each video to the dataset as soon as it is ready. Entries that fail get an error row.

Do I need a TikTok account or API key?

No. You need no TikTok account, no cookies and no TikTok API key. It works as a TikTok scraper no login required, because only what a visitor without an account can see is returned.

How much does it cost?

You pay per video saved, at the price of your Apify plan tier, plus the start event of $0.0002 per run at 4,096 MB. 1,000 videos cost $2.00 on the Free tier and $1.50 on Gold, before Apify platform usage. See the pricing section for the full table.

Up to the number you set in Max videos per profile, hashtag or search. TikTok shows people without an account only part of a hashtag or search, so some inputs return fewer. Add more hashtags or keywords to collect more.

Can I scrape private accounts or videos?

No. A private profile returns a row with the code PROFILE_PRIVATE, and a private video returns POST_PRIVATE.

Can I get comments and replies?

You get top-level comments up to Comments per video. Replies are not collected, but each comment has a replyCount. Add one video link per entry for a run that is only about comments. The comments table then works as a TikTok comment exporter for a sheet. You can download TikTok comments from it as JSON, CSV or Excel.

Why is a transcript empty?

Transcripts exist only for videos that have TikTok captions. The Actor adds the text and its language when captions exist. Switch on Add transcripts and the Actor works as a TikTok transcript extractor for the videos you list.

Do I need a proxy?

No. Proxy settings are optional, and the Actor switches to a proxy on its own when TikTok stops answering. You can pick a proxy in the input to start with it.

Can I look up a profile or hashtag on its own?

Yes. Enter @name for a TikTok profile scraper run that saves the creator's latest videos and a profile row. The profile row holds the public TikTok profile stats. Enter #tag to save the hashtag's videos and a hashtag row with TikTok's totals. With several tags you get a TikTok hashtag video list for each of them.

Can I search TikTok by keyword?

Yes. Any plain entry such as funny cats is searched like a TikTok search scraper would, and each video row records the phrase in searchQuery.

Can I use TikTok Data Extractor through MCP?

Yes. The Apify MCP server at https://mcp.apify.com lets AI agents find Actors, read their details and run them, so an agent can start TikTok Data Extractor like any other Actor.

The Actor reads only public data, but you stay responsible for how you use it. See the legality section above for GDPR, terms of use and when to ask a lawyer.

💬 Your feedback

Found a bug or need another field? Open an issue on the Actor's Issues tab. Need a custom solution? Contact hello.datawiki@gmail.com.