TikTok Scraper — Profiles, Videos, Comments & Search avatar

TikTok Scraper — Profiles, Videos, Comments & Search

Pricing

from $1.50 / 1,000 profile scrapeds

Go to Apify Store
TikTok Scraper — Profiles, Videos, Comments & Search

TikTok Scraper — Profiles, Videos, Comments & Search

Stop paying $3.70/1K for TikTok data. 6 scrapers in one actor. Profiles, videos, comments, search - 30-68% cheaper than Clockworks. 59+ fields, Clockworks-compatible output. MCP-ready for AI agents. No TikTok API needed. Integrates w n8n, Make, Zapier, Google Sheets.

Pricing

from $1.50 / 1,000 profile scrapeds

Rating

0.0

(0)

Developer

Japi Cricket

Japi Cricket

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

4

Monthly active users

5 days ago

Last modified

Share

What's new in 0.1.96 — Fuzzy username search (finds @gordonramsayofficial from "gordonramsay"), comment reply threading (50 replies/comment), related video discovery, error categorization, parallel scraping (3x faster), smart input parsing, run summary dashboard.

What does All-in-One TikTok Scraper do?

All-in-One TikTok Scraper extracts structured data from TikTok profiles, videos, comments, and user searches. 30–68% cheaper than Clockworks with the same output fields — drop-in replacement.

6 scrapers in one actor: Profile Scraper, Video Scraper, User Search, Comments Scraper, plus All-in-One and Data Extractor modes. Clockworks-compatible output format.

What data can you get from TikTok?

All-in-One TikTok Scraper can gather the following data:

  • 👤 Profile name, nickname, bio, avatar, bio link
  • ❤️ Likes (hearts), followers, following, video count
  • ✅ Verified status, private account, TikTok Shop seller
  • ▶️ Video views (plays), likes, shares, comments, saves
  • 🔗 Video URL, profile URL, cover image
  • 📝 Video caption/description
  • 🎵 Music name, author, original sound
  • ⏱️ Video duration, dimensions, format
  • 🏷️ Hashtags used in video
  • 📢 Ad post, pinned post, sponsored, slideshow
  • 📍 Location of creation
  • 💬 Full comment text, likes, reply count
  • 👥 Comment author info (username, nickname)
  • 📋 Mentions and detailed mentions

How to scrape TikTok with All-in-One TikTok Scraper?

  1. Create a free Apify account using your email
  2. Open All-in-One TikTok Scraper
  3. Choose your scraper mode (profiles, videos, comments, or search)
  4. Add usernames, video URLs, or search queries
  5. Click Start and wait for the data to be extracted
  6. Download your data in JSON, CSV, Excel, XML, or HTML

🔧 6 Scraping Modes

ModeDescriptionInput FieldBest For
👤 Profile ScraperScrape TikTok user profiles with full statsprofilesInfluencer research, lead generation
📹 Video ScraperScrape specific videos with full engagement datapostURLsContent analysis, trend tracking
🔍 User SearchLook up TikTok users by usernamesearchQueriesCreator discovery, competitor research
💬 Comments ScraperScrape video comments with likes and repliespostURLsSentiment analysis, audience insights
🎹 All-in-OneCombine profiles + videos + search in one runAll fieldsComprehensive data collection
📊 Data ExtractorLightweight version of All-in-OneAll fieldsQuick data extraction

🧭 Which Mode Should I Use?

Your GoalUse This ModeWhy
"I need creator profiles for outreach"Profile Scraper + User SearchGet 100+ usernames in one run, then deep-dive into follower stats and bio data
"I'm analyzing a viral video's engagement"Video ScraperFull stats (likes, views, shares, saves) + music metadata + author info in 59+ fields
"I want to find a creator but don't know their exact handle"User SearchFuzzy matching finds @gordonramsayofficial from just "gordonramsay" — tries 21 variations
"I need comment sentiment for a brand"Comments ScraperFull comment text, likes, threaded replies (up to 50/comment), author info, language detection
"I'm building a TikTok analytics dashboard"All-in-OneProfiles + videos in one run — feed directly into Google Sheets, Airtable, or your data warehouse
"I just need quick data, keep it simple"Data ExtractorSame as All-in-One but at a lower price point — ideal for high-volume, cost-sensitive workloads

💰 Pricing — Pay Per Result, No Monthly Fee

ModePrice per 1,000Clockworks PriceYou Save
Comments Scraperfrom $0.40$1.25/1K68%
Data Extractorfrom $1.38$2.00/1K31%
Profile Scraperfrom $1.50$4.00/1K63%
All-in-Onefrom $1.50$3.70/1K59%
User Searchfrom $2.00$3.23/1K38%
Video Scraperfrom $3.10$5.00/1K38%

"From" prices are for Business/Gold tier. Free tier prices are higher (e.g. Profile $2.40/1K). See the Pricing tab for exact tier pricing. No proxy needed. No add-on fees.

💡 Cheapest way to get started: Comments scraping at $0.40/1K (Business) or $0.65/1K (Free) — great for sentiment analysis and audience research without breaking the bank.

Cost examples:

  • 100 profiles: $0.15 (Business) / $0.24 (Free)
  • 1,000 video comments: $0.40 (Business) / $0.65 (Free)
  • 500 videos with engagement: $1.55 (Business) / $2.50 (Free)
  • 10,000 comments: $4.00 (Business) — cheapest entry point

⚡ Key Features

  • 6 scraping modes for every TikTok use case
  • 59+ data fields per video — full Clockworks compatibility
  • No proxy needed — all modes work on standard infrastructure
  • Pay per result — no monthly fee, no minimum
  • 30–68% cheaper than Clockworks across all modes
  • MCP-compatible for AI agents (Claude, GPT, Cursor)
  • Clockworks drop-in replacement — same output field names
  • Smart input parsing — paste URLs, @handles, or usernames — auto-detected
  • Automatic deduplication — duplicate inputs are removed before scraping
  • Parallel scraping — up to 3 concurrent requests for faster results
  • Memory-aware — automatically reduces concurrency if memory is high
  • Run summary — every run saves a summary.json to the key-value store with stats, duration, and success rate
  • Related video discovery — finds more videos per profile by following related video links (goes beyond the ~10 embed page limit)
  • Comment reply threading — automatically fetches replies for each comment (up to 50 replies per comment)
  • Error categorization — classifies failures as DELETED, RATE_LIMITED, FORMAT_CHANGE, NETWORK, or BLOCKED for easy debugging
  • Download URL validationvideoMeta.downloadUrlValid flag tells you if download URLs are fresh
  • Fuzzy username search — searching "gordonramsay" finds @gordonramsayofficial automatically (tries suffixes like official, real, tiktok + dot/underscore variations)

📥 Input Examples

Profile Scraping

{
"scrapeMode": "tiktok-profile-scraper",
"profiles": ["charlidamelio", "khaby.lame", "bellapoarch"],
"resultsPerPage": 20
}

Video Scraping (full engagement data)

{
"scrapeMode": "tiktok-video-scraper",
"postURLs": [
"https://www.tiktok.com/@khaby.lame/video/7505030969712217366",
"https://www.tiktok.com/@khaby.lame/video/7494637665753713942"
]
}

Comments Scraping

{
"scrapeMode": "tiktok-comments-scraper",
"postURLs": ["https://www.tiktok.com/@khaby.lame/video/7505030969712217366"],
"resultsPerPage": 100
}

User Search (by username)

{
"scrapeMode": "tiktok-user-search-scraper",
"searchQueries": ["gordonramsay", "addisonre", "zachking"],
"maxProfilesPerQuery": 1
}

All-in-One (profiles + videos in one run)

{
"scrapeMode": "tiktok-scraper",
"profiles": ["charlidamelio", "khaby.lame"],
"resultsPerPage": 10
}

Data Extractor (lightweight)

{
"scrapeMode": "tiktok-data-extractor",
"profiles": ["charlidamelio"],
"resultsPerPage": 5
}

📊 Output — All 6 Modes

1. Profile Scraper (tiktok-profile-scraper) — 21 fields

FieldTypeDescription
idstringTikTok user ID
namestringUsername (uniqueId)
nickNamestringDisplay name
verifiedbooleanVerified account
signaturestringBio text
avatarstringAvatar thumbnail URL
avatarMediumstringMedium-size avatar URL
originalAvatarUrlstringFull-size avatar URL (highest resolution)
bioLinkstringLink in bio
privateAccountbooleanPrivate account
ttSellerbooleanTikTok Shop seller
roomIdstringLive room ID
fansintegerFollower count
followingintegerFollowing count
friendsintegerFriends count
heartintegerTotal likes received
videointegerVideo count
diggintegerLiked videos count
secUidstringSecure user ID
profileUrlstringFull profile URL
regionstringRegion code
inputstringInput that produced this result

2. Video Scraper (tiktok-video-scraper) — 59+ fields

CategoryFields
Coreid, text, createTime, createTimeISO, webVideoUrl, mediaUrls[], textLanguage
EngagementdiggCount, shareCount, playCount, collectCount, commentCount
FlagsisAd, isMuted, isPinned, isSlideshow, isSponsored, locationCreated
AuthorauthorMeta.id, .name, .profileUrl, .nickName, .verified, .signature, .bioLink, .avatar, .originalAvatarUrl, .privateAccount, .ttSeller, .roomId, .commerceUserInfo.commerceUser, .following, .friends, .fans, .heart, .video, .digg
MusicmusicMeta.musicName, .musicAuthor, .musicOriginal, .musicAlbum, .playUrl, .coverMediumUrl, .musicId
VideovideoMeta.height, .width, .duration, .definition, .format, .coverUrl, .originalCoverUrl, .downloadAddr, .originalDownloadAddr, .downloadUrlValid, .subtitleLinks[]
Socialhashtags[], mentions[], detailedMentions[], effectStickers[], slideshowImageLinks[]

3. User Search (tiktok-user-search-scraper) — 21 fields

FieldTypeDescription
idstringTikTok user ID
namestringUsername (uniqueId)
nickNamestringDisplay name
verifiedbooleanVerified account
signaturestringBio text
avatarstringAvatar thumbnail URL
avatarMediumstringMedium-size avatar URL
originalAvatarUrlstringFull-size avatar URL (highest resolution)
bioLinkstringLink in bio
privateAccountbooleanPrivate account
ttSellerbooleanTikTok Shop seller
roomIdstringLive room ID
fansintegerFollower count
followingintegerFollowing count
friendsintegerFriends count
heartintegerTotal likes received
videointegerVideo count
diggintegerLiked videos count
secUidstringSecure user ID
profileUrlstringFull profile URL
regionstringRegion code
inputstringInput that produced this result

4. Comments Scraper (tiktok-comments-scraper) — 16+ fields

FieldTypeDescription
idstringComment ID
videoIdstringParent video ID
textstringComment text
createTimestringISO timestamp
likesintegerComment likes
replyCountintegerNumber of replies
isAuthorLikedbooleanLiked by video author
languagestringComment language
author.idstringCommenter user ID
author.uniqueIdstringCommenter username
author.nicknamestringCommenter display name
author.avatarstringCommenter avatar URL
author.verifiedbooleanCommenter verified
replies[]arrayThreaded replies (up to 50 per comment, same fields as parent)
replies[].parentCommentIdstringID of parent comment
replies[].isReplybooleantrue for reply comments
videoUrlstringParent video URL
inputstringInput that produced this result

5. All-in-One (tiktok-scraper) — Video output (59+ fields)

Discovers recent videos for each profile via TikTok's embed page, then scrapes each video page for full engagement data.

CategoryFields
Coreid, text, createTime, createTimeISO, webVideoUrl, mediaUrls[], textLanguage
EngagementdiggCount, shareCount, playCount, collectCount, commentCount
FlagsisAd, isMuted, isPinned, isSlideshow, isSponsored, locationCreated
AuthorauthorMeta.id, .name, .profileUrl, .nickName, .verified, .signature, .bioLink, .avatar, .originalAvatarUrl, .privateAccount, .ttSeller, .roomId, .commerceUserInfo.commerceUser, .following, .friends, .fans, .heart, .video, .digg
MusicmusicMeta.musicName, .musicAuthor, .musicOriginal, .musicAlbum, .playUrl, .coverMediumUrl, .musicId
VideovideoMeta.height, .width, .duration, .definition, .format, .coverUrl, .originalCoverUrl, .downloadAddr, .originalDownloadAddr, .downloadUrlValid, .subtitleLinks[]
Socialhashtags[], mentions[], detailedMentions[], effectStickers[], slideshowImageLinks[]

6. Data Extractor (tiktok-data-extractor) — Video output (59+ fields)

Lightweight version of All-in-One. Discovers and scrapes profile videos with full engagement data.

CategoryFields
Coreid, text, createTime, createTimeISO, webVideoUrl, mediaUrls[], textLanguage
EngagementdiggCount, shareCount, playCount, collectCount, commentCount
FlagsisAd, isMuted, isPinned, isSlideshow, isSponsored, locationCreated
AuthorauthorMeta.id, .name, .profileUrl, .nickName, .verified, .signature, .bioLink, .avatar, .originalAvatarUrl, .privateAccount, .ttSeller, .roomId, .commerceUserInfo.commerceUser, .following, .friends, .fans, .heart, .video, .digg
MusicmusicMeta.musicName, .musicAuthor, .musicOriginal, .musicAlbum, .playUrl, .coverMediumUrl, .musicId
VideovideoMeta.height, .width, .duration, .definition, .format, .coverUrl, .originalCoverUrl, .downloadAddr, .originalDownloadAddr, .downloadUrlValid, .subtitleLinks[]
Socialhashtags[], mentions[], detailedMentions[], effectStickers[], slideshowImageLinks[]

📝 Sample Output — 1. Profile Scraper

{
"id": "5831967",
"name": "charlidamelio",
"nickName": "Charli D'Amelio",
"verified": true,
"signature": "don't you dare",
"fans": 156400000,
"following": 1406,
"heart": 3421670739,
"video": 3010,
"profileUrl": "https://www.tiktok.com/@charlidamelio",
"input": "charlidamelio"
}

📝 Sample Output — 2. Video Scraper

{
"id": "7619450446956006686",
"text": "wise words from @Charlie Puth to all of the artists out there...",
"createTimeISO": "2026-03-20T21:19:23.000Z",
"diggCount": 1265,
"playCount": 45300,
"shareCount": 44,
"commentCount": 286,
"collectCount": 147,
"webVideoUrl": "https://www.tiktok.com/@tiktok/video/7619450446956006686",
"authorMeta": {
"name": "tiktok",
"nickName": "TikTok",
"verified": true,
"fans": 83200000
},
"musicMeta": {
"musicName": "original sound",
"musicAuthor": "TikTok",
"musicOriginal": true
},
"hashtags": [],
"submittedVideoUrl": "https://www.tiktok.com/@tiktok/video/7619450446956006686",
"input": "https://www.tiktok.com/@tiktok/video/7619450446956006686"
}
{
"id": "6840164168579728389",
"name": "dance",
"nickName": "Phoenix Dance Studio",
"verified": false,
"signature": "The Official @dance on TikTok",
"fans": 33300,
"following": 6,
"friends": 4,
"heart": 2043,
"video": 0,
"secUid": "MS4wLjABAAAAkV6s6lQu-8pXYcs8A84O5Anoj-8i2PVUO9WWgsM-LfYC2_lNP8swHcp9vUh160XU",
"profileUrl": "https://www.tiktok.com/@dance",
"input": "dance"
}

📝 Sample Output — 4. Comments Scraper

{
"id": "7619450743552656149",
"videoId": "7619450446956006686",
"text": "helal olsun",
"createTime": "2026-03-20T21:20:44.000Z",
"likes": 9,
"replyCount": 1,
"isAuthorLiked": false,
"language": "tr",
"author": {
"id": "7382251706498024454",
"uniqueId": "erkannnnn42",
"nickname": "erkannn42",
"verified": false
},
"replies": [
{
"id": "7619451234567890123",
"videoId": "7619450446956006686",
"text": "agreed!",
"createTime": "2026-03-20T21:25:10.000Z",
"likes": 2,
"replyCount": 0,
"isAuthorLiked": false,
"parentCommentId": "7619450743552656149",
"isReply": true,
"author": {
"id": "7382251706498024455",
"uniqueId": "user123",
"nickname": "User 123",
"verified": false
}
}
],
"videoUrl": "https://www.tiktok.com/@tiktok/video/7619450446956006686",
"input": "https://www.tiktok.com/@tiktok/video/7619450446956006686"
}

📝 Sample Output — 5. All-in-One

{
"id": "7619450446956006686",
"text": "wise words from @Charlie Puth to all of the artists out there...",
"createTime": "1742504363",
"createTimeISO": "2026-03-20T21:19:23.000Z",
"diggCount": 1263,
"playCount": 45300,
"shareCount": 44,
"commentCount": 285,
"collectCount": 147,
"webVideoUrl": "https://www.tiktok.com/@tiktok/video/7619450446956006686",
"isAd": false,
"isPinned": false,
"isSlideshow": false,
"authorMeta": {
"id": "107955",
"name": "tiktok",
"nickName": "TikTok",
"verified": true,
"fans": 83200000,
"following": 892,
"heart": 645000000
},
"musicMeta": {
"musicName": "original sound",
"musicAuthor": "TikTok",
"musicOriginal": true,
"musicId": "7619450420871595776"
},
"videoMeta": {
"height": 1024,
"width": 576,
"duration": 57,
"definition": "720p"
},
"hashtags": [],
"mentions": ["charlieputh"],
"input": "tiktok"
}

📝 Sample Output — 6. Data Extractor

{
"id": "7619450446956006686",
"text": "wise words from @Charlie Puth to all of the artists out there...",
"createTime": "1742504363",
"createTimeISO": "2026-03-20T21:19:23.000Z",
"diggCount": 1268,
"playCount": 45400,
"shareCount": 44,
"commentCount": 287,
"collectCount": 149,
"webVideoUrl": "https://www.tiktok.com/@tiktok/video/7619450446956006686",
"isAd": false,
"isPinned": false,
"isSlideshow": false,
"authorMeta": {
"id": "107955",
"name": "tiktok",
"nickName": "TikTok",
"verified": true,
"fans": 83200000,
"following": 892,
"heart": 645000000
},
"musicMeta": {
"musicName": "original sound",
"musicAuthor": "TikTok",
"musicOriginal": true,
"musicId": "7619450420871595776"
},
"videoMeta": {
"height": 1024,
"width": 576,
"duration": 57,
"definition": "720p"
},
"hashtags": [],
"mentions": ["charlieputh"],
"input": "tiktok"
}

📥 Download Your Data

After every run, download your data in any format:

  • JSON — for developers and API integrations
  • CSV — for spreadsheets and data analysis
  • Excel (XLSX) — for business users
  • XML — for data pipelines

Google Sheets: Use =IMPORTDATA() with the CSV download link for instant import.

All 7 Apify export formats available: JSON, JSONL, CSV, XLSX, XML, HTML Table, RSS.

🤖 MCP-Compatible for AI Agents

This scraper works with AI agents via the Model Context Protocol (MCP). Connect it to Claude Desktop, Cursor, GPT, or any MCP-compatible client.

Setup:

  1. Go to mcp.apify.com
  2. Add "All-in-One TikTok Scraper" to your MCP server
  3. Ask your AI: "Scrape the TikTok profile for charlidamelio and get follower stats"

🎯 Use Cases

  • Influencer Research: Find creators by username, compare follower counts and engagement rates
  • Trend Tracking: Monitor viral videos with play counts, likes, and shares
  • Campaign Planning: Research hashtags, engagement rates, and audience sentiment before launching
  • Sentiment Analysis: Analyze video comments for brand perception and customer feedback
  • Competitor Analysis: Track competitor content performance and follower growth
  • Academic Research: Collect structured data for social media studies
  • AI Agent Workflows: Feed TikTok data into Claude, GPT, or custom AI pipelines via MCP

💻 Getting Started with Code

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
// Scrape TikTok profiles
const run = await client.actor('get-leads/all-in-one-tiktok-scraper').call({
scrapeMode: 'tiktok-profile-scraper',
profiles: ['charlidamelio', 'khaby.lame'],
resultsPerPage: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
# Scrape TikTok profiles
run = client.actor("get-leads/all-in-one-tiktok-scraper").call(run_input={
"scrapeMode": "tiktok-profile-scraper",
"profiles": ["charlidamelio", "khaby.lame"],
"resultsPerPage": 20,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl "https://api.apify.com/v2/acts/get-leads~all-in-one-tiktok-scraper/runs?token=YOUR_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"scrapeMode": "tiktok-profile-scraper",
"profiles": ["charlidamelio"],
"resultsPerPage": 20
}'

🔄 Integrations

Connect TikTok Scraper to any workflow — no coding required:

IntegrationExample Workflow
Google SheetsAuto-export influencer profiles to a spreadsheet every Monday for weekly reporting
ZapierWhen new videos are scraped, send a Slack message with engagement stats to your marketing team
Make (Integromat)Scrape competitor TikTok profiles daily → compare follower growth in Airtable → alert on spikes
n8nMonitor brand mentions in comments → run sentiment analysis → create tickets for negative feedback
SlackGet notified when a scheduled scrape completes with a summary of top-performing videos
WebhooksTrigger your custom API when new data is ready — build real-time dashboards or feed into ML pipelines
REST APIIntegrate into any app — start runs, poll status, download results programmatically
JavaScript/Python SDKBuild custom data pipelines with full control over input, output, and scheduling
MCP for AI AgentsAsk Claude or GPT to scrape TikTok and analyze trends in a single conversation

Scheduled runs: Set up daily, weekly, or hourly scrapes directly in the Apify Console — no cron jobs or servers needed.

❓ FAQ

How much does it cost to use All-in-One TikTok Scraper? Pay-per-result pricing from $0.40/1K (comments) to $3.10/1K (videos) at Business tier. Free tier starts at $0.65/1K. 30–68% cheaper than Clockworks across all modes. See the Pricing tab for exact costs.

Is there a monthly subscription? No. Pay only for what you scrape. No minimum, no commitment.

Do I need a proxy? No. All modes work without proxy on Apify's standard infrastructure.

What data do I get from video scraping? Full engagement data: likes (diggCount), views (playCount), shares, comments, saves (collectCount), plus author info, music metadata, video duration, hashtags, mentions, and cover images.

Can I scrape comments? Yes. The comments scraper returns full comment text, likes, reply count, user info, and creation timestamp. Supports pagination up to the full comment count.

How does this compare to Clockworks TikTok scrapers? Same output fields, same data quality, 30–68% cheaper. Clockworks-compatible output format means you can switch without changing your data pipeline.

Can I scrape thousands of profiles? Yes. Provide a list of usernames and the scraper processes them in parallel (3 concurrent) with built-in retry logic and error recovery.

How do I use this with AI agents? Connect via MCP at mcp.apify.com. Add this actor to your MCP server, then ask your AI to scrape TikTok.

How fast is it? Parallel scraping: 3 profiles/videos at once, 2 search queries at once. ~15 seconds per 20 profiles (with parallel). Comments: ~5 seconds per 100 comments. Video scraping: ~1-2 seconds per video. No proxy overhead.

What happens with private or deleted profiles? Private profiles return limited data (username, verified status, private flag). Deleted or non-existent profiles are skipped with a warning in the run log. The scraper continues with the remaining inputs.

What happens if a video is deleted or unavailable? The scraper logs a warning and moves to the next video. You're only charged for successfully scraped results.

Can I use integrations with this scraper? Yes — Make, Zapier, Slack, Airbyte, Google Sheets, Google Drive, webhooks, REST API, and more.

What input formats are accepted? Profiles: usernames (charlidamelio), @handles (@charlidamelio), or full URLs (https://www.tiktok.com/@charlidamelio). Videos: full URLs or just the video ID (19+ digits). All formats are auto-detected. Duplicates are removed automatically.

What if I don't know the exact TikTok username? The user search mode has fuzzy matching — searching "gordonramsay" will automatically find @gordonramsayofficial. It tries common TikTok username suffixes (official, real, tiktok) and dot/underscore variations.

How much does it cost to get started? Apify gives you $5 free usage credits every month on the Free plan. That's enough for ~7,700 comments, ~2,000 profiles, or ~1,000 videos. For regular scraping, the $49/month Scale plan gives you the best value with 25% volume discounts.

How can I use TikTok Scraper with the Apify API? The Apify API gives you full programmatic access — start runs, fetch results, manage schedules, and more. Use the apify-client NPM package for Node.js or the apify-client PyPI package for Python. See the Apify API reference for full details, or click the API tab above for code examples.

Is it legal to scrape TikTok? This scraper only extracts publicly available data. It does not extract private user data such as email addresses, gender, or location. Personal data is protected by GDPR and other regulations — ensure you have a legitimate reason for processing any personal data you collect. Read more about the legality of web scraping and ethical scraping on the Apify blog.

🔗 More Scrapers by get-leads

Need data from other platforms? Check out our other scrapers:

ScraperWhat it doesPrice
All-in-One Amazon ScraperProducts, reviews, sellers, bestsellers, deals — 15 marketplacesfrom $0.75/1K
All-in-One LinkedIn ScraperProfiles, companies, jobs, posts, searchfrom $2.00/1K
Real Estate Agent ScraperAgents from Google Maps with email, phone, licensefrom $3.00/1K
Google Maps ScraperAny business from Google Maps — 35+ fields per placefrom $1.00/1K

All scrapers: no proxy needed, MCP-ready, Clockworks-compatible where applicable.

📋 Changelog

0.1.97 (2026-03-22)

  • "Which Mode Should I Use?" decision matrix — helps users self-serve the right mode for their use case
  • "What's New" banner — highlights latest features at the top of the README

0.1.96 (2026-03-22)

  • Cross-linking — README links to all get-leads scrapers (Amazon, LinkedIn, Real Estate, Google Maps)
  • Free credits FAQ — mentions $5/month free Apify credits and Scale plan recommendation
  • API reference FAQ — links to Apify API docs, NPM and PyPI client packages
  • Legality blog links — links to Apify blog posts on legality and ethical scraping

0.1.92 (2026-03-22)

  • Fuzzy username search — searching "gordonramsay" now finds @gordonramsayofficial automatically. Tries common suffixes (official, real, tiktok) and dot/underscore variations. Up to 21 variations per query.

0.1.88 (2026-03-22)

  • SEO optimization — improved title, SEO description, and categories for Apify Store discoverability
  • Error categorization — failures classified as DELETED, RATE_LIMITED, FORMAT_CHANGE, NETWORK, or BLOCKED with errorsByCategory in run summary
  • Download URL validationvideoMeta.downloadUrlValid flag, mediaUrls fallback to playAddr
  • High-res profile avatars — new avatarMedium field, originalAvatarUrl now always returns highest resolution
  • Stale test detection — daily test schedules updated with redundant inputs (2 profiles, 2 videos)

0.1.87 (2026-03-22)

  • More videos per profile — follows related video links from each video page to discover beyond the ~10 embed page limit
  • Comment reply threading — automatically fetches up to 50 replies per comment with parentCommentId and isReply fields

0.1.86 (2026-03-22)

  • Smart input parsing — paste full TikTok URLs, @handles, or plain usernames in the profiles field — auto-detected and extracted
  • Automatic deduplication — duplicate profiles, video URLs, and search queries are removed before scraping
  • Input validation — warns you immediately if you paste a profile URL in the video/comments field (or vice versa)
  • Run summary — every run saves summary.json to the key-value store with results, errors, duration, and memory usage
  • Memory-aware concurrency — automatically reduces parallel requests if memory exceeds 170MB to prevent crashes

0.1.84 (2026-03-22)

  • Parallel scraping — 3x faster for large batches (profiles/videos run 3 concurrent, search/comments run 2 concurrent)
  • Retry logic — automatic retry with exponential backoff on all HTTP requests (no more lost results from temporary errors)
  • Better error messages — detects when you accidentally paste a profile URL in comments mode and tells you what to fix

0.1.73 (2026-03-21)

  • Published to Apify Store — all 6 scraping modes live
  • Pay-per-event billing — 6 separate pricing tiers for different data types
  • 59+ video fields — full Clockworks-compatible output
  • Comment scraping — full pagination support via TikTok's comment API
  • Video discovery — embed page extraction for All-in-One mode

0.1.55 (2026-03-21)

  • Video scraper, comment scraper, and user search modes added
  • Embed page video discovery for All-in-One mode
  • Native fetch for comment API (Impit JSON truncation fix)

0.1.18 (2026-03-19)

  • Initial HTTP-only profile scraper
  • Impit Chrome TLS fingerprinting
  • SessionPool with cookie jar rotation

Your feedback

We're always working on improving performance. If you have technical feedback or found a bug, please create an issue in the Issues tab or leave a review.

Built by get-leads — the team behind Real Estate Agent Scraper, Amazon Product Scraper, LinkedIn Scraper, and Google Maps Scraper.