Skip to main content
tiktok collects the videos and photo posts of public TikTok accounts. One result is one post. For keyword search, use TikTok search; for profile details in bulk, TikTok profile.

Run it

Inputs

Send each profile once: a handle listed twice is collected, and billed, twice. A link to a video collects its author’s whole profile. Keyword and hashtag input (searchQueries, hashtags, search or tag links) is refused with 400: use TikTok search.
These Apify inputs are accepted but have no effect. A value other than the one shown adds a warning to the job’s log:
  • shouldDownloadVideos (true): videos are always stored.
  • shouldDownloadCovers and shouldDownloadSlideshowImages (false).
  • profileSorting ("latest"): posts come newest first.
  • disableCheerioBoost and disableEnrichAuthorStats (false).
Without limit or a date filter, a job collects every post of every profile. The cost then depends on how many posts they have. Set limit, onlyPostsNewerThan or maxTotalChargeUsd.
A date filter within the last 29 days makes the job a recent crawl, which is billed at its own rate; see Billing.

Output

One row per post. A real row from a job for @lego (the link to the stored video is masked here):
The authorMeta counts can be 0 when they were not collected for that row, which is common on date-filtered jobs. Use TikTok profile for reliable author counts. Avatar, cover and sound links point at TikTok’s servers and expire.
Some rows also carry textLanguage, isAd, detailedMentions and fromProfileSection, depending on how the post was read.

What logged-out means here

You get: posts from public accounts with their captions, counts, sound and author fields, as a signed-out visitor sees them. Not available:
  • Private accounts.
  • Accounts whose owner limits who can see them, and accounts TikTok does not show to signed-out visitors. These return a profile_info row with "error": "Restricted profile", restriction and restrictionReason. It is not billed.
  • Deleted or banned accounts.
A profile that returned nothing is listed in scraper_metadata.targets_failed, and the job still completes.

Completeness