TikTok Scraper — Profiles, Videos, Comments & Search
Pricing
from $1.50 / 1,000 profile scrapeds
TikTok Scraper — Profiles, Videos, Comments & Search
Stop paying $3.70/1K for TikTok data. 7 scrapers in one actor. Profiles, videos, hashtags, comments, search — 30-68% cheaper than Clockworks. 29 fields, Clockworks-compatible output. MCP-ready for AI agents. No proxy needed. Integrates w n8n, Make, Zapier, Google Sheets.
Pricing
from $1.50 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer
Japi Cricket
Actor stats
0
Bookmarked
21
Total users
8
Monthly active users
11 hours ago
Last modified
Categories
Share
What does All-in-One TikTok Scraper do?
Scrape TikTok profiles, videos, comments & user search — no proxy needed, no login required. 30–68% cheaper than Clockworks with the same output fields — drop-in replacement. 7 modes, pay-per-result from $0.40/1K. Works with AI agents (Claude, GPT, Cursor) via MCP.
Unlike Clockworks which splits TikTok scraping into 13 separate actors, this scraper combines 7 modes in one actor — one integration to maintain, one API to learn, one pricing page to check.
Why choose this over 5 separate TikTok scrapers?
- No proxy needed — all modes work on standard Apify infrastructure (competitors require residential proxies)
- 7 modes in one actor — profiles, videos, hashtags, comments, user search, all-in-one, data extractor
- 30–68% cheaper than Clockworks across all modes
- Clockworks-compatible output — same field names, same structure — drop-in replacement
- HTTP-only, 256 MB — no bloated browser, minimal compute costs
- AI-ready — works with Claude, GPT, and Cursor via MCP protocol
Getting Started
- Click "Try for free" at the top of this page
- Choose a scraping mode (Profiles, Videos, Comments, User Search, All-in-One, or Data Extractor)
- Paste TikTok usernames, video URLs, or search queries
- Click Start — results appear in the Dataset tab within seconds
- Download as JSON, CSV, or Excel — or connect via API, n8n, Make, or Zapier
No proxy needed. No login required. Just paste and scrape.
Easiest Way to Start: Paste a Username or URL
Just paste any TikTok username or URL and hit Start. The scraper auto-detects what you want:
| Input | Auto-Detected |
|---|---|
charlidamelio | Profile scraping |
@khaby.lame | Profile scraping (@ stripped automatically) |
https://www.tiktok.com/@mrbeast | Profile scraping (URL parsed) |
https://www.tiktok.com/@user/video/7625055547116522765 | Video scraping |
7 Scraping Modes
| Mode | Description | Input Field | Best For |
|---|---|---|---|
| Profile Scraper | Scrape TikTok user profiles with full stats | profiles | Influencer research, lead generation |
| Video Scraper | Scrape specific videos with full engagement data | postURLs | Content analysis, trend tracking |
| User Search | Look up TikTok users by username | searchQueries | Creator discovery, competitor research |
| Comments Scraper | Scrape video comments with likes and replies | postURLs | Sentiment analysis, audience insights |
| Hashtag Scraper | Scrape hashtag metadata + trending videos | hashtags | Trend analysis, hashtag research |
| All-in-One | Discover + scrape videos from profiles | profiles | Comprehensive data collection |
| Data Extractor | Lightweight version of All-in-One | profiles | Quick data extraction, cost-sensitive |
Which Mode Should I Use?
| Your Goal | Use This Mode | Why |
|---|---|---|
| "I need creator profiles for outreach" | Profile Scraper + User Search | Get follower stats, bio, verified status for 100+ creators in one run |
| "I'm analyzing a viral video's engagement" | Video Scraper | Full stats (likes, views, shares, saves, reposts) + music metadata + author info in 29 fields |
| "I want to find a creator but don't know their exact handle" | User Search | Fuzzy matching finds @gordonramsayofficial from just "gordonramsay" — tries 21 variations |
| "I need comment sentiment for a brand" | Comments Scraper | Full comment text, likes, threaded replies (up to 50/comment), author info, language detection |
| "I'm building a TikTok analytics dashboard" | All-in-One | Profiles + videos in one run — feed directly into Google Sheets, Airtable, or your data warehouse |
| "I want to research a trending hashtag" | Hashtag Scraper | Get video count, view count, and trending videos for any hashtag |
| "I just need quick data, keep it simple" | Data Extractor | Same as All-in-One but at a lower price point — ideal for high-volume, cost-sensitive workloads |
Pricing — Pay Per Result, No Monthly Fee
| Mode | Price per 1,000 | Clockworks Price | You Save |
|---|---|---|---|
| Comments Scraper | from $0.40 | $1.25/1K | 68% |
| Data Extractor | from $1.38 | $2.00/1K | 31% |
| Profile Scraper | from $1.50 | $4.00/1K | 63% |
| All-in-One | from $1.50 | $3.70/1K | 59% |
| User Search | from $2.00 | $3.23/1K | 38% |
| Video Scraper | from $3.10 | $5.00/1K | 38% |
"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.
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
Apify Subscription Discounts: Higher Apify plans get automatic discounts. Scale (5% off), Business (10% off), Enterprise (15% off).
Why This TikTok Scraper?
| Feature | This Scraper | Clockworks | Api Dojo | Scraptik |
|---|---|---|---|---|
| Profiles / 1K | $1.50 | $4.00 | $0.30 | ~$2.00 |
| Videos / 1K | $3.10 | $5.00 | $0.30 | ~$2.00 |
| Comments / 1K | $0.40 | $1.25 | — | ~$2.00 |
| Proxy required | No | Internal only | No | Managed |
| Hashtag scraping | Yes | Yes ($5/1K) | No | No |
| Modes in one actor | 7 | 13 separate | 1 | 1 |
| Memory | 256 MB | 4096 MB | — | — |
| Clockworks-compatible | Yes | — | No | No |
| Comment threading | Yes (50 replies/comment) | Yes | — | — |
| MCP for AI agents | Yes | Yes | No | No |
Key advantages:
- One actor, 7 modes — Clockworks splits into 13 separate actors, each requiring its own integration
- No proxy needed — all modes work on Apify's standard infrastructure
- 256 MB HTTP-only — 16x less memory than Clockworks (4096 MB), lower compute costs
- Clockworks drop-in replacement — identical field names and structure
Mode 1: Profile Scraper (tiktok-profile-scraper)
Scrape TikTok user profiles with full stats — followers, following, hearts, video count, bio, avatar, verified status.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | Set to "tiktok-profile-scraper" |
profiles | array | Yes | TikTok usernames, @handles, or full profile URLs. Duplicates removed automatically. |
resultsPerPage | integer | No | Max results (default: 100) |
proxyConfiguration | object | No | Not needed — all modes work without proxy |
Input Example
{"scrapeMode": "tiktok-profile-scraper","profiles": ["charlidamelio", "khaby.lame", "mrbeast", "zachking", "addisonre"]}
Output Fields — 22 fields
| Field | Type | Description |
|---|---|---|
id | string | TikTok user ID |
name | string | Username (uniqueId) |
nickName | string | Display name |
verified | boolean | Verified account |
signature | string | Bio text |
avatar | string | Avatar thumbnail URL |
avatarMedium | string | Medium-size avatar URL |
originalAvatarUrl | string | Full-size avatar URL (highest resolution) |
bioLink | string | Link in bio (null if not set) |
privateAccount | boolean | Private account |
ttSeller | boolean | TikTok Shop seller |
roomId | string | Live room ID (empty if not live) |
fans | integer | Follower count |
following | integer | Following count |
friends | integer | Friends count |
heart | integer | Total likes received (handles int32 overflow for billions) |
video | integer | Video count |
digg | integer | Liked videos count (always 0 — TikTok removed this) |
secUid | string | Secure user ID (needed for API calls) |
profileUrl | string | Full profile URL |
region | string | Region code (usually null) |
input | string | Input that produced this result |
Output Example
{"id": "127905465618821121","name": "khaby.lame","nickName": "Khabane lame","verified": true,"signature": "Se vuoi ridere sei nel posto giusto","avatar": "https://p16-common-sign.tiktokcdn-us.com/...","avatarMedium": "https://p19-common-sign.tiktokcdn-us.com/...","originalAvatarUrl": "https://p16-common-sign.tiktokcdn-us.com/...","bioLink": null,"privateAccount": false,"ttSeller": false,"roomId": "","fans": 160600000,"following": 86,"friends": 76,"heart": 2579326267,"video": 1314,"digg": 0,"secUid": "MS4wLjABAAAAwAg0rSzO65WQfz4RzQgGv2Xdv108BgPXhRrrmNVIHQZ9PO8-flwwRtEppYTS0OjA","profileUrl": "https://www.tiktok.com/@khaby.lame","region": null,"input": "khaby.lame"}
Real test result from Build 0.1.105, April 2026.
Use Cases
- Influencer research — compare follower counts, engagement rates, and verified status across creators
- Lead generation — build lists of TikTok creators with their profile data for outreach
- Competitor monitoring — track follower growth and video count over time
- Brand safety — check verified status and bio content before partnerships
- Academic research — collect structured profile data for social media studies
How to Run
Apify Console: Select "Profile Scraper" mode, paste usernames, click Start.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("get-leads/all-in-one-tiktok-scraper").call(run_input={"scrapeMode": "tiktok-profile-scraper","profiles": ["charlidamelio", "khaby.lame", "mrbeast"],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"@{item['name']}: {item['fans']:,} followers, {item['heart']:,} likes")
Mode 2: Video Scraper (tiktok-video-scraper)
Scrape specific TikTok videos by URL with full engagement data — likes, views, shares, comments, saves, reposts, plus author info, music metadata, and video technical data.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | Set to "tiktok-video-scraper" |
postURLs | array | Yes | TikTok video URLs or video IDs. Duplicates removed automatically. |
proxyConfiguration | object | No | Not needed |
Input Example
{"scrapeMode": "tiktok-video-scraper","postURLs": ["https://www.tiktok.com/@charlidamelio/video/7625055547116522765","https://www.tiktok.com/@khaby.lame/video/7505030969712217366"]}
Output Fields — 29 fields
| Category | Fields |
|---|---|
| Core | id, text, createTime, createTimeISO, webVideoUrl, mediaUrls[], textLanguage |
| Engagement | diggCount, shareCount, playCount, collectCount, commentCount, repostCount |
| Flags | isAd, isMuted, isPinned, isSlideshow, isSponsored, locationCreated |
| Author | authorMeta.id, .name, .profileUrl, .nickName, .verified, .signature, .bioLink, .avatar, .originalAvatarUrl, .privateAccount, .ttSeller, .roomId, .commerceUserInfo.commerceUser, .createTime, .following, .friends, .fans, .heart, .video, .digg |
| Music | musicMeta.musicName, .musicAuthor, .musicOriginal, .musicAlbum, .playUrl, .coverMediumUrl, .musicId, .originalCoverMediumUrl |
| Video | videoMeta.height, .width, .duration, .coverUrl, .definition, .format, .transcriptionLink, .originalCoverUrl |
| Social | hashtags[], mentions[], detailedMentions[], effectStickers[] (with .stickerStats.useCount), slideshowImageLinks[] |
Output Example
{"id": "7625055547116522765","text": "new youtube video out now!!! dc @Brett Sewell","createTime": 1775346609,"createTimeISO": "2026-04-04T23:50:09.000Z","diggCount": 41400,"playCount": 334800,"shareCount": 482,"commentCount": 599,"collectCount": 1446,"repostCount": 0,"webVideoUrl": "https://www.tiktok.com/@charlidamelio/video/7625055547116522765","isAd": false,"isPinned": false,"isSlideshow": false,"locationCreated": "US","textLanguage": "en","authorMeta": {"id": "5831967","name": "charlidamelio","nickName": "charli d'amelio","verified": true,"createTime": 1447505838,"fans": 156800000,"heart": 12000000000},"musicMeta": {"musicName": "son original","musicAuthor": "Daniel Ralph","musicOriginal": true,"originalCoverMediumUrl": "https://p16-common-sign.tiktokcdn-us.com/..."},"videoMeta": {"height": 1280,"width": 720,"duration": 13,"definition": "720p","format": "mp4","transcriptionLink": null},"mentions": ["@Brett Sewell"],"detailedMentions": [{"id": "6995320156201812997", "name": "brett.sewell", "nickName": "Brett Sewell"}],"effectStickers": [],"hashtags": [],"submittedVideoUrl": "https://www.tiktok.com/@charlidamelio/video/7625055547116522765","input": "https://www.tiktok.com/@charlidamelio/video/7625055547116522765"}
Real test result from Build 0.1.105, April 2026.
Use Cases
- Trend tracking — monitor viral videos with play counts, likes, shares, and saves over time
- Content analysis — analyze video performance by format (duration, definition), music, hashtags
- Campaign measurement — track engagement metrics on sponsored or branded content
- Competitive intelligence — compare engagement rates across competing creators' videos
- Music trend analysis — identify trending sounds and original vs. reused audio
How to Run
Apify Console: Select "Video Scraper" mode, paste video URLs, click Start.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("get-leads/all-in-one-tiktok-scraper").call(run_input={"scrapeMode": "tiktok-video-scraper","postURLs": ["https://www.tiktok.com/@charlidamelio/video/7625055547116522765","https://www.tiktok.com/@khaby.lame/video/7505030969712217366",],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"Video {item['id']}: {item['playCount']:,} views, {item['diggCount']:,} likes")
Mode 3: User Search (tiktok-user-search-scraper)
Search for TikTok users by username or keyword. Uses fuzzy matching — searching "gordonramsay" finds @gordonramsayofficial automatically (tries 21 username variations).
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | Set to "tiktok-user-search-scraper" |
searchQueries | array | Yes | Usernames or keywords to search. Duplicates removed automatically. |
maxProfilesPerQuery | integer | No | Max profiles per query (default: 10, max: 100) |
proxyConfiguration | object | No | Not needed |
Input Example
{"scrapeMode": "tiktok-user-search-scraper","searchQueries": ["gordonramsay", "addisonre", "zachking"],"maxProfilesPerQuery": 3}
Output Fields — 22 fields
Same output as Profile Scraper (Mode 1). See Mode 1 output fields table.
Output Example
{"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"}
Use Cases
- Creator discovery — find creators by topic or niche when you don't know their exact handle
- Competitor research — find related accounts in your industry
- Influencer mapping — build lists of creators around specific keywords
- Handle verification — confirm which account belongs to a person or brand
How to Run
Apify Console: Select "User Search" mode, enter search queries, click Start.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("get-leads/all-in-one-tiktok-scraper").call(run_input={"scrapeMode": "tiktok-user-search-scraper","searchQueries": ["gordonramsay", "addisonre"],"maxProfilesPerQuery": 3,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"@{item['name']}: {item['fans']:,} followers")
Mode 4: Comments Scraper (tiktok-comments-scraper)
Scrape video comments with likes, reply threading, author info, and language detection. Clockworks-compatible flat field structure — drop-in replacement for clockworks/tiktok-comments-scraper.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | Set to "tiktok-comments-scraper" |
postURLs | array | Yes | TikTok video URLs. Comments are scraped from each video. |
resultsPerPage | integer | No | Max comments per video (default: 100, max: 1000) |
proxyConfiguration | object | No | Not needed |
Input Example
{"scrapeMode": "tiktok-comments-scraper","postURLs": ["https://www.tiktok.com/@charlidamelio/video/7625055547116522765"],"resultsPerPage": 100}
Output Fields — 18 fields (Clockworks-compatible)
| Field | Type | Description |
|---|---|---|
cid | string | Comment ID |
text | string | Comment text |
createTime | integer | Unix timestamp |
createTimeISO | string | ISO timestamp |
diggCount | integer | Comment likes |
replyCommentTotal | integer | Number of replies |
likedByAuthor | boolean | Liked by video author |
pinnedByAuthor | boolean | Pinned by video author |
uid | string | Commenter user ID |
uniqueId | string | Commenter username |
avatarThumbnail | string | Commenter avatar URL |
mentions | array | Mentioned usernames (e.g. ["@user1"]) |
detailedMentions | array | Mention details ([{id, name, nickName, profileUrl}]) |
repliesToId | string/null | Parent comment ID (null for top-level comments) |
submittedVideoUrl | string | Input video URL |
videoWebUrl | string | Parent video URL |
input | string | Input that produced this result |
replies[] | array | Threaded replies (up to 50 per comment, same fields) |
Output Example
{"cid": "7625056288929645325","text": "Well ate","createTime": 1775346788,"createTimeISO": "2026-04-04T23:53:08.000Z","diggCount": 343,"replyCommentTotal": 8,"likedByAuthor": false,"pinnedByAuthor": false,"uid": "7476947021740459054","uniqueId": "thesky.miller","avatarThumbnail": "https://p16-common-sign.tiktokcdn-us.com/...","mentions": [],"detailedMentions": [],"repliesToId": null,"submittedVideoUrl": "https://www.tiktok.com/@charlidamelio/video/7625055547116522765","videoWebUrl": "https://www.tiktok.com/@charlidamelio/video/7625055547116522765","input": "https://www.tiktok.com/@charlidamelio/video/7625055547116522765","replies": [{"cid": "7625064705137492767","text": "hi sky mi like you","createTime": 1775348740,"createTimeISO": "2026-04-05T00:25:40.000Z","diggCount": 2,"replyCommentTotal": 0,"repliesToId": "7625056288929645325"}]}
Real test result from Build 0.1.105, April 2026.
Use Cases
- Sentiment analysis — analyze comment text and language for brand perception
- Audience insights — understand who's engaging with content (verified users, top commenters)
- Community management — monitor comments for questions, complaints, or mentions
- Content strategy — identify which videos generate the most discussion
- Research — collect public discourse data for academic or market studies
How to Run
Apify Console: Select "Comments Scraper" mode, paste video URLs, click Start.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("get-leads/all-in-one-tiktok-scraper").call(run_input={"scrapeMode": "tiktok-comments-scraper","postURLs": ["https://www.tiktok.com/@charlidamelio/video/7625055547116522765"],"resultsPerPage": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"@{item['uniqueId']}: {item['text'][:50]}... ({item['diggCount']} likes)")
Mode 5: Hashtag Scraper (tiktok-hashtag-scraper)
Scrape TikTok hashtag metadata (video count, view count) and discover trending videos for each hashtag. Works best with an external proxy (Bright Data, Oxylabs) — on Apify standard IPs, the challenge API may return limited data.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | Set to "tiktok-hashtag-scraper" |
hashtags | array | Yes | Hashtag names (without #). E.g. ["fyp", "dance", "cooking"] |
resultsPerPage | integer | No | Max videos per hashtag (default: 100) |
proxyConfiguration | object | No | Recommended: external proxy for best results |
Input Example
{"scrapeMode": "tiktok-hashtag-scraper","hashtags": ["fyp", "dance", "cooking"],"resultsPerPage": 20}
Output Fields — Hashtag Metadata
| Field | Type | Description |
|---|---|---|
type | string | Always "hashtag" |
hashtag | string | Hashtag name (without #) |
challengeId | string | TikTok's internal hashtag ID |
description | string | Hashtag description |
coverUrl | string | Hashtag cover image URL |
videoCount | integer | Total videos using this hashtag |
viewCount | integer | Total views for this hashtag |
videos | array | Array of video objects (same 29-field format as Video Scraper) |
input | string | Input that produced this result |
Output Example
{"type": "hashtag","hashtag": "dance","challengeId": "10000","description": "Share your best dance moves","coverUrl": "https://p16-common-sign.tiktokcdn-us.com/...","videoCount": 450000000,"viewCount": 2100000000000,"videos": [],"input": "dance"}
Note: Video discovery from hashtag pages may be limited on Apify standard IPs due to TikTok's bot detection. Hashtag metadata (videoCount, viewCount) is more reliable. For full video lists, use an external proxy.
Use Cases
- Trend research — identify trending hashtags by video and view count
- Campaign planning — check hashtag popularity before launching a branded hashtag
- Competitive analysis — compare hashtag performance across industries
- Content strategy — find high-engagement hashtags to use in your videos
How to Run
Apify Console: Select "Hashtag Scraper" mode, enter hashtags (without #), click Start.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("get-leads/all-in-one-tiktok-scraper").call(run_input={"scrapeMode": "tiktok-hashtag-scraper","hashtags": ["fyp", "dance", "cooking"],"resultsPerPage": 20,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item.get("type") == "hashtag":print(f"#{item['hashtag']}: {item['videoCount']:,} videos, {item['viewCount']:,} views")
Mode 6: All-in-One (tiktok-scraper)
Discover and scrape recent videos from TikTok profiles. Finds video IDs via TikTok's embed page, then scrapes each video for full engagement data. Returns the same 29-field video output as Mode 2.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | Set to "tiktok-scraper" |
profiles | array | Yes | TikTok usernames, @handles, or profile URLs |
resultsPerPage | integer | No | Max videos per profile (default: 100). Limited to ~10 via embed page discovery. |
excludePinnedPosts | boolean | No | Skip pinned posts (default: false) |
proxyConfiguration | object | No | Not needed |
Input Example
{"scrapeMode": "tiktok-scraper","profiles": ["charlidamelio", "khaby.lame", "mrbeast"],"resultsPerPage": 10}
Output Fields — 29 fields
Same output as Video Scraper (Mode 2). See Mode 2 output fields table. Each result includes full video data with authorMeta containing the profile's stats.
Output Example
{"id": "7625055547116522765","text": "new youtube video out now!!! dc @Brett Sewell","createTime": 1775346609,"createTimeISO": "2026-04-04T23:50:09.000Z","diggCount": 41200,"playCount": 331800,"shareCount": 482,"commentCount": 594,"collectCount": 1436,"repostCount": 0,"webVideoUrl": "https://www.tiktok.com/@charlidamelio/video/7625055547116522765","authorMeta": {"id": "5831967","name": "charlidamelio","nickName": "charli d'amelio","verified": true,"createTime": 1447505838,"fans": 156800000,"heart": 12000000000},"musicMeta": {"musicName": "son original","musicAuthor": "Daniel Ralph","musicOriginal": true},"videoMeta": {"height": 1280,"width": 720,"duration": 13,"definition": "720p"},"hashtags": [],"mentions": ["@Brett Sewell"],"input": "charlidamelio"}
Real test result from Build 0.1.105, April 2026.
Use Cases
- TikTok analytics dashboard — feed profile + video data into Google Sheets, Airtable, or Looker
- Content calendar analysis — analyze posting frequency, timing, and engagement patterns
- Influencer vetting — check recent content quality and engagement before partnerships
- Trend detection — spot trending sounds, hashtags, and formats across multiple creators
- Automated reporting — schedule weekly scrapes to track creator performance over time
How to Run
Apify Console: Select "All-in-One" mode, paste usernames, set results per page, click Start.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("get-leads/all-in-one-tiktok-scraper").call(run_input={"scrapeMode": "tiktok-scraper","profiles": ["charlidamelio", "khaby.lame"],"resultsPerPage": 10,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():author = item.get("authorMeta", {}).get("name", "?")print(f"@{author}: {item['text'][:40]}... | {item['playCount']:,} views")
Mode 7: Data Extractor (tiktok-data-extractor)
Lightweight version of All-in-One mode. Same video output, lower pricing tier. Ideal for high-volume, cost-sensitive workloads.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | Yes | Set to "tiktok-data-extractor" |
profiles | array | Yes | TikTok usernames, @handles, or profile URLs |
resultsPerPage | integer | No | Max videos per profile (default: 100) |
proxyConfiguration | object | No | Not needed |
Input Example
{"scrapeMode": "tiktok-data-extractor","profiles": ["charlidamelio"],"resultsPerPage": 5}
Output Fields — 29 fields
Same output as Video Scraper (Mode 2) and All-in-One (Mode 5). See Mode 2 output fields table.
Output Example
Same structure as Mode 5 All-in-One output. See Mode 5 output example.
Use Cases
- Bulk data collection — scrape thousands of videos at the lowest per-result cost
- Data warehousing — populate data lakes with TikTok content metadata
- Machine learning — collect training data for content analysis models
- Market research — large-scale analysis of content trends and creator behavior
How to Run
Apify Console: Select "Data Extractor" mode, paste usernames, click Start.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("get-leads/all-in-one-tiktok-scraper").call(run_input={"scrapeMode": "tiktok-data-extractor","profiles": ["charlidamelio", "khaby.lame", "mrbeast", "zachking", "addisonre"],"resultsPerPage": 20,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(f"Scraped {len(items)} videos from 5 profiles")
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 Integration 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:
- Go to mcp.apify.com
- Add "All-in-One TikTok Scraper" to your MCP server
- Ask your AI: "Scrape the TikTok profile for charlidamelio and get follower stats"
Example prompts for your AI agent:
- "Scrape the TikTok profile of charlidamelio"
- "Get engagement stats for this TikTok video: [URL]"
- "Search TikTok for fitness trainers"
- "Get the latest comments on this viral TikTok"
Works with Claude Desktop, Cursor, GPT via MCP, and any other MCP-compatible AI client.
Integrations
n8n
- Add the Apify node in your n8n workflow
- Select "All-in-One TikTok Scraper" as the actor
- Configure the mode and input parameters
- Connect the output to your CRM, Google Sheets, or database
Make.com (Integromat)
- Add the Apify module to your scenario
- Select "Run Actor" and choose this scraper
- Map the JSON output fields to your downstream modules
- Use for automated trend monitoring, influencer tracking, or CRM syncing
Zapier
- Create a new Zap with Apify as the trigger or action
- Select "Run Actor" and configure with this scraper's actor ID
- Map output fields to Google Sheets, HubSpot, Salesforce, or Slack
- Trigger on schedule or from a webhook
REST API & SDKs
Use the Apify API, JavaScript SDK, or Python SDK for programmatic access:
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}'
Scheduled runs: Set up daily, weekly, or hourly scrapes directly in the Apify Console — no cron jobs or servers needed.
Key Features
- 7 scraping modes including hashtag scraping for trend research
- 29 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
- Clockworks-compatible comments — flat field structure (
cid,diggCount,uniqueId,pinnedByAuthor,repliesToId) matches Clockworks output exactly - 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.jsonto the key-value store with stats, duration, and success rate - 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
- Fuzzy username search — searching "gordonramsay" finds @gordonramsayofficial automatically (tries suffixes like official, real, tiktok + dot/underscore variations)
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), reposts (repostCount), plus author info (with account creation date), music metadata (with original cover URL), video duration, hashtags, mentions, and cover images. 29 fields total per video.
Can I scrape comments? Yes. The comments scraper returns 18 Clockworks-compatible fields: comment text, likes (diggCount), reply count, pinned status, author info (uid, uniqueId, avatarThumbnail), mentions, and threading (repliesToId). 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. We combine 7 modes in one actor — Clockworks splits into 13 separate actors.
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 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:
| Scraper | What it does | Price |
|---|---|---|
| All-in-One Amazon Scraper | Products, reviews, sellers, bestsellers, deals — 15 marketplaces | from $0.75/1K |
| All-in-One LinkedIn Scraper | Profiles, companies, jobs, posts, search | from $1.00/1K |
| Real Estate Agent Scraper | Agents from Google Maps with email, phone, license | from $3.00/1K |
| Google Maps Scraper | Any business from Google Maps — 35+ fields per place | from $1.00/1K |
All scrapers: no proxy needed, MCP-ready, Clockworks-compatible where applicable.
Changelog
0.1.108 (2026-04-11)
- Hashtag Scraper mode — new Mode 5: scrape hashtag metadata (video count, view count, description) + discover trending videos. Works best with external proxy.
fromProfileSectionfield — videos from All-in-One/Data Extractor now include source section ("videos", "pinned", "hashtag")signaturefield fix — empty bios now return""instead ofnull(distinguishes "no bio" from "couldn't scrape")- Removed cheerio dependency — regex-based HTML parsing saves ~2 MB container size and reduces memory by 45%
- Memory optimization — peak RSS reduced from 157 MB to 86 MB via regex extraction, lightweight quality counters, and lower default concurrency
0.1.105 (2026-04-05)
- README restructured — LinkedIn-style per-mode sections with Input Parameters, Input Example, Output Fields, Output Example, Use Cases, and How to Run (Python)
- Updated dataset schema — new views with Clockworks-compatible comment field names
- "Why This TikTok Scraper?" section — competitive comparison table vs Clockworks, Api Dojo, Scraptik
0.1.104 (2026-04-05)
- Clockworks-compatible comments — complete output restructure: flat fields (
cid,diggCount,replyCommentTotal,likedByAuthor,pinnedByAuthor,uid,uniqueId,avatarThumbnail,mentions,detailedMentions,repliesToId,submittedVideoUrl,videoWebUrl) — drop-in replacement for Clockworks comments scraper - Video:
repostCount— new engagement metric fromstats.repostCount - Video:
authorMeta.createTime— account creation timestamp now included - Video:
musicMeta.originalCoverMediumUrl— original music cover image URL - Video:
effectStickers[].stickerStats— sticker usage stats withuseCount - Video:
videoMeta.transcriptionLink— subtitle/caption link when available - Video: simplified
videoMeta— 8 fields matching Clockworks structure
0.1.97 (2026-03-22)
- "Which Mode Should I Use?" decision matrix — helps users self-serve the right mode for their use case
0.1.96 (2026-03-22)
- Cross-linking — README links to all get-leads scrapers
- Free credits FAQ — mentions $5/month free Apify credits
0.1.92 (2026-03-22)
- Fuzzy username search — searching "gordonramsay" finds @gordonramsayofficial automatically
0.1.88 (2026-03-22)
- Error categorization — DELETED, RATE_LIMITED, FORMAT_CHANGE, NETWORK, BLOCKED
- High-res profile avatars —
avatarMedium+originalAvatarUrl
0.1.87 (2026-03-22)
- Related video discovery — follows related links beyond ~10 embed page limit
- Comment reply threading — up to 50 replies per comment
0.1.86 (2026-03-22)
- Smart input parsing — paste URLs, @handles, or usernames
- Automatic deduplication — duplicates removed before scraping
- Run summary —
summary.jsonsaved to key-value store - Memory-aware concurrency — auto-reduces if memory high
0.1.84 (2026-03-22)
- Parallel scraping — 3x faster for large batches
- Retry logic — automatic retry with exponential backoff
0.1.73 (2026-03-21)
- Published to Apify Store — all 7 modes live
- Pay-per-event billing — 6 pricing tiers
- Comment scraping — full pagination via TikTok API
0.1.18 (2026-03-19)
- Initial HTTP-only profile scraper
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.
Follow us on LinkedIn for updates, tips, and new scraper releases.