TikTok Profile & Video Scraper
Pricing
from $2.40 / 1,000 profile scrapeds
TikTok Profile & Video Scraper
Scrape any public TikTok profile: followers, following, likes, verified, bio, avatar and recent videos (views, likes, comments, shares, date). No login. Fast via internal data.
Pricing
from $2.40 / 1,000 profile scrapeds
Rating
0.0
(0)
Developer
Bruno
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
TikTok Profile & Videos Scraper
Scrape public TikTok profiles without login — bio, avatar, verification status, and follower/following/like/video counts, plus recent videos (views, likes, comments, shares) when TikTok includes them in the profile page. Uses browser-grade requests (got-scraping) through a residential proxy, since TikTok blocks datacenter IPs aggressively.
Why it's useful
TikTok profile and video stats are in high demand for influencer vetting, competitor tracking, growth monitoring and lead lists — and TikTok has no public API for this. This actor reads the same JSON TikTok's own front-end renders from, giving structured data straight from the source page.
How it works
- Fetches
https://www.tiktok.com/@{username}with realistic browser headers and a residential proxy session. - Parses the
<script id="__UNIVERSAL_DATA_FOR_REHYDRATION__">JSON blob embedded in the HTML (the same data TikTok's React app hydrates from) — no login, no cookies, no signed API calls. - Reads
__DEFAULT_SCOPE__["webapp.user-detail"].userInfofor the profile + stats, and scans the page's other scopes for any embedded video list to buildrecent_videos. - If the page is blocked (captcha/403/429) or the JSON isn't found, retries with a fresh proxy session up to 5 times. If still blocked, it returns an honest
errorfield — it never fabricates data.
Input
{"usernames": ["tiktok", "@nasa", "https://www.tiktok.com/@nasa"],"maxVideos": 30,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] },"timeoutSecs": 30}
usernames— required. Handles (@name), bare usernames (name) or full profile URLs — all normalized automatically.maxVideos— cap on how many recent videos to keep per profile (0-200, default 30). Videos are only returned when TikTok's page includes them; this never invents entries.proxyConfiguration— residential proxy strongly recommended. TikTok blocks Apify's datacenter IPs almost immediately.timeoutSecs— per-request timeout (5-90s, default 30).
Output (per profile)
{"username": "nasa","uniqueId": "nasa","nickname": "NASA","signature": "Exploring the universe...","verified": true,"privateAccount": false,"avatarLarger": "https://...","region": "US","stats": {"followerCount": 24000000,"followingCount": 12,"heartCount": 300000000,"videoCount": 900,"diggCount": 0},"recent_videos": [{"id": "7123456789012345678","desc": "Look at this galaxy 🌌","createTime": "2026-01-15T18:00:00.000Z","stats": { "playCount": 500000, "diggCount": 40000, "commentCount": 1200, "shareCount": 3000 },"coverUrl": "https://...","url": "https://www.tiktok.com/@nasa/video/7123456789012345678"}],"profileUrl": "https://www.tiktok.com/@nasa","scrapedAt": "2026-09-25T12:00:00.000Z"}
On a block after 5 retries, or if the account doesn't exist:
{ "username": "somehandle", "error": "blocked (needs residential proxy): HTTP 403 (attempt 5/5)" }
Notes
- Recent videos are best-effort. TikTok often loads a profile's video grid via a separate signed
item_listendpoint rather than the initial page JSON. When that happens, this actor returns the profile + stats and arecent_videos_noteexplaining it — it does not fake video data. - Public profiles only. Private accounts return
privateAccount: truewith whatever public fields TikTok exposes (no video data). - Charges 1 profile event per successfully scraped username.
⭐ Enjoying this Actor?
A quick rating/review helps others find it. Need the item_list video endpoint wired in too, or hashtag/sound scraping? Open a ticket on the Issues tab.