TikTok Anonymous For You Feed Snapshot Scraper
Pricing
from $0.49 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
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 derivedengagementRate. - Supports a best-effort
regionmarket 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
| Field | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 30 | Maximum posts to collect (0–300). 0 returns no rows. |
region | select | AUTO | AUTO 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. |
minPlayCount | integer | 0 | Drop posts below this play count. 0 disables the filter. |
postedWithinDays | integer | 0 | Keep only posts created in the last N days (0–365). 0 disables the filter. |
excludeAds | boolean | false | Remove 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
| Field | Description |
|---|---|
rank | 1-based position in this snapshot after filters. |
postId | TikTok's unique post ID. |
postUrl | Direct URL to the post. |
postType | "video" or "slideshow". |
caption | Caption text, including hashtags and mentions as typed. |
feedType | Always "foryou" for this actor. |
observedRegion | Requested market label, or AUTO when following the connection region. |
isPersonalized | Always false — the feed is anonymous. |
createTime | Unix timestamp when the post was created. |
createdAt | Creation time as an ISO 8601 UTC string. |
collectedAt | Collection time as an ISO 8601 UTC string. |
locationCreated | Country code where the post was created, when the source provides it. |
playCount / likeCount / commentCount / shareCount / collectCount / repostCount | Engagement counters, preferring TikTok's exact string counters. |
engagementRate | (likes + comments + shares) / plays, rounded to four decimals. |
textLanguage | Language code detected for the caption. |
textTranslatable | Whether TikTok offers a caption translation. |
stitchEnabled / duetEnabled / shareEnabled | Whether each interaction type is enabled. |
isAd / adAuthorization | Ad-related flags. |
isAigc / aigcLabelType | AI-generated-content labels when TikTok provides them. |
categoryType | TikTok's numeric content category. |
diversificationId / diversificationLabels | Feed diversification metadata when present. |
author | Object: id, secUid, username, displayName, bio, verified, privateAccount, roomId, avatarUrl, followerCount, followingCount, heartCount, videoCount. |
music | Object: id, title, authorName, original, duration, album, playUrl, coverUrl. |
video | Object: width, height, duration, ratio, definition, codecType, format, size, quality, playUrl, cover, originCover, dynamicCover, subtitles[] (languageCode, languageName, format, url, expiresAt). |
poi | Tagged place when present: id, name, address, category, city, cityCode, countryCode, province, latitude, longitude. |
itemControl | Interaction permissions: canComment, canRepost, canShare, canMusicRedirect, canCreatorRedirect. |
hashtags | Array of {id, name, isCommerce} objects. |
mentions | Array of {username, start, end, awemeId} objects. |
images | Slideshow image URLs for photo posts. |
mediaUrlExpiresAt | ISO 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.
locationCreatedis 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;
AUTOuses the connection directly. - Signed media URLs should be refreshed by re-running the actor when they expire.