TikTok Scraper
All-in-one TikTok data extraction for profiles, videos, followers, comments, search, hashtags, music, and trends — in a single Apify Actor.
Fill only the input sections you need. Empty sections are skipped automatically. Results are split into separate, labeled datasets so each data type has its own clean table.
Built for influencer research, competitor intelligence, social listening, content analytics, lead generation, and data pipelines.
Why Choose This Scraper?
- One actor, eight workflows — profiles, videos, followers/following, comments, creator & video search, hashtags, music, and trends
- Structured output — separate datasets for posts (includes followers/following), profiles, comments, search, hashtags, music, trends, and errors
- Clockworks-style post views — Overview, Posts, Authors, Music, and Video tabs inside the Posts dataset
- Flat, export-ready fields — captions, engagement, author info, music, and video URLs without nested JSON cleanup
- Optional profile analytics — engagement rate, averages, posting frequency, and viral post count
- Mixed inputs — usernames, profile URLs, video URLs, video IDs, hashtags, and music IDs in the same run
- Partial success — one failed target does not stop the rest; errors are recorded in a dedicated dataset
- Export to JSON, CSV, Excel, or integrate via the Apify API
Built for Real-World Use Cases
Influencer & Creator Research
Audit creator profiles, recent posts, engagement patterns, and audience connections in one run.
Competitor & Market Intelligence
Track what competitors post, which sounds they use, and how their content performs.
Social Listening & UGC Research
Scrape comments and replies on viral videos; search creators and videos by keyword.
Hashtag & Trend Monitoring
Measure hashtag reach and discover trending creators, sounds, and topics by country.
Lead Generation & Audience Building
Export follower and following lists with profile metadata for outreach or enrichment.
Data & AI Pipelines
Feed structured TikTok datasets into dashboards, warehouses, or LLM workflows.
What You Can Scrape
| Section | What you get |
| --- | --- |
| 👤 Profiles | Bio, followers, likes, video count, verification, region; optional recent posts and analytics |
| 🎬 Videos | Full video metadata, author, engagement, music, download URL; optional related videos |
| 👥 Followers & Following | Follower or following accounts with avatars and counts |
| 💬 Comments | Top comments and optional replies per video |
| 🔍 Search | Creator accounts by keyword; video search results go to Posts |
| 🔥 Trends | Trending creators, videos, hashtags, songs, or keywords (when enabled) |
| #️⃣ Hashtags | Hashtag metadata plus videos using the tag |
| 🎶 Music | Sound metadata plus videos using the sound |
Only fill the sections you need. At least one section must have input or the run exits with an error.
Example — profiles + videos
{
"profiles": ["taylorswift", "https://www.tiktok.com/@tiktok"],
"includeRecentPosts": true,
"maxPostsPerProfile": 50,
"includeProfileAnalytics": true,
"videoUrls": [
"https://www.tiktok.com/@tiktok/video/7306132438047116586"
],
"includeRelatedVideos": true,
"maxRelatedVideos": 20
}
👤 Profiles
| Field | Default | Description |
| --- | --- | --- |
| Profiles | — | Usernames, profile URLs, or user IDs. One per line. Duplicates removed. |
| Include Recent Posts | true | Fetch recent videos for each profile. |
| Posts Per Profile | 50 | Max recent posts per profile (min. 10). |
| Include Profile Analytics | true | Compute engagement rate, averages, posting frequency, viral post count. |
🎬 Videos
| Field | Default | Description |
| --- | --- | --- |
| Video URLs or IDs | — | TikTok video URLs or numeric video IDs. |
| Include Related Videos | true | Collect videos related to each input video. |
| Related Videos Per Input | 20 | Max related videos per input (min. 10). |
👥 Followers & Following
| Field | Default | Description |
| --- | --- | --- |
| Profiles for Followers / Following | — | Source profiles to scrape connections from. |
| Scrape Followers | true | Collect accounts that follow the profile. |
| Scrape Following | false | Collect accounts the profile follows. |
| Maximum Items Per Profile | 1000 | Max followers or following per source profile (min. 10). The DataDoping/TikTok API typically exposes only the first ~1,000 connections per profile regardless of this limit — large accounts like @tiktok cannot return all followers through this endpoint. |
Followers & following at scale: DataDoping is the primary source. On HTTP 502 or error-shaped empty responses after 10 retries (3s apart), the actor can fetch one backup page from RapidAPI (tiktok-scraper7 /user/followers or /user/following) if RAPIDAPI_KEY is set, then switch back to DataDoping. Pagination cursor (max_time / time) is shared between providers. Duplicates are skipped by user id. RapidAPI backup uses 10 retries × 3s; if that fails too, the run exits with partial results saved.
💬 Comments
| Field | Default | Description |
| --- | --- | --- |
| Video URLs or IDs for Comments | — | Videos to scrape comments from. |
| Include Replies | true | Collect replies for each comment. |
| Comments Per Video | 100 | Max comments per video (min. 10). |
| Replies Per Comment | 20 | Max replies per comment (min. 10). |
🔍 Search
| Field | Default | Description |
| --- | --- | --- |
| Creator Search Keywords | — | Keywords to find TikTok creators (e.g. fitness, ai). |
| Video Search Keywords | — | Keywords to find TikTok videos. |
| Results Per Search Query | 100 | Max results per keyword (min. 10). |
🔥 Trends
| Field | Default | Description |
| --- | --- | --- |
| Run Trending Discovery | false | Must be enabled explicitly — off by default. |
| Trend Country | US | ISO country code (e.g. US, GB, DE). |
| Trend Category | — | Optional category filter. |
| Trending Creators / Videos / Hashtags / Songs | true | Toggle each trend type. |
| Trending Keywords | false | Optional trending keywords. |
| Trending Items Per Type | 50 | Max items per enabled trend type (min. 10). |
#️⃣ Hashtags
| Field | Default | Description |
| --- | --- | --- |
| Hashtags | — | Hashtag names or URLs, with or without #. |
| Posts Per Hashtag | 50 | Max videos per hashtag (min. 10). |
🎶 Music
| Field | Default | Description |
| --- | --- | --- |
| Music URLs or IDs | — | TikTok sound URLs or numeric music IDs. |
| Videos Per Sound | 50 | Max videos per sound (min. 10). |
Output
Results are stored in separate datasets — the Output tab opens Posts by default.
Followers and following are always saved in the Posts dataset. Use the Followers & Following view inside the Posts tab for the best columns (relationship, avatar, username, counts).
| Dataset | Contents |
| --- | --- |
| 🎬 Posts | All scraped videos plus followers and following (use the Followers & Following view) |
| 👤 Profiles | Profile rows and optional analytics |
| 💬 Comments | Comments and replies |
| 🔍 Search | Creator search results (video search → Posts) |
| #️⃣ Hashtags | Hashtag metadata (videos → Posts) |
| 🎶 Music | Sound metadata (videos → Posts) |
| 🔥 Trends | Trending items when discovery is enabled |
| ⚠️ Errors | Failed inputs with error messages |
Inside 🎬 Posts, switch views for different column layouts:
- 🔍 Overview — best starting point: author, caption, engagement, music, video link
- 📱 Posts — video ID, caption, timestamps, counts
- 🦸 Authors — creator details per video
- 🎶 Music — sound used in each video
- 🎞️ Video — page URL, download link, duration
Profile example
{
"type": "profile",
"sourceInput": "taylorswift",
"username": "taylorswift",
"nickname": "Taylor Swift",
"bio": "This is pretty much just a cat account",
"profileUrl": "https://www.tiktok.com/@taylorswift",
"avatar": "https://...",
"verified": true,
"followerCount": 33400000,
"followingCount": 0,
"likeCount": 273700000,
"videoCount": 83,
"scrapedAt": "2026-06-25T12:04:47.692Z"
}
Post / video example
{
"type": "post",
"sourceInput": "taylorswift",
"videoId": "7606213554449992991",
"videoUrl": "https://www.tiktok.com/@taylorswift/video/7606213554449992991",
"captionPreview": "I never want to forget a single detail of this hysterical shoot…",
"playCount": 16200000,
"likeCount": 1700000,
"commentCount": 71300,
"shareCount": 47900,
"collectCount": 51100,
"authorUsername": "taylorswift",
"authorNickname": "Taylor Swift",
"authorVerified": true,
"musicTitle": "original sound",
"musicAuthor": "Taylor Swift",
"musicOriginal": true,
"durationSeconds": 26,
"createdAt": "2026-02-12T...",
"scrapedAt": "2026-06-25T12:04:47.692Z"
}
Comment example
{
"type": "comment",
"videoId": "7306132438047116586",
"textPreview": "The way her voice has matured still gets me",
"likeCount": 41678,
"replyCount": 54,
"authorUsername": "kyler",
"authorNickname": "Kyler<3",
"createdAt": "2023-11-27T...",
"scrapedAt": "2026-06-25T12:39:10.000Z"
}
Error example
{
"type": "error",
"sourceInput": "https://www.tiktok.com/@tiktok/video/7234567890123456789",
"error": "Video not found",
"workflow": "videos",
"scrapedAt": "2026-06-25T12:39:12.000Z"
}
Notes
- Public data only — only publicly available TikTok content is returned.
- Empty sections are skipped — you do not need to clear unused workflow fields.
- Trends are opt-in — enable Run Trending Discovery only when you need trend data.
- Freemium limits apply on the free plan (caps on list sizes and per-section maximums). Paid Apify users receive full configured limits.
- Duplicate inputs are removed automatically within each list.
- Numeric minimums — most limit fields require at least
10.
- Related videos depend on upstream API availability; some video IDs may return errors (check ⚠️ Errors).
- Per-target failures are logged and written to the errors dataset; other targets continue processing.
Responsible Data Use
Use this actor only for lawful and ethical processing of publicly available data. Respect TikTok's terms of service and applicable privacy and data-protection regulations in your jurisdiction.