TikTok Scraper — Videos, Profiles & Hashtags | from $3/1K avatar

TikTok Scraper — Videos, Profiles & Hashtags | from $3/1K

Pricing

from $2.91 / 1,000 profile items

Go to Apify Store
TikTok Scraper — Videos, Profiles & Hashtags | from $3/1K

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

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 actorsHow this actor handles it
Datacenter IP blocksForces 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 datasetsProbe-first stop-gate: actor aborts with actionable error before wasting your compute
DOM class-name scraping that breaks on every redesignRehydration JSON extraction (structural, not CSS-based) for CORE modes
No geo-validationCloud run on residential IP validates real-world reachability (TikTok geo-blocks certain countries)

6 modes

CORE modes — no request signing, most stable

ModeInput fieldWhat you get
profileusernamesFollower/following/like/video counts, bio, verified flag, avatar
productproductIdsTikTok Shop PDP: title, price range, rating, sold count, images
user_videosusernamesFirst 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

ModeInput fieldWhat you get
hashtaghashtagsVideos trending under a hashtag, ranked by TikTok's feed
searchkeywordsKeyword search results with ranking position
commentsvideoIdsComments 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_failed error. CORE modes continue working. See src/signer.py for 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)

FieldDescription
user_idTikTok internal user ID
sec_uidEncrypted user identifier (used for API pagination)
usernameHandle (e.g. charlidamelio)
nicknameDisplay name
verifiedBlue-check verified account
follower_countFollower count
following_countFollowing count
heart_countTotal likes received across all videos
video_countPublic video count
bioProfile bio text
regionAccount region code
profile_urlhttps://www.tiktok.com/@{username}
avatar_urlAvatar image URL

Video record (mode=user_videos)

FieldDescription
video_idTikTok video ID
author_usernameUploader handle
descriptionVideo caption (may include hashtags inline)
hashtagsExtracted hashtag list
durationDuration in seconds
play_countView count
like_countLike count
comment_countComment count
share_countShare count
collect_countSave/bookmark count
created_atISO-8601 UTC post time
video_urlhttps://www.tiktok.com/@{author}/video/{id}
thumbnail_urlCover image URL
music_titleBackground music title
music_authorBackground music artist
is_adTrue if TikTok marked it as an ad

Comment record (mode=comments)

FieldDescription
comment_idComment ID
video_idParent video ID
author_usernameCommenter handle
textComment text
like_countComment likes
reply_countReplies to this comment
is_replyTrue if this is a reply to another comment
parent_comment_idID of parent comment (replies only)
created_atISO-8601 UTC post time

TikTok Shop product record (mode=product)

FieldDescription
product_idTikTok Shop product ID
shop_idSeller shop ID
titleProduct title
descriptionProduct description
categoryProduct category
brandBrand name
price_minLowest SKU price (USD float)
price_maxHighest SKU price (USD float)
currencyPrice currency code (default: USD)
discount_pctDiscount percentage, if active
ratingSeller rating (0–5)
review_countNumber of reviews
sold_countUnits sold count
image_urlsList of product image URLs
product_urlhttps://www.tiktok.com/shop/pdp/{id}

Search / hashtag result record (mode=search or mode=hashtag)

Same video fields as above, plus:

FieldDescription
queryThe search keyword or hashtag that produced this result
rank1-based position in the result set

All records include

FieldDescription
parse_confidence0.0–1.0 parse quality score. 1.0 = all required fields found
warningsList of warning codes (empty = clean record)
scraped_atISO-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 RESIDENTIAL proxy 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 a signed_probe_failed error. CORE modes (profile, product, user_videos first page) continue working with no intervention. Monitor actor logs for SIGNED probe: FAIL to 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.