TikTok Video Scraper avatar

TikTok Video Scraper

Pricing

from $1.75 / 1,000 results

Go to Apify Store
TikTok Video Scraper

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

Crawl Craft

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

10

Monthly active users

6 days ago

Last modified

Categories

Security

Limited permissions

Share

๐Ÿš€ What is TikTok Video Scraper?

Tired of copying TikTok stats by hand? 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 .txt file 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.

FieldDescriptionExample
idTikTok ID of the post7200360993149553925
textCaption text of the post, line breaks keptopening your inbox has never been this exciting ๐Ÿ’• #prague #startup #valentinesday
textLanguageLanguage code TikTok detected for the captionen
createTime / createTimeISOUpload time as a unix timestamp and in ISO 8601 (UTC)1676464688 / 2023-02-15T12:38:08.000Z
webVideoUrlLink to the post on TikTokhttps://www.tiktok.com/@apifylife/video/7200360993149553925
playCount, diggCount, commentCount, shareCount, collectCount, repostCountPlays, likes, comments, shares, saves and reposts1501, 155, 1, 2, 1, 0
likeCountSame as diggCount155
mentions / detailedMentions@usernames in the caption, and mentioned accounts with ID, name and profile URL["@bdtiktokofficial","@kalesalad"]
hashtagsHashtags in caption order with ID, name, description and cover when TikTok has them
authorMeta / authorAuthor profile (name, nickname, avatar, bio, bio link, followers, following, likes, video count, verified, region) and a compact author object
musicMeta / musicSound used in the post (name, author, original or not, album, cover, play URL, duration, ID) and a compact music object
videoMetaVideo size, duration, cover, quality, format, subtitle links and download links
videoUrl, mediaUrls, coverImg, slideshowImageLinks, imagesLinks to the video, cover and slideshow images; stored copies when downloads are on
locationCreated, locationMeta, regionCountry code of the post, a tagged place if any, and regionCZ
isSlideshow, isPinned, isSponsored, isAd, isMuted, isStory, hasTikTokShopProductPost flagsfalse
stickerTexts, diversificationLabels, effectStickers, anchors, suggestedWordsOn-screen sticker text, TikTok categories, effects used, attached links and suggested search words["moving week ๐Ÿ“ฆ","new office ๐Ÿ“๐ŸŽŠ"]
duetEnabled, stitchEnabled, shareEnabled, canRepost, commentsDisabled, isPrivate, forFriendsOnlyPermission and visibility flagstrue / false
transcript, transcriptText, transcriptLanguage, transcriptSource, transcriptSegments, transcriptWordCount, subtitles, whisper, subtitleModeTranscript in WebVTT with timestamps, plain text, language, source and subtitle detailsASR, NEVER_DOWNLOAD_SUBTITLES
isRelatedVideo, relatedToVideoId, relatedViaVideoId, relatedDepth, relatedVideosScraped, originalVideoDetailLinks each related video to the post it was found next to1
downloadsLinks to stored files: video, cover, music, slideshow images, subtitles, transcription
input, submittedVideoUrl, url, scrapedAtThe 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 to reach goals like these:

  • Measure how your TikTok videos perform: compare TikTok engagement metrics such as playCount, diggCount, shareCount and collectCount across posts. Run a list of posts through this TikTok analytics scraper and export the counts.
  • Work out your TikTok engagement rate: combine diggCount, commentCount, shareCount and collectCount with playCount in your own spreadsheet. The Actor returns the counts, not a ready-made rate.
  • Report on TikTok video analytics by link: paste the post links you care about and feed the counts into your own dashboards.
  • Run a TikTok competitor analysis: submit the post URLs of rival accounts and line up TikTok video statistics from different accounts side by side with playCount, commentCount and the follower counts in authorMeta.
  • Benchmark against the same posts later: run the same URLs again on another day to see how your TikTok benchmark moves. The scrapedAt field tells you when each row was collected.
  • Shortlist creators for TikTok influencer research: use author fields such as followers, likes and verified status from authorMeta.
  • Plan TikTok hashtag research: collect TikTok hashtag data from hashtags, mentions and diversificationLabels to see how creators tag their posts.
  • Spot TikTok music trends: use musicMeta for TikTok music data, such as which sounds are used in the posts you track.
  • Save TikTok videos for your own archive: download videos, covers and slideshow images to your own storage, where the video links do not expire like TikTok's own. That gives you a TikTok video archive of the posts you choose.
  • Check TikTok sponsored content: filter on flags such as isAd and isSponsored to find ads and paid partnerships among the posts you submit.
  • Transcript and caption research: feed transcriptText into your own TikTok content analysis tools.

๐Ÿ› ๏ธ How to scrape TikTok videos

The steps are short. You can run the TikTok video scraper online from the Apify Console, with no setup.

  1. Create a free Apify account.
  2. Open TikTok Video Scraper.
  3. 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.
  4. Switch on the options you need, such as related videos, downloads or subtitles.
  5. Click Start and wait for the run to finish.
  6. 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.

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 planPrice 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). 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.

TikTok video scraper input form with TikTok video URLs

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.

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.

TikTok video data extractor output table with views, likes and hashtags

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

  • 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 errorCode field can be NOT_FOUND, PRIVATE, REGION_BLOCKED, INVALID_URL, SHORT_URL_UNRESOLVED, URL_LIST_UNREADABLE (a .txt URL list could not be read), TIKTOK_ERROR (TikTok returned another error status) or FETCH_FAILED. Error rows are not charged.
  • Comments are not collected: commentsDatasetUrl is always null. You still get commentCount.
  • Always-empty fields: fromProfileSection, searchQuery, searchHashtag and searchMusic are not used and are always null.
  • 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.

To keep watching the same posts, save your urls as the input and use Apify schedules to run the Actor every day or week. Each run collects the posts you list again, and scrapedAt lets you compare counts between runs. This Actor has no monitor mode and no new-posts-only option. Add a webhook to be told when a run finishes, so you can pass the dataset on to your own tools.

๐Ÿ”— Other TikTok scrapers by crawl_craft

ActorWhat it extractsWhen to use it
TikTok User Search ScraperFull creator profiles from a keyword search: username, bio, bio link, followers, likes, videos, verified, TikTok Shop and live statusUse it when you need to find creators by keyword, before you scrape their individual videos with TikTok Video Scraper.
TikTok Transcript ScraperTimestamped transcripts, every subtitle language, AI speech-to-text and translation into 133 languagesUse it when transcripts are the main goal rather than video statistics.
Best TikTok Transcripts ScraperTranscripts with timestamps, word timing, translations and on-screen text from video or photo links, plus creator statsUse it when you want transcripts from bulk video or photo links.

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. 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?

There is no fixed cap on the number of videos per run. The total depends on the URLs you give and any spend limit you set. 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.