Tiktok Profile Scraper (Include Posts Account) avatar

Tiktok Profile Scraper (Include Posts Account)

Pricing

from $0.20 / 1,000 results

Go to Apify Store
Tiktok Profile Scraper (Include Posts Account)

Tiktok Profile Scraper (Include Posts Account)

Get a TikTok user's full profile (followers, likes, bio, avatar, verification, secUid) plus their last N posts in a single call. HTTP-only, no login, no cookies. Multi-strategy fallback chain (SSR β†’ signed API β†’ embed) means even WAF-blocked profiles return up to 10 recent posts

Pricing

from $0.20 / 1,000 results

Rating

0.0

(0)

Developer

Xtractoo

Xtractoo

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

8 days ago

Last modified

Categories

Share

🎡 TikTok Profile + Recent Posts Scraper

Scrape any public TikTok user's profile information and their most recent posts in a single call. One input (a username), one combined output.

Previously two separate actors β€” tiktok-profile-scraper and tiktok-posts-scraper β€” now merged into this one. Same input, one output dict containing both profile and posts.

✨ Why Use This Actor?

  • ⚑ Fast β€” typically returns in 5–30 seconds for profile + 10 posts
  • πŸ’° Cheap β€” HTTP-only, low memory, no browser overhead
  • πŸͺΆ Lightweight β€” no Playwright, no Chromium download, ~256 MB RAM
  • βœ… No login required β€” fully anonymous, no cookies, no session tokens
  • πŸ›‘οΈ Multi-strategy resilience β€” 4-step fallback chain; even when TikTok's WAF blocks the profile page entirely, the actor still returns up to 10 posts via the public embed endpoint
  • 🧩 One call, two datasets worth of data β€” profile metadata + recent video list

🎯 Use Cases

  • Influencer research β€” verify follower counts, engagement, and recent content style in one request
  • Competitor monitoring β€” snapshot a competitor's profile + last 10 uploads on a schedule
  • Lead generation β€” enrich creator lists with profile stats and post examples
  • Content auditing β€” pull a creator's recent video metadata for review/categorisation
  • Brand monitoring β€” track owned/sponsored accounts' latest posts
  • Academic research β€” collect public creator data + post samples for analysis
  • CRM enrichment β€” attach TikTok handle, follower count, and recent activity to contact records

πŸ“₯ Input

ParameterTypeRequiredDefaultDescription
usernamestringYesβ€”TikTok username without @. Example: charlidamelio
maxPostsintegerNo10Number of most recent posts to attach. Set 0 to skip post fetching (profile only).

Example input

{
"username": "tiktok",
"maxPosts": 10
}

πŸ“€ Output

A single dataset record containing both the profile info and the recent post list:

{
"profile": { /* raw TikTok userInfo */ },
"posts": [ /* raw itemStruct objects, newest first */ ],
"_input": "tiktok"
}

profile object

The raw TikTok user info extracted from the SSR HTML (__UNIVERSAL_DATA_FOR_REHYDRATION__ β†’ webapp.user-detail.userInfo) β€” or a partial reconstruction from the user-search API when the profile page is WAF-blocked.

Key nested fields:

  • user β€” id, uniqueId, nickname, avatarLarger/Medium/Thumb, signature, verified, secUid, privateAccount, region, bioLink, commerceUserInfo, roomId
  • stats / statsV2 β€” followerCount, followingCount, heartCount, videoCount, diggCount, friendCount

posts array

Each post is a raw TikTok video item (the same shape returned by TikTok's web /api/post/item_list/ endpoint, the SSR webapp.user-post.itemList, or the public /embed/@username page β€” depending on which strategy succeeded).

Two metadata fields are added by the scraper:

FieldTypeDescription
_inputstringThe username used for the request
_sourcestringWhich fetch path returned this item: "ssr", "api", or "embed"

Note: _source: "embed" items have a reduced field set (no authorStats, no downloadAddr, video dimensions may be 0) because the embed endpoint is intentionally minimal. Use this as a signal of how much fidelity you have for downstream processing.

Example output (abridged)

{
"_input": "tiktok",
"profile": {
"user": {
"id": "107955",
"uniqueId": "tiktok",
"nickname": "TikTok",
"signature": "One TikTok can make a big impact",
"verified": true,
"secUid": "MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM",
"bioLink": { "link": "linktr.ee/tiktok", "risk": 0 },
"privateAccount": false
},
"stats": {
"followerCount": 93600000,
"followingCount": 3,
"heartCount": 457000000,
"videoCount": 1421
}
},
"posts": [
{
"id": "7637896329779350814",
"desc": "…",
"createTime": 1762000000,
"video": { "duration": 21, "cover": "https://…", "playAddr": "https://…" },
"stats": { "playCount": 1234567, "diggCount": 89000, "commentCount": 1200, "shareCount": 450 },
"_input": "tiktok",
"_source": "embed"
}
]
}

πŸ› οΈ How It Works (Strategy Chain)

The actor walks four progressively-more-fallback strategies. Each one that returns data contributes to the output; results are deduplicated by video ID across strategies. The chain stops early once maxPosts is hit.

StepPathYieldsBypasses
S1SSR profile HTML at /@usernameProfile info + secUid + first ~30 postsTLS fingerprinting via Chrome impersonation
S1b/api/search/user/full/ (X-Bogus signed)Profile (partial) + secUidTriggered when S1 is WAF-blocked
S2/api/post/item_list/ (X-Bogus + X-Gnarly signed)Paginated posts beyond the initial 30Multi-session rotation to push past X-Gnarly enforcement
S3/embed/@username (FRONTITY state)Up to ~10 posts (limited fields)Always reachable β€” no signing, no WAF gate

If every other path is blocked, S3 still guarantees up to 10 recent posts with the basic metadata needed for most use cases. That's why this actor reliably returns something for almost any public account, even from datacenter IPs that TikTok normally restricts.

βš™οΈ Technical Details

  • Engine: HTTP-only β€” no Playwright, no Selenium, no headless browser
  • Anti-detection: TLS fingerprint emulation via curl_cffi (Chrome 131 impersonation), X-Bogus + X-Gnarly request signing, msToken rotation
  • Auth: Fully unauthenticated β€” no login, no user cookies
  • Docker image: apify/actor-python:3.12
  • Memory: ~256 MB RAM
  • Proxy: Optional. Datacenter proxies usually work. If you hit the embed-only fallback often, try Apify Datacenter proxy group.

⚠️ Known Limits

  • Private accounts return privateAccount: true in profile; their posts cannot be retrieved.
  • Posts past ~10 require either the SSR or signed API path to succeed. When only S3 (embed) delivers, the cap is ~10 regardless of maxPosts.
  • Region/language: defaults to en_US. TikTok serves different content per region β€” use a proxy in the target country for region-accurate post lists.
  • Field consistency: posts from different sources (_source: ssr / api / embed) have slightly different field sets. Normalise downstream if you need a uniform schema.