TikTok Public Profile & Video Scraper
Pricing
Pay per usage
TikTok Public Profile & Video Scraper
Extract public profile info and recent public video metadata from any TikTok username. No login, no API key, private accounts always skipped.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Proyecto Apify
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Give it any public TikTok username and get back structured profile and video data — no login, no API key, no bypassing privacy. Private accounts are detected and skipped with a clear log entry, never bypassed.
What it does
For each TikTok username or profile URL you provide, the Actor:
- Navigates to
https://www.tiktok.com/@<username>with a realistic browser fingerprint (rotating User-Agent, viewport, locale) and Apify's proxy configuration. - Extracts profile-level data: username, display name, bio, follower count, following count, total likes, video count, private/public flag, verified badge, avatar URL.
- If the profile is public and
includeVideoDetailsis true, scrolls the video grid to load up tomaxVideosPerProfilevideos and extracts per-video metadata: video URL, caption, view/like/comment/share counts, duration (seconds), publish date, and extracted hashtags. - Deduplicates videos by URL within a single run.
- Detects and cleanly handles blocking states: CAPTCHA, login wall, rate limit, not-found, and private accounts — emitting a flagged row rather than crashing.
Input
| Field | Type | Default | Description |
|---|---|---|---|
usernames | array<string> | ["tiktok"] | TikTok usernames or full profile URLs (mixed input OK). |
maxVideosPerProfile | integer | 20 | Cap on videos per public profile (1–200). |
includeVideoDetails | boolean | true | If false, returns profile-level data only. |
resultsType | "profiles" | "profiles+videos" | "profiles+videos" | Output scope hint. "profiles" forces profile-only. |
maxRequestRetries | integer | 3 | Retries per failed profile page. |
scrollDelayMs | integer | 1500 | Base delay between scrolls (jittered ±50%). |
proxyConfiguration | object | Residential Apify proxy | Required for production runs. TikTok blocks datacenter IPs within a few requests. |
Output
One dataset row per profile, schema declared in actor.json:
{"username": "tiktok","displayName": "TikTok","bio": "Make Your Day","followerCount": 92000000,"followingCount": 0,"totalLikes": 350000000,"videoCount": 200,"isPrivate": false,"isVerified": true,"avatarUrl": "https://...","profileUrl": "https://www.tiktok.com/@tiktok","extractedAt": "2026-07-27T10:00:00.000Z","status": "ok","error": null,"videos": [{"videoId": "7234567890123456789","videoUrl": "https://www.tiktok.com/@tiktok/video/7234567890123456789","description": "Best moments of the week #tiktok #fyp","hashtags": ["tiktok", "fyp"],"viewCount": 1200000,"likeCount": 89000,"commentCount": 1200,"shareCount": 4500,"duration": 30,"publishDate": "2026-07-20T12:00:00.000Z","coverUrl": "https://..."}]}
Status field values: ok | private | captcha | login_wall | not_found | rate_limited | extraction_failed | request_failed.
Private accounts always produce a row with isPrivate: true, status: "private", error: "private account, no public data available", and an empty videos array.
Proxy configuration
TikTok is hostile to scraping from datacenter IPs. Use residential proxies for any non-trivial run:
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Each profile request uses a fresh browser context with a single-use session, so IP rotation happens automatically.
Privacy & compliance
- Reads only publicly visible, non-authenticated data from TikTok's public web interface.
- Never logs in, never sends cookies, never uses session tokens.
- Never bypasses privacy controls, CAPTCHAs, or rate limits. Private accounts are detected and skipped.
- Never performs engagement actions (no likes, follows, comments, video downloads).
- For research, analytics, brand monitoring, and content analysis. You are responsible for complying with TikTok's Terms of Service and applicable law when using the extracted data.
Running locally
npm installapify run # uses INPUT_SCHEMA.json prefillapify run --input ./my-input.json