TikTok Anonymous For You Feed Snapshot Scraper avatar

TikTok Anonymous For You Feed Snapshot Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
TikTok Anonymous For You Feed Snapshot Scraper

TikTok Anonymous For You Feed Snapshot Scraper

Capture a snapshot of posts currently surfacing on TikTok's anonymous For You feed, with engagement stats, author, music, and hashtag details for each video or slideshow.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

vexaloom-labs

vexaloom-labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

TikTok's For You feed is a moving recommendation stream. This actor captures an anonymous snapshot of the posts surfacing on it — no account, cookies, or login — and returns the ranking, engagement counts, creator details, music, video metadata, subtitles, tagged places, and category labels for each post.

What this actor does

  • Collects posts from TikTok's anonymous For You feed, starting with the warm page payload and extending the snapshot across fresh anonymous sessions.
  • Deduplicates by post ID and stops when the requested count is reached or the rotating feed stops producing new posts.
  • Labels each post with its snapshot rank, collectedAt, and a derived engagementRate.
  • Supports a best-effort region market hint, plus client-side filters for minimum plays, recency, and ads.
  • Omits fields a post does not carry instead of writing nulls or placeholders.
  • Falls back to a headless browser only when the lightweight collection path returns nothing.

Input

FieldTypeDefaultDescription
maxItemsinteger30Maximum posts to collect (0–300). 0 returns no rows.
regionselectAUTOAUTO follows the connection region. A market code (40 supported markets) asks TikTok for that market and uses a matching exit when available; TikTok may still override the hint.
minPlayCountinteger0Drop posts below this play count. 0 disables the filter.
postedWithinDaysinteger0Keep only posts created in the last N days (0–365). 0 disables the filter.
excludeAdsbooleanfalseRemove posts TikTok marks as advertisements.

Example: quick US snapshot

{
"maxItems": 20,
"region": "US"
}

Example: recent high-reach posts, no ads

{
"maxItems": 50,
"region": "GB",
"minPlayCount": 100000,
"postedWithinDays": 7,
"excludeAds": true
}

Example: daily trend check

{
"maxItems": 40,
"region": "AUTO",
"postedWithinDays": 1
}

Saved tasks that still send the old regionObservation key keep working: when region is absent, a supported regionObservation value is used as the market hint. Other values are kept only as the informational observedRegion label.

Output per post

FieldDescription
rank1-based position in this snapshot after filters.
postIdTikTok's unique post ID.
postUrlDirect URL to the post.
postType"video" or "slideshow".
captionCaption text, including hashtags and mentions as typed.
feedTypeAlways "foryou" for this actor.
observedRegionRequested market label, or AUTO when following the connection region.
isPersonalizedAlways false — the feed is anonymous.
createTimeUnix timestamp when the post was created.
createdAtCreation time as an ISO 8601 UTC string.
collectedAtCollection time as an ISO 8601 UTC string.
locationCreatedCountry code where the post was created, when the source provides it.
playCount / likeCount / commentCount / shareCount / collectCount / repostCountEngagement counters, preferring TikTok's exact string counters.
engagementRate(likes + comments + shares) / plays, rounded to four decimals.
textLanguageLanguage code detected for the caption.
textTranslatableWhether TikTok offers a caption translation.
stitchEnabled / duetEnabled / shareEnabledWhether each interaction type is enabled.
isAd / adAuthorizationAd-related flags.
isAigc / aigcLabelTypeAI-generated-content labels when TikTok provides them.
categoryTypeTikTok's numeric content category.
diversificationId / diversificationLabelsFeed diversification metadata when present.
authorObject: id, secUid, username, displayName, bio, verified, privateAccount, roomId, avatarUrl, followerCount, followingCount, heartCount, videoCount.
musicObject: id, title, authorName, original, duration, album, playUrl, coverUrl.
videoObject: width, height, duration, ratio, definition, codecType, format, size, quality, playUrl, cover, originCover, dynamicCover, subtitles[] (languageCode, languageName, format, url, expiresAt).
poiTagged place when present: id, name, address, category, city, cityCode, countryCode, province, latitude, longitude.
itemControlInteraction permissions: canComment, canRepost, canShare, canMusicRedirect, canCreatorRedirect.
hashtagsArray of {id, name, isCommerce} objects.
mentionsArray of {username, start, end, awemeId} objects.
imagesSlideshow image URLs for photo posts.
mediaUrlExpiresAtISO 8601 UTC time when signed media URLs expire.

Use cases

  • Trend researchers tracking which formats, sounds, and creators the recommendation engine is surfacing.
  • Brand and sponsorship teams spotting promoted posts and ad labels in an organic feed.
  • Competitive intelligence comparing creator reach and engagement across markets.
  • Academic researchers building anonymous feed snapshots for content-distribution studies.
  • Media and dashboard teams feeding live trend monitoring with ranked post data.

FAQ

Q: Do I need a TikTok account or cookies?
A: No. The actor works as an anonymous visitor. It accepts no credentials, session IDs, API keys, or proxy configuration.

Q: Can I choose a specific country's feed?
A: region is a best-effort hint. TikTok decides the feed from the connection location, so a selected market may be partially or fully overridden. The actor reports the requested label in observedRegion and never fabricates a detected country.

Q: How many posts can I get in one run?
A: You can request up to 300. The anonymous feed rotates and has no resumable cursor; one fresh session usually yields around 20–25 unique posts, so deeper requests rotate sessions. If the source exhausts first, the run reports the honest delivered count.

Q: Why did I get fewer posts than maxItems?
A: Either TikTok stopped serving new posts, the run reached its bounded session search cap, or the active filters removed them. The status message states which case applies and how many posts were filtered out.

Q: Will two runs return the same posts?
A: Not necessarily. Each run negotiates fresh anonymous sessions, so the snapshot changes over time.

Q: Are media links permanent?
A: No. Video, cover, and subtitle URLs are signed and expire, usually within about two days. mediaUrlExpiresAt records the expiry where it can be parsed; use postUrl as the stable reference.

Q: Why are some fields missing on some posts?
A: TikTok only includes fields such as poi, locationCreated, subtitles, or music album for some posts. Empty values are omitted rather than written as null.

Q: Does this return personalized recommendations?
A: No. The feed is an anonymous, non-personalized observation and every row carries isPersonalized: false.

Notes and limits

  • The snapshot is a point-in-time observation, not a replayable list. Posts may repeat across sessions and are deduplicated by ID.
  • A deep request is bounded by a session search cap. If the cap is reached first, the status message says so instead of claiming the source is exhausted.
  • locationCreated is supplied mainly by the initial page payload and is absent for most API-served posts.
  • Region selection can consume Apify Proxy traffic when a matching datacenter exit is available; AUTO uses the connection directly.
  • Signed media URLs should be refreshed by re-running the actor when they expire.