TikTok Scraper — Videos, Profiles & Hashtags | from $3/1K
Pricing
from $2.91 / 1,000 profile items
TikTok Scraper — Videos, Profiles & Hashtags | from $3/1K
Scrape TikTok profiles, videos, hashtag feeds, keyword search, comments, and TikTok Shop products without login. Residential proxy built-in — TikTok blocks datacenter IPs, most competitors fail silently. Probe-first stop-gate: zero charges if your run can't reach TikTok.
Pricing
from $2.91 / 1,000 profile items
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
TikTok Scraper — Profiles, Videos, Hashtags, Search & Comments
Scrape TikTok at scale without a login. Six modes cover the full TikTok data surface: user profiles, video feeds, hashtag trending, keyword search, video comments, and TikTok Shop products. Residential proxy is built in — TikTok blocks datacenter IPs at the edge, so competitors that skip this fail in production.
Pay per result.
Why this actor beats the incumbents
| What breaks most TikTok actors | How this actor handles it |
|---|---|
| Datacenter IP blocks | Forces Apify RESIDENTIAL proxy; CORE probe validates on startup |
| Signer rot (X-Bogus re-obfuscated every 2–4 weeks) | Graceful degradation: CORE modes keep working when signer breaks; actor logs exact advice |
| Cold-start failures silently producing empty datasets | Probe-first stop-gate: actor aborts with actionable error before wasting your compute |
| DOM class-name scraping that breaks on every redesign | Rehydration JSON extraction (structural, not CSS-based) for CORE modes |
| No geo-validation | Cloud run on residential IP validates real-world reachability (TikTok geo-blocks certain countries) |
6 modes
CORE modes — no request signing, most stable
| Mode | Input field | What you get |
|---|---|---|
profile | usernames | Follower/following/like/video counts, bio, verified flag, avatar |
product | productIds | TikTok Shop PDP: title, price range, rating, sold count, images |
user_videos | usernames | First page of a user's videos from rehydration JSON; full pagination if signer is healthy |
CORE modes parse TikTok's server-side rehydration JSON embedded in the page HTML. No X-Bogus signature required. These modes remain functional even when the signer breaks.
SIGNED modes — require X-Bogus signature
| Mode | Input field | What you get |
|---|---|---|
hashtag | hashtags | Videos trending under a hashtag, ranked by TikTok's feed |
search | keywords | Keyword search results with ranking position |
comments | videoIds | Comments on a specific video, including reply thread info |
SIGNED modes call TikTok's internal API endpoints and require a valid X-Bogus HMAC signature. TikTok re-obfuscates the signing algorithm every 2–4 weeks.
Signer maintenance note: When TikTok rotates the algorithm, SIGNED modes will return a
signed_probe_failederror. CORE modes continue working. Seesrc/signer.pyfor the refresh procedure. The actor's probe-first gate tells you exactly which modes are affected before any records are charged.
Output fields
Profile record (mode=profile)
| Field | Description |
|---|---|
user_id | TikTok internal user ID |
sec_uid | Encrypted user identifier (used for API pagination) |
username | Handle (e.g. charlidamelio) |
nickname | Display name |
verified | Blue-check verified account |
follower_count | Follower count |
following_count | Following count |
heart_count | Total likes received across all videos |
video_count | Public video count |
bio | Profile bio text |
region | Account region code |
profile_url | https://www.tiktok.com/@{username} |
avatar_url | Avatar image URL |
Video record (mode=user_videos)
| Field | Description |
|---|---|
video_id | TikTok video ID |
author_username | Uploader handle |
description | Video caption (may include hashtags inline) |
hashtags | Extracted hashtag list |
duration | Duration in seconds |
play_count | View count |
like_count | Like count |
comment_count | Comment count |
share_count | Share count |
collect_count | Save/bookmark count |
created_at | ISO-8601 UTC post time |
video_url | https://www.tiktok.com/@{author}/video/{id} |
thumbnail_url | Cover image URL |
music_title | Background music title |
music_author | Background music artist |
is_ad | True if TikTok marked it as an ad |
Comment record (mode=comments)
| Field | Description |
|---|---|
comment_id | Comment ID |
video_id | Parent video ID |
author_username | Commenter handle |
text | Comment text |
like_count | Comment likes |
reply_count | Replies to this comment |
is_reply | True if this is a reply to another comment |
parent_comment_id | ID of parent comment (replies only) |
created_at | ISO-8601 UTC post time |
TikTok Shop product record (mode=product)
| Field | Description |
|---|---|
product_id | TikTok Shop product ID |
shop_id | Seller shop ID |
title | Product title |
description | Product description |
category | Product category |
brand | Brand name |
price_min | Lowest SKU price (USD float) |
price_max | Highest SKU price (USD float) |
currency | Price currency code (default: USD) |
discount_pct | Discount percentage, if active |
rating | Seller rating (0–5) |
review_count | Number of reviews |
sold_count | Units sold count |
image_urls | List of product image URLs |
product_url | https://www.tiktok.com/shop/pdp/{id} |
Search / hashtag result record (mode=search or mode=hashtag)
Same video fields as above, plus:
| Field | Description |
|---|---|
query | The search keyword or hashtag that produced this result |
rank | 1-based position in the result set |
All records include
| Field | Description |
|---|---|
parse_confidence | 0.0–1.0 parse quality score. 1.0 = all required fields found |
warnings | List of warning codes (empty = clean record) |
scraped_at | ISO-8601 UTC timestamp of the scrape run |
How to use
Scrape a user profile
{"mode": "profile","usernames": ["charlidamelio", "khaby.lame"],"maxResults": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Scrape a user's recent videos
{"mode": "user_videos","usernames": ["mrbeast"],"maxResults": 50}
Search TikTok by keyword
{"mode": "search","keywords": ["viral recipe", "skincare routine"],"maxResults": 100}
Scrape a hashtag feed
{"mode": "hashtag","hashtags": ["fyp", "foodtok"],"maxResults": 200}
Scrape video comments
{"mode": "comments","videoIds": ["7123456789012345678"],"maxResults": 500}
Scrape a TikTok Shop product
{"mode": "product","productIds": ["1729386234567890"],"maxResults": 10}
Pricing
Pay-per-result (PPE) — you pay only for records successfully pushed to the dataset. Failed lookups, probe requests, and skipped items are never charged.
PPE event: tiktok-result
Reliability and proxy
TikTok performs aggressive geo-filtering and bot detection. Key facts:
- Datacenter IPs are blocked instantly. The actor defaults to
RESIDENTIALproxy and runs a connectivity probe before scraping anything. - Cloud geo-blocks are real. Some Apify cloud regions are blocked by TikTok. The startup CORE probe validates that your run's residential IP can actually reach TikTok — if it can't, the actor exits with a clear error and zero charges.
- Signer rot. TikTok re-obfuscates the X-Bogus signing algorithm every 2–4 weeks. When this happens, SIGNED modes (
hashtag,search,comments) return asigned_probe_failederror. CORE modes (profile,product,user_videosfirst page) continue working with no intervention. Monitor actor logs forSIGNED probe: FAILto know when a signer update is needed.
Not affiliated with TikTok or ByteDance. Data is retrieved from publicly accessible TikTok endpoints.
Integrations
Built for social-media analysts and content-intelligence teams pulling TikTok profiles, video feeds, hashtags, and comments at scale — the JSON/dataset output drops into the tools you already run, no glue code:
- n8n / Make / Zapier — trigger a run or pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your database) with no code: n8n, Make, Zapier.
- Webhooks — fire your own endpoint the moment a run finishes, to push results straight into your pipeline (docs).
- MCP server — expose this actor as a tool to Claude, Cursor, or any MCP client so an AI agent can pull this data mid-conversation (guide).
- API & SDKs — fetch the dataset as JSON, CSV, or Excel through the Apify REST API or the Python / JS SDKs.
See all Apify integrations.