TikTok VideoScraper avatar

TikTok VideoScraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
TikTok VideoScraper

TikTok VideoScraper

TikTok VideoScraper — full public stats and metadata for a list of TikTok video/photo URLs: views, likes, comments, shares, saves, author info, music. Bulk-friendly.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Sasha Ebashu

Sasha Ebashu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

TikTok Video Scraper

What does TikTok Video Scraper do?

TikTok Video Scraper extracts the full public stats and metadata of TikTok posts from a list of links — no API key or login. It's built for bulk runs and for minimum errors: a fast HTTP path with an automatic headless-browser fallback when TikTok throws up its anti-bot wall.

For every post it returns:

  • ▶️ playCount (views), 👍 diggCount (likes), 💬 commentCount
  • 🔁 shareCount + repostCount, ⭐ collectCount (saves)
  • 👤 authorMeta — username, nickname, id, verified, signature, avatar, followers (fans), total likes (heart), video count
  • 🎵 musicMeta — title, author, original flag, cover, music id
  • 🎬 videoMeta — duration, width/height, cover, definition, format
  • 📝 caption (text), language, createTimeISO, locationCreated, hashtags, mentions, isSlideshow, isPinned, isSponsored

Unlike many platforms, TikTok exposes shares and saves publicly, so this scraper returns the most complete metric set of the bunch.


How to use it

  1. Click Start
  2. Paste your TikTok links into the TikTok URLs field — one per line, or a whole blob separated by spaces/commas/new lines (split automatically). You can also upload a file or link a Google Sheet.
  3. Click Run
  4. Download your data from the Output tab (JSON, CSV, Excel)

Supported URL formats:

  • https://www.tiktok.com/@user/video/<id> — videos
  • https://www.tiktok.com/@user/photo/<id> — photo posts / slideshows
  • https://vt.tiktok.com/<code>, https://vm.tiktok.com/<code>, tiktok.com/t/<code> — short links (resolved automatically)

Duplicate URLs are removed automatically.


How it works (minimum errors)

  1. Fast HTTP phase — fetches the post page and reads the embedded __UNIVERSAL_DATA_FOR_REHYDRATION__ JSON. Cheap and quick.
  2. Browser fallback — any URL that TikTok blocks or that fails to parse is retried with a real headless browser (Playwright), which renders the page like a normal visitor.

TikTok aggressively blocks datacenter IPs, so Residential proxy (country US) is enabled by default. Avoid country RU (TikTok is restricted there).


Input parameters

ParameterTypeDescriptionDefault
urlsarrayTikTok URLs, bulk paste (one per line or a separated blob)
startUrlsarrayAlternative bulk input: list / file / Google Sheet
maxItemsintegerMax posts per run (1–20000)1000
maxConcurrencyintegerParallel requests (5–10 is a good balance)8
proxyConfigurationobjectProxy settingsResidential US

Output

One JSON object per input URL. Successful posts return the full object below; unavailable posts return a compact error object.

Success (excerpt)

{
"id": "7626822742666677525",
"text": "…",
"createTimeISO": "2026-04-09T18:07:37.000Z",
"locationCreated": "DE",
"authorMeta": { "name": "nutaxoxo1", "nickName": "NutaXoXo", "fans": 2000000, "heart": 94400000, "verified": false },
"musicMeta": { "musicName": "оригинальный звук", "musicOriginal": true },
"videoMeta": { "duration": 105, "width": 576, "height": 1022, "definition": "540p" },
"diggCount": 30300,
"shareCount": 1876,
"playCount": 399800,
"collectCount": 2444,
"commentCount": 163,
"repostCount": 0,
"hashtags": [],
"mentions": [],
"webVideoUrl": "https://www.tiktok.com/@nutaxoxo1/video/7626822742666677525",
"submittedVideoUrl": "https://vt.tiktok.com/ZSHx2YkRS"
}

Error

{
"error": "Post not found or private.",
"errorCode": "POST_NOT_FOUND_OR_PRIVATE",
"url": "https://vt.tiktok.com/ZSHgPeJEG"
}

Error codes: POST_NOT_FOUND_OR_PRIVATE (deleted, private or unavailable), INVALID_URL (not a recognisable TikTok link).

Billing: error items are written to a separate ERRORS dataset (Storage → Datasets → ERRORS), not the main output dataset — so you are not charged for not-found / private / invalid URLs. Only successful posts land in the default (billable) dataset.


Notes

  • Built with the Apify SDK + got-scraping (HTTP) + Crawlee/Playwright (fallback).
  • Only public data is collected — do not scrape personal data without a legitimate reason.
  • Endpoints and extraction are documented in ./RESEARCH.md.