TikTok Scraper — Videos, Profiles & Engagement Analytics
Pricing
from $2.55 / 1,000 video/profile results
TikTok Scraper — Videos, Profiles & Engagement Analytics
Scrape TikTok profiles and videos: captions, stats, hashtags, engagement rate, virality score, sponsorship detection and watermark-free download links. Export to CSV, Excel, JSON.
Pricing
from $2.55 / 1,000 video/profile results
Rating
0.0
(0)
Developer
PunkRecordsData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
🎵 TikTok Scraper: Videos, Profiles & Analytics
🚀 TikTok Scraper is an Apify Actor that exports TikTok videos and profiles in seconds, with engagement rate, a virality score, sponsorship detection, and watermark-free download links already computed for you, not just raw numbers.
🕒 Last updated: 2026-08-28 · 📊 30+ fields per record · verified on a real cloud run against
@tiktok· by PunkRecordsData
TikTok's own app gives you a scroll feed. This Actor gives you a dataset: every video's caption, stats, hashtags, and music. Plus the analysis layer most scrapers leave for you to build yourself. Point it at a list of profiles or specific video URLs and get back a table ready for a spreadsheet, a BI dashboard, or an LLM prompt.
📚 Table of Contents
- 🎯 Who this is for
- 📋 What it does
- 📈 How it compares
- ⚙️ Input
- 📊 Output
- 🧾 Sample record
- 🚀 How to use
- 💼 Business use cases
- 🔌 Integrate with any app
- 💰 Cost
- ❓ FAQ
- 🗺️ Roadmap
🎯 Who this is for
| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| 📊 Social media analysts | Competitor & trend tracking |
| 📣 Marketing / brand teams | Influencer vetting, sponsorship audits |
| 📈 Growth & content teams | Posting-time and engagement benchmarking |
| 🎓 Researchers & journalists | Public discourse and trend analysis |
📋 What the TikTok Scraper does
- 👤 Scrapes recent videos from a list of TikTok profiles
- 🔗 Scrapes direct video URLs individually
- 📈 Computes engagement rate and a 0–100 virality score per video
- 💰 Flags likely sponsored/ad content from caption signals
- #️⃣ Cleans hashtags and mentions into real arrays, not raw text
- 🕒 Adds posting-time analytics (day of week, hour UTC)
- ⬇️ Returns a watermark-free download URL for every video
- 👥 Optionally enriches each video with the author's full stats (followers, following, total hearts, video count)
📈 How it compares to alternatives
| 🎵 TikTok Scraper (this) | Narrow single-purpose scrapers | Manual export | |
|---|---|---|---|
| Engagement rate | ✅ built in | ❌ compute yourself | ❌ |
| Virality score | ✅ built in | ❌ | ❌ |
| Sponsored-content detection | ✅ built in | ❌ | ❌ |
| Posting-time analytics | ✅ built in | ❌ | ❌ |
| Clean hashtag/mention arrays | ✅ built in | Often raw text only | ❌ |
| Watermark-free download URL | ✅ | Varies | ❌ |
| Profiles and direct video URLs | ✅ | Usually one or the other | None |
| Scheduling, API, integrations | ✅ (Apify platform) | Varies | ❌ |
| Comments / hashtag search / AI summaries | 🗺️ roadmap | Some offer today | ❌ |
⚙️ Input
| Field | Type | Default | Description |
|---|---|---|---|
profiles | array | None | TikTok usernames or profile URLs to scrape |
postURLs | array | None | Direct TikTok video URLs to scrape individually |
resultsPerPage | integer | 20 | Max videos to pull per profile |
maxItems | integer | 10 (free) | Cap across everything combined, paid plans up to 1,000,000 |
excludePinnedPosts | boolean | false | Skip videos pinned to the top of a profile |
oldestPostDate | string | None | Only videos posted on/after this date (YYYY-MM-DD) |
newestPostDate | string | None | Only videos posted on/before this date (YYYY-MM-DD) |
scrapeAdditionalAuthorMeta | boolean | true | Fetch full author stats (followers, hearts, video count) |
detectSponsoredContent | boolean | true | Flag likely ads from caption/hashtag signals |
proxyConfiguration | object | RESIDENTIAL | Required for reliable results, TikTok blocks datacenter IPs at scale |
Minimal, scrape 2 profiles:
{"profiles": ["tiktok", "nike"],"resultsPerPage": 25,"maxItems": 50}
Scrape one specific video:
{"postURLs": ["https://www.tiktok.com/@tiktok/video/7679101730352565535"]}
⚠️ Good to know:
postURLsis matched against the author's most recent uploads. Very old videos may not be found. Useprofileswith a higherresultsPerPageinstead for deep history. TikTok's anti-bot defenses are inconsistent by design; the Actor automatically retries a profile once if the first attempt returns nothing.
📊 Output
| Field | Description |
|---|---|
🖼 imageUrl | Video cover image |
🆔 id | Video ID |
📝 text | Caption |
🔗 url | Video/profile URL |
📌 isPinned | Whether the video is pinned to the profile |
📢 isAd | TikTok's own platform-declared ad flag |
👤 authorMeta | Id, name, profile URL, avatar, verified, private account, bio + bio link + (optional) full stats: followers, following, friends, hearts, videos, total diggs given |
🎵 musicMeta | Sound name, author, album, original vs. cover |
🎬 videoMeta | Duration, resolution, format, cover, watermark-free download URL |
❤️ diggCount | Likes |
💬 commentCount | Comments |
▶️ playCount | Plays |
🔁 shareCount | Shares |
⭐ collectCount | Saves |
🔂 repostCount | Reposts |
#️⃣ hashtags | Cleaned hashtag array |
@️⃣ mentions / detailedMentions | Cleaned @handle array + resolved {id, name, profileUrl} objects |
💰 isSponsoredContent / sponsorSignals | Our own ad-detection heuristic + matched signals (independent from the platform's isAd flag) |
📈 engagementRate | (likes+comments+shares+saves) / plays, as % |
🔥 viralityScore | 0–100 composite score |
📅 postedDayOfWeek / postedHourUTC | Posting-time analytics |
🌐 captionLanguage | Detected caption language (heuristic) |
🕓 createTimeISO | When the video was posted |
🕒 scrapedAt | When this record was scraped |
❌ error | Present only on failed items |
Download the dataset as JSON, CSV, Excel, or XML straight from the Apify Console, or pull it via the API.
🧾 Sample record (real data)
🚀 How to use
- Sign up or log in at console.apify.com
- Open TikTok Scraper and go to the Input tab
- Add usernames to
profilesor full URLs topostURLs - Set
resultsPerPage/maxItemsand click ▶️ Start - Download results as JSON, CSV, Excel, or XML. Or pull them via the API
💼 Business use cases
| 🏆 Competitor & trend tracking | 🤝 Influencer vetting |
|---|---|
Track a list of competitor accounts, spot which videos are outperforming via viralityScore, and export weekly to your BI tool. | Pull a creator's recent videos with scrapeAdditionalAuthorMeta on to check real engagement rate against follower count before a sponsorship deal. |
| 🗓️ Content strategy | ⚖️ Compliance / ad-disclosure audits |
|---|---|
Use postedDayOfWeek / postedHourUTC across your top-performing videos to find the best posting windows for your niche. | Use isSponsoredContent and sponsorSignals to flag videos that look sponsored but may be missing proper disclosure. |
🔌 Integrate with any app
Pull results via the Apify API, or connect to Make, Zapier, Google Sheets, Airbyte, n8n, or any webhook-based tool from the Apify Console Integrations tab. Schedule recurring runs with Apify's built-in Scheduler.
curl "https://api.apify.com/v2/acts/PunkRecordsData~tiktok-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{ "profiles": ["tiktok"], "maxItems": 10 }'
💰 Cost
| Plan | What you get |
|---|---|
| 🆓 Free | Up to 10 items per run (preview) |
| 💳 Paid | Up to 1,000,000 items per run, billed on Apify usage (compute + residential proxy) |
Cost scales mainly with how many profiles/videos you visit, not raw item
count. Set resultsPerPage higher to pull more videos per profile visit
and get a better cost-per-item.
❓ Frequently Asked Questions
Does this work without a proxy?
No. TikTok blocks datacenter IPs at scale. RESIDENTIAL proxy is the
default and required for reliable results.
Why did a profile return 0 items? TikTok's anti-bot defenses are inconsistent; the Actor retries once automatically. If it still returns nothing, the profile may be private, empty, or temporarily rate-limiting your proxy session. Try again.
Can I scrape any video by URL?
Videos are matched against the author's most recent uploads. Very old
videos may not be found. Use profiles with a higher resultsPerPage
for deep history instead.
Does it download the video file itself?
It returns a direct, watermark-free downloadUrl. The Actor doesn't
download/store the binary video for you.
Is this affiliated with TikTok? No. See disclaimer below.
What counts as a "result" for pricing? Each video record in your output dataset.
Can I filter by date?
Yes, oldestPostDate / newestPostDate.
Does it scrape comments? Not in this version. See roadmap below.
Can I run this on a schedule? Yes, use Apify's built-in Scheduler.
What happens on the free plan? Results are capped at 10 items per run.
🗺️ Roadmap
- 💬 Comments
- 🔎 Hashtag / keyword search
- 👥 Follower / following lists
- 🤖 AI video summaries
⚠️ Disclaimer: This is an independent tool, not affiliated with, endorsed by, or sponsored by TikTok. It only collects data that is publicly visible on TikTok's website.
🆘 Need help or want a custom scraper? Contact PunkRecordsData at contact.punkrecordsdata@gmail.com.