Skip to main content
tiktok_profile reads up to 1,000 TikTok profiles per job. By default it returns one profile row per handle; with resultsPerPage it returns each profile’s latest posts instead. One result is one row.

Run it

gofetch-client 0.8.0 does not list tiktok_profile yet. client.actor("tiktok_profile") works, and Python prints a UserWarning: Unknown actor URL 'tiktok_profile', passing through as scraper type you can ignore.

Inputs

shouldDownloadVideos and the other download flags are accepted for compatibility and do nothing: this scraper returns TikTok’s links, not stored copies, and mediaUrls is always empty.

Output

Rows come back in the order the handles finish, not the order you sent them: match them on input. A real profile row for @nasa:
There are three kinds of row: Profile row: id (the account’s id), text (always null), input, fromProfileSection, authorMeta, and profileScrapeNote when there is something to explain: private account — posts are not accessible, profile has no posts, no posts matched the filters, or a note that the profile was found through search and its bioLink and commerce fields are not available. On such a row, a 0 count means unknown. authorMeta: id, name (handle), nickName, profileUrl, verified, signature (bio), bioLink, avatar, originalAvatarUrl, privateAccount, region, roomId, ttSeller, commerceUserInfo, createTime, and counts fans (followers), following, friends, heart (likes received), video, digg (likes given). Avatar links expire. Post row: id, text, textLanguage, createTime, createTimeISO, webVideoUrl, diggCount, shareCount, playCount, collectCount, commentCount, repostCount, mentions, detailedMentions, hashtags (each {"name": ...}), musicMeta, videoMeta, isSlideshow, isPinned, isAd, isSponsored, input, fromProfileSection, and authorMeta of the profile you asked for. Slideshows add slideshowImageLinks; tagged posts add locationMeta. A post on two of your profiles is returned once. Error row: {"input", "error", "detail"}. error is not_found (deleted or never existed), banned (suspended), blocked (TikTok refused every attempt) or error. detail is a sentence for people, for example Profile @nasa could not be fetched: blocked by TikTok. Retry the job., or Profile @nasa could not be fetched. Retry the job. when the request failed on the way; it ends in (HTTP 429) when TikTok rate-limited it. Branch on error, not on detail.

What logged-out means here

You get: each public profile’s details and counts, and its latest public posts. Not available:
  • The posts of private accounts. Their profile row comes back, with privateAccount: true.
  • Profiles TikTok withholds from signed-out visitors, unless search finds them; those that stay hidden return a blocked row, not billed.
A job with two or more handles fails, with error_code BLOCKED, when every handle was blocked or nothing billable was collected. With one handle, the job completes with its blocked row.

Completeness

scraper_metadata.completeness adds up per handle: