TikTok Data Extractor
Pricing
from $1.50 / 1,000 results
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
Maintained by CommunityActor 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,#funnyandfunny catsin 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.
| Field | Description | Example |
|---|---|---|
id, webVideoUrl | Video id and link to the video | 7000000000000000001 |
text, textLanguage | Caption and its language code | "Penalty practice", en |
createTime, createTimeISO, scrapedAt | Posting time (Unix and ISO) and collection time | 2026-01-01T12:00:00.000Z |
isAd, isPinned, isPrivate | Ad flag, pinned flag, private flag | false |
authorMeta | Creator id, name, nickname, verified flag, bio (signature), bioLink, avatar, fans, following, heart, video, digg, friends, region, accountCreatedISO and more | example_creator |
musicMeta | Sound name, author, original flag, album, duration, copyright and commerce flags, cover and play link | Original sound |
playCount, diggCount, commentCount, shareCount, collectCount, repostCount | Plays, likes, comments, shares, saves and reposts | 50000, 3000 |
engagement | totalInteractions, engagementRatePct, likeRatePct, commentRatePct, shareRatePct, saveRatePct, playsPerFollower | 7.44 |
videoMeta | Size, length, resolution, format, codec, bitrate, quality score, cover links, play and download links, caption languages | 720 x 1280 |
hashtags, mentions, detailedMentions | Hashtags and mentions found in the caption | ["football"] |
contentCategories, isAiGenerated, aiDescription | Content categories and AI label | [], false |
location, permissions | Country code and place tag; duet, stitch, share, repost and comment settings | "countryCode": "US" |
isSlideshow, slideshowTitle, mediaUrls | Slideshow flag, its title and image links | false, [] |
effectStickers, stickerTexts, anchors, playlistId | Effects, sticker texts, anchors and playlist | [] |
transcript, comments, commentsError | Transcript text and language, top-level comments, and the reason comments are missing | null |
hashtagMeta, searchQuery, sourceType, sourceInput, collectedVia | Which input produced the row and how it was collected | hashtag, #football |
input, url, error, errorCode | Only on failed inputs: the input, its link, a message and a code | PROFILE_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,erroranderrorCode.
⚠️ The
commentsfield and the comments table are filled only when Comments per video is above 0, andtranscriptonly when transcripts are switched on.
💡 Use cases for TikTok data
- Influencer shortlists: sort the
authorMetafollowers, total likes andengagementRatePctof 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.bioLinkfor 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
playCountfor 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 andvideoMeta.durationof well-played videos feed TikTok content research for your next posts. - Performance reporting: the
engagementobject gives the TikTok engagement rate of every video. Load the rows into a sheet for TikTok video analytics and compareplaysPerFolloweracross creators. - Audience reactions: collect top comments per video and score them for TikTok comment sentiment analysis, using the
likesandlanguagefields 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.
- Create a free Apify account and open TikTok Data Extractor in the Apify Store.
- 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.
- Set Max videos per profile, hashtag or search (default 10) and, if you want, Posted after such as
7d. - Set Comments per video (default 2) to scrape TikTok comments, and choose Add transcripts if you need the spoken words.
- Click Start and follow the live log and the status message.
- 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
@nameor 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.
| Event | Name in the Pricing tab | Price |
|---|---|---|
| Video saved | main_result (result, primary event) | Free $0.002, Bronze $0.0018, Silver $0.0016, Gold, Platinum and Diamond $0.0015 per video |
| Run start | apify-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 tier | Price per video | Calculation | Per 1,000 videos |
|---|---|---|---|
| Free | $0.002 | 1,000 x $0.002 | $2.00 |
| Bronze | $0.0018 | 1,000 x $0.0018 | $1.80 |
| Silver | $0.0016 | 1,000 x $0.0016 | $1.60 |
| Gold, Platinum, Diamond | $0.0015 | 1,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.0means 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.0switches comments off, and TikTok may return fewer for videos with few comments. - Date filter:
oldestPostDateUnifiedkeeps videos posted after a point. Use a number withh,d,w,morysuch as24h,7d,2w,3mor1y, or a date like2026-01-31. Leave it empty for no date filter. - Transcripts:
downloadSubtitlesOptionsisNEVER_DOWNLOAD_SUBTITLES(default) orDOWNLOAD_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:
proxyConfigurationis 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
videoMetaandmusicMetacan expire after a while, so download files soon after the run. - Slideshows: a slideshow post returns its images as TikTok slideshow data in
mediaUrlsandslideshowTitle. - 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:
errorCode | Meaning | What to do |
|---|---|---|
POST_NOT_FOUND, POST_NOT_FOUND_OR_PRIVATE | The video was removed, is private or cannot be shown | Check the link in a browser |
POST_PRIVATE | The video is private | Nothing, private videos are not available |
POST_REGION_BLOCKED | TikTok does not show the video in the region of the connection | Choose a proxy in another country |
FETCH_FAILED | The page could not be read | Run again later or choose a proxy |
NOT_FOUND | The profile or hashtag does not exist | Check the spelling |
PROFILE_PRIVATE | The account is private | Nothing, its videos are not visible |
PROFILE_EMPTY | The profile has no public videos | Nothing |
PROFILE_UNAVAILABLE, PROFILE_FEED_UNAVAILABLE | The profile or its video list could not be read | Run again later or choose a proxy |
HASHTAG_FEED_UNAVAILABLE, NO_TRENDING_FOR_HASHTAG | TikTok returned no videos for the hashtag | Try another hashtag or run again later |
SEARCH_UNAVAILABLE, SEARCH_QUERY_NOT_FOUND | TikTok returned no videos for the keyword | Try another keyword or run again later |
FILTER_NO_PASS | Videos were found but none passed Posted after | Use a longer period |
INVALID_INPUT | The entry is not a video link, profile, hashtag, search link or keyword | Correct the entry |
INVALID_URLS | A short link could not be resolved or does not lead to a video or profile | Use the full TikTok link |
MUSIC_NOT_FOUND | A TikTok sound link returned no videos | Check the link or run again later |
BLOCKED | TikTok kept refusing the connection | Choose a proxy and run again |
PARSE_ERROR, UNEXPECTED_ERROR | A video or input could not be processed | Run 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.
- Send results to Google Sheets, Slack, Make, Zapier, Airbyte and more through the Apify integrations.
- Use Apify schedules to run the same inputs daily or weekly.
- Add a webhook to react when a run finishes.
- Let AI agents run the Actor through the Apify MCP server.
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
| Actor | What it extracts | When to use it |
|---|---|---|
| TikTok Shop product search scraper | TikTok Shop products by keyword with units sold, prices, reviews and sellers | When you need shop products, not videos |
| Instagram reels by hashtag scraper | Public Instagram reels by hashtag or keyword | When your hashtag research also covers Instagram |
| Douyin keyword and hashtag search scraper | Douyin videos by keyword, hashtag or link | When you follow short videos on Douyin, the Chinese app |
| Douyin creator profile scraper | Public Douyin creator profiles with followers and posts | When you compare creators on Douyin |
| Pinterest keyword search | Pins, boards, creators and related searches for any keyword | Your keyword research also covers Pinterest, not only TikTok videos |
| Tripadvisor reviews dataset | Review rows with stars, text, trip type and place details | After 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.
⚖️ Is it legal to scrape TikTok?
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.
How many videos can I get from one hashtag or search?
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.
Is it legal to scrape TikTok data?
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.