TikTok Video Scraper
Pricing
from $1.75 / 1,000 results
TikTok Video Scraper
Tired of copying TikTok stats by hand? Paste any video URL and get captions, hashtags, views, likes, comments, shares, author and music data, plus watermark-free video downloads and transcripts. Export JSON, CSV or Excel. No login or cookies.
Pricing
from $1.75 / 1,000 results
Rating
0.0
(0)
Developer
Crawl Craft
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
What is TikTok Video Scraper?
TikTok Video Scraper is an Apify Actor that turns TikTok post URLs into structured data. This TikTok video scraper returns captions, hashtags, views, likes, comments, shares, author and music details, and can also download media and create transcripts. Results export as JSON, CSV or Excel, and you need no login.
- Bulk input: paste as many post URLs as you like, or link a
.txtfile with one URL per line. - Full media downloads: save videos, cover images, slideshow images and music to your Apify storage.
- Transcripts: use TikTok's own subtitles or speech-to-text.
- Related videos: collect what TikTok recommends next to each post.
- Photo posts too: you can scrape TikTok photo posts, and their slideshow images can be saved.
Click Try for free, paste a post URL and press Start. You can use this TikTok scraper online, so there is nothing to install.
What data can you extract from TikTok?
Wondering how to get TikTok video data without copying it by hand? Each result is one TikTok video metadata record, with the field names below. It holds views, likes, the caption, hashtags and details on the author and the sound. Export the dataset as JSON, CSV or Excel.
| Field | Description | Example |
|---|---|---|
id | TikTok ID of the post | 7200360993149553925 |
text | Caption text of the post, line breaks kept | opening your inbox has never been this exciting π #prague #startup #valentinesday |
textLanguage | Language code TikTok detected for the caption | en |
createTime / createTimeISO | Upload time as a unix timestamp and in ISO 8601 (UTC) | 1676464688 / 2023-02-15T12:38:08.000Z |
webVideoUrl | Link to the post on TikTok | https://www.tiktok.com/@apifylife/video/7200360993149553925 |
playCount, diggCount, commentCount, shareCount, collectCount, repostCount | Plays, likes, comments, shares, saves and reposts | 1501, 155, 1, 2, 1, 0 |
likeCount | Same as diggCount | 155 |
mentions / detailedMentions | @usernames in the caption, and mentioned accounts with ID, name and profile URL | ["@bdtiktokofficial","@kalesalad"] |
hashtags | Hashtags in caption order with ID, name, description and cover when TikTok has them | |
authorMeta / author | Author profile (name, nickname, avatar, bio, bio link, followers, following, likes, video count, verified, region) and a compact author object | |
musicMeta / music | Sound used in the post (name, author, original or not, album, cover, play URL, duration, ID) and a compact music object | |
videoMeta | Video size, duration, cover, quality, format, subtitle links and download links | |
videoUrl, mediaUrls, coverImg, slideshowImageLinks, images | Links to the video, cover and slideshow images; stored copies when downloads are on | |
locationCreated, locationMeta, region | Country code of the post, a tagged place if any, and region | CZ |
isSlideshow, isPinned, isSponsored, isAd, isMuted, isStory, hasTikTokShopProduct | Post flags | false |
stickerTexts, diversificationLabels, effectStickers, anchors, suggestedWords | On-screen sticker text, TikTok categories, effects used, attached links and suggested search words | ["moving week π¦","new office ππ"] |
duetEnabled, stitchEnabled, shareEnabled, canRepost, commentsDisabled, isPrivate, forFriendsOnly | Permission and visibility flags | true / false |
transcript, transcriptText, transcriptLanguage, transcriptSource, transcriptSegments, transcriptWordCount, subtitles, whisper, subtitleMode | Transcript in WebVTT with timestamps, plain text, language, source and subtitle details | ASR, NEVER_DOWNLOAD_SUBTITLES |
isRelatedVideo, relatedToVideoId, relatedViaVideoId, relatedDepth, relatedVideosScraped, originalVideoDetail | Links each related video to the post it was found next to | 1 |
downloads | Links to stored files: video, cover, music, slideshow images, subtitles, transcription | |
input, submittedVideoUrl, url, scrapedAt | The input value, the URL you submitted, the post URL and collection time |
The dataset also defines further fields, such as isAiGenerated, textTranslatable, categoryType, takeDown and warnInfo. Open the Output tab for the complete TikTok video information.
Use cases for TikTok data
Teams use this TikTok data scraper for jobs like these:
- Content analysis: compare TikTok engagement metrics such as
playCount,diggCount,shareCountandcollectCountacross posts. Run a list of posts through this TikTok analytics scraper and export the counts. - Reporting: feed the counts into your own dashboards for TikTok video analytics.
- Benchmarking: line up TikTok video statistics from different accounts side by side.
- Influencer research: use author fields such as followers, likes and verified status for TikTok influencer research.
- Hashtag and trend tracking: collect TikTok hashtag data from
hashtags,mentionsanddiversificationLabelsto see how creators tag their posts. - Sound research: use
musicMetafor TikTok music data, such as which sounds are used in the posts you track. - Content archiving: download videos, covers and slideshow images to your own storage, where the links do not expire like TikTok's own.
- Transcript and caption research: feed
transcriptTextinto your own analysis tools. - Ad and sponsorship checks: filter on flags such as
isAdandisSponsored.
How to scrape TikTok videos
The steps are short. You can run the TikTok video scraper online from the Apify Console, with no setup.
- Create a free Apify account.
- Open TikTok Video Scraper.
- Add one or more post URLs to TikTok video URLs (
urls). You can scrape TikTok videos by URL, and you can also paste short links or post IDs. - Switch on the options you need, such as related videos, downloads or subtitles.
- Click Start and wait for the run to finish.
- Download the dataset as JSON, CSV or Excel. To export TikTok video data to CSV, pick CSV in the Storage tab.
How to download TikTok video without watermark
Switch on Download videos (shouldDownloadVideos) and keep Video download quality (videoDownloadQuality) on best, which gives the highest quality without the TikTok watermark. lowest saves the smallest file and original saves TikTok's own watermarked file when TikTok offers it. Leave related videos and subtitles off if you only need a TikTok video downloader.
How to save covers, slideshow images and music
Switch on shouldDownloadCovers to download TikTok cover image files and shouldDownloadMusic to save the sound. For photo posts, switch on shouldDownloadSlideshowImages to download TikTok slideshow images. Files go to the key-value store you name in videoKvStoreIdOrName, or to the run's default storage. Downloads increase run time and storage use.
How to get a TikTok transcript
Set Subtitles & transcription mode (downloadSubtitlesOptions) to choose between four modes: NEVER_DOWNLOAD_SUBTITLES, DOWNLOAD_SUBTITLES, DOWNLOAD_AND_TRANSCRIBE_VIDEOS_WITHOUT_SUBTITLES and TRANSCRIBE_ALL_VIDEOS. TikTok subtitles are used when a video has them. For a quick TikTok transcript download, pick DOWNLOAD_SUBTITLES and optionally list languages in subtitleLanguages. Transcripts are saved as plain text (transcriptText) and as WebVTT (transcript). To transcribe the spoken audio instead, choose a mode that transcribes and set the model in transcriptionModel (tiny, base, small, medium, large-v3 or distil-large-v3); it takes extra time per video. The medium and distil-large-v3 models need 4 GB or more of run memory, and large-v3 needs 8 GB or more, so raise the run memory before using them.
If transcripts are your main goal, TikTok Transcript Scraper is built for them: it offers timestamped text, every subtitle language, AI speech-to-text and translation into 133 languages.
How to collect related videos
Turn on Scrape related videos (scrapeRelatedVideos) and set resultsPerPage to choose how many related videos to collect per post. Each related video is a separate result. Fields such as relatedToVideoId show which post it belongs to.
How much does it cost to scrape TikTok?
TikTok Video Scraper uses tiered pay-per-event pricing: $2.5 per 1,000 results on the Free plan, and less on paid plans. The event is main_result, charged once per saved video result. Error rows for inputs that could not be scraped are not charged.
| Apify plan | Price per 1,000 results |
|---|---|
| Free | $2.5 |
| Bronze | $2.25 |
| Silver | $2 |
| Gold / Platinum / Diamond | $1.75 |
For example, 1,000 results cost $2.5 on the Free plan. Each run also has a small start charge of $0.00005 (the Actor Start event). The free plan lets you try the TikTok scraper free of charge: you get up to 10 results per run, and there is no monthly limit. Paid Apify plans have no per-run limit. See the Pricing tab for current rates, which always take priority over this page.
Input
Only urls is required. It accepts full video or photo URLs, embed URLs, vm.tiktok.com and vt.tiktok.com short links, bare post IDs, or a link to a .txt file with one URL per line. That makes it a simple fit for anyone who needs a TikTok video link scraper: one link or a long list works.

See the Input tab for every option. Below is an example input:
{"urls": ["https://www.tiktok.com/@apifylife/video/7200360993149553925"],"scrapeRelatedVideos": false,"resultsPerPage": 10,"shouldDownloadVideos": false,"downloadSubtitlesOptions": "NEVER_DOWNLOAD_SUBTITLES","videoKvStoreIdOrName": "tiktok-videos"}
π‘ Start with one or two URLs to test your settings. Free plan users get up to 10 results per run in total, including related videos.
Other options include scrapeAuthorProfile (full author profile details), resolvePinnedStatus (fills isPinned), customMapFunction (a Python function that reshapes each result), maxConcurrency, maxRetries, requestDelaySecs, requestTimeoutSecs and proxyConfiguration.
Output
The scraped results are shown as a dataset in the Storage tab. The table view is for convenience and doesn't show all the fields. Each record holds the full TikTok video details for one post. The field transcriptText carries the TikTok transcript text without timestamps. The Output tab has views for overview, captions and hashtags, engagement, authors, music, video, subtitles and transcripts, related videos, downloads and errors.

Export formats: JSON, CSV and Excel.
Example output (values taken from the Actor's dataset schema, using the example input above; fields without a schema example are left out here):
{"id": "7200360993149553925","text": "opening your inbox has never been this exciting π #prague #startup #valentinesday ","textLanguage": "en","createTime": 1676464688,"createTimeISO": "2023-02-15T12:38:08.000Z","isMuted": false,"locationCreated": "CZ","isAd": false,"hasTikTokShopProduct": false,"webVideoUrl": "https://www.tiktok.com/@apifylife/video/7200360993149553925","diggCount": 155,"shareCount": 2,"playCount": 1501,"collectCount": 1,"commentCount": 1,"repostCount": 0,"mentions": ["@bdtiktokofficial", "@kalesalad"],"isSlideshow": false,"isPinned": false,"isSponsored": false,"input": "https://www.tiktok.com/@apifylife/video/7200360993149553925","submittedVideoUrl": "https://www.tiktok.com/@apifylife/video/7200360993149553925","stickerTexts": ["moving week π¦", "new office ππ"],"diversificationLabels": ["Diary & VLOG", "Daily Life", "Lifestyle"]}
Error row output
Inputs that cannot be scraped appear as error rows. Besides id, url, input, submittedVideoUrl and scrapedAt, they carry the fields below. This example shows an invalid input and only the fields that have a schema example:
{"inputKind": "invalid","error": "not a TikTok video/photo URL, short link or post id","errorCode": "INVALID_URL","invalidUrls": ["not-a-tiktok-url"]}
Limitations and error handling
- Free plan cap: free plan users get up to 10 results per run. Paid plans have no limit.
- Public posts only: private posts and private data cannot be scraped. Posts that are private, deleted or blocked in a region come back as error rows.
- Error codes: the
errorCodefield can beNOT_FOUND,PRIVATE,REGION_BLOCKED,INVALID_URL,SHORT_URL_UNRESOLVED,URL_LIST_UNREADABLE(a.txtURL list could not be read),TIKTOK_ERROR(TikTok returned another error status) orFETCH_FAILED. Error rows are not charged. - Comments are not collected:
commentsDatasetUrlis alwaysnull. You still getcommentCount. - Always-empty fields:
fromProfileSection,searchQuery,searchHashtagandsearchMusicare not used and are alwaysnull. - Downloads and transcription: these add run time and storage use, and larger speech-to-text models need more memory.
- Spend limit: if you set a spend limit on the run, the Actor stops cleanly and keeps what it saved.
Integrating TikTok Video Scraper with other apps
TikTok Video Scraper runs on Apify, so you can start it from the Apify API, schedule it, or trigger webhooks when a run finishes. The API tab has ready-made JavaScript, Python and CLI snippets, so you can call it as a TikTok scraper API from your own code. See Apify integrations for apps you can connect. The output is structured, so other tools can read it directly.
Other TikTok scrapers by crawl_craft
| Actor | What it extracts | When to use it |
|---|---|---|
| TikTok User Search Scraper | Full creator profiles from a keyword search: username, bio, bio link, followers, likes, videos, verified, TikTok Shop and live status | Use it when you need to find creators by keyword, before you scrape their individual videos with TikTok Video Scraper. |
| TikTok Transcript Scraper | Timestamped transcripts, every subtitle language, AI speech-to-text and translation into 133 languages | Use it when transcripts are the main goal rather than video statistics. |
Is it legal to scrape TikTok?
TikTok Video Scraper only extracts data that users have made publicly available on TikTok and does not extract private data such as email addresses or location. Results may still contain personal data, so only collect it with a legitimate reason. Consider GDPR (Regulation (EU) 2016/679) and TikTok's terms, and consult a lawyer if you are unsure. Read Apify's posts on whether web scraping is legal and ethical web scraping.
β FAQ
How much does it cost to use TikTok Video Scraper?
It costs $2.5 per 1,000 results on the Free plan and less on paid plans, on a pay-per-event basis. Free plan users get up to 10 results per run. See the Pricing tab for current rates.
Do I need a TikTok account or login?
No. You do not need to log in to TikTok, so this is a TikTok video scraper with no login. You only need an Apify account to run it.
How many TikTok videos can I scrape?
Free plan users get up to 10 results per run, counting related videos. Paid plans have no per-run limit. Run a small test first to confirm the output fits your needs.
Can I scrape private TikTok data?
No. Only public posts can be scraped, and private posts return an error row with the code PRIVATE.
How to scrape TikTok with Python?
Start a run through the Apify API from your own Python code and read the dataset afterwards. The API tab shows ready-made snippets, so you do not need a separate TikTok scraper Python package.
Can I get the video without the watermark?
Yes. Switch on Download videos and keep the quality on best. See the download section above.
Does it scrape TikTok comments?
No. It returns commentCount, but comments themselves are not collected.
Do I need proxies?
Proxy settings are optional. Leave the default if you are unsure.
Is there a TikTok scraper tool for people who do not code?
Yes. The Apify Console form is a TikTok video scraper tool that needs no code: paste your URLs, choose options and press Start.
Can I scrape many TikTok videos at once?
Yes. A bulk TikTok video scraper run only needs a longer list: paste many URLs, or link a .txt file with one URL per line. Use maxConcurrency to set how many are processed in parallel.
Your feedback
Found a bug or want a feature? Open a ticket in the Issues tab of this Actor. For a custom solution, email hello.crawlcraft@gmail.com.