Tiktok Post Scraper
Pricing
from $3.00 / 1,000 results
Tiktok Post Scraper
Scrape TikTok posts by URL and extract comprehensive video metadata including engagement stats, author information, music details, and hashtags.
Pricing
from $3.00 / 1,000 results
Rating
5.0
(1)
Developer
Crawler Bros
Maintained by CommunityActor stats
1
Bookmarked
60
Total users
16
Monthly active users
12 days ago
Last modified
Categories
Share
Scrape any TikTok video or slideshow post by URL or numeric ID. The actor uses a two-step extraction — embed API then /api/item/detail/ — to return complete post metadata including engagement stats (from statsV2), full author snapshots, music details, hashtags, @mentions, and signed media URLs with expiry timestamps. No TikTok account or cookies are required.
What this actor does
- Accepts TikTok post URLs (standard
/@user/video/IDor/@user/photo/IDformat) and/or raw post IDs - Returns engagement stats from statsV2 (playCount, likeCount, commentCount, shareCount, collectCount, repostCount) to avoid integer overflow on viral posts
- Extracts full author snapshots including follower/following/heart/video counts
- Parses music details (title, artist, copyright status, play URL, cover URL)
- Extracts hashtags and @mentions with character-level offsets from textExtra
- Provides signed video/cover/music play URLs plus a
mediaUrlExpiresAttimestamp - Handles both video and slideshow (photo carousel) post types
- Empty fields are omitted
Output per post
postId— unique TikTok post IDpostUrl— canonical post URLpostType—"video"or"slideshow"caption— full post caption textcreateTime— Unix timestamp of publicationcreatedAt— ISO 8601 publication datelocationCreated— location tag if set by creatorplayCount— total play/view count (from statsV2)likeCount— total like count (from statsV2)commentCount— total comment count (from statsV2)shareCount— total share count (from statsV2)collectCount— total saves/bookmarks (from statsV2)repostCount— total reposts (from statsV2)isAd— whether the post is a paid advertisementisAigc— whether the post is AI-generated contentstitchEnabled— whether stitching is allowedduetEnabled— whether duets are allowedshareEnabled— whether sharing is allowedauthor.id— author's TikTok user IDauthor.secUid— author's secUid for API callsauthor.username— author's @handleauthor.displayName— author's display nameauthor.verified— whether the author has a verified badgeauthor.private— whether the author's account is privateauthor.bio— author's profile bioauthor.avatarUrl— author's avatar image URLauthor.followerCount— author's follower countauthor.followingCount— number of accounts the author followsauthor.heartCount— total likes received by the authorauthor.videoCount— number of public videos by the authormusic.id— music IDmusic.title— music/sound namemusic.authorName— music artist namemusic.original— whether this is original audio created for the postmusic.duration— music clip duration in secondsmusic.isCopyrighted— copyright flagmusic.playUrl— signed audio stream URLmusic.coverUrl— music cover art URLvideo.width— video width in pixelsvideo.height— video height in pixelsvideo.duration— video duration in secondsvideo.ratio— aspect ratio string (e.g."540p")video.definition— quality label (e.g."720p")video.bitrate— video bitrate in bpsvideo.format— container format (e.g."mp4")video.playUrl— signed video stream URLvideo.downloadAddr— signed download URLvideo.cover— static cover image URLvideo.dynamicCover— animated cover image URLmediaUrlExpiresAt— ISO 8601 expiry time for all signed URLshashtags— array of{id, name}hashtag objectsmentions— array of{username, start, end}@mention objectssubtitleInfos— subtitle track array (whenincludeSubtitlesis true)slideshow— array of media objects for photo carousel postsscrapedAt— ISO 8601 timestamp when the record was collected
Input
| Field | Type | Default | Description |
|---|---|---|---|
postUrls | array | — | TikTok post URLs (/@user/video/ID or /@user/photo/ID format) |
postIds | array | — | Numeric post IDs (15–20 digit strings) as alternative to URLs |
includeMediaUrls | boolean | true | Include signed video, cover, and music URLs in output |
validateMediaUrls | boolean | false | Probe each media URL with a HEAD request to confirm accessibility |
includeAuthorStats | boolean | true | Include follower/following/heart/video counts in the author object |
includeSubtitles | boolean | false | Include subtitleInfos, bitrateInfo, and volumeInfo arrays |
includeHashtags | boolean | true | Include hashtags array extracted from textExtra |
includeMentions | boolean | true | Include @mentions array extracted from textExtra with offsets |
includeEffectStickers | boolean | false | Include effectStickers and stickersOnItem arrays |
Example: Scrape a single video post
{"postUrls": ["https://www.tiktok.com/@khaby.lame/video/7574844184952081686"],"includeMediaUrls": true,"includeAuthorStats": true,"includeHashtags": true,"includeMentions": true}
Example: Scrape multiple posts by ID
{"postIds": ["7574844184952081686", "7640880319159094559"],"includeMediaUrls": false,"includeAuthorStats": true}
Example: Scrape a photo carousel (slideshow) post
{"postUrls": ["https://www.tiktok.com/@natgeo/photo/7650496998889573645"],"includeMediaUrls": true,"includeAuthorStats": true}
Example: Minimal fields — engagement only
{"postUrls": ["https://www.tiktok.com/@khaby.lame/video/7574844184952081686","https://www.tiktok.com/@natgeo/video/7640880319159094559"],"includeMediaUrls": false,"includeAuthorStats": false,"includeHashtags": false,"includeMentions": false}
Use cases
- Influencer marketing — pull full post metrics, author stats, and music details for campaign reporting and ROI measurement
- Trend research — monitor engagement velocity on viral posts to identify emerging trends before they peak
- Content competitive analysis — benchmark your own posts against competitors by extracting their engagement stats and content metadata
- Media asset collection — obtain signed video and cover image URLs for archival or content moderation workflows
- Brand safety monitoring — audit posts by a creator before partnering to verify content type flags (isAd, isAigc) and sharing settings
- Academic research — build structured datasets of TikTok video metadata for social media studies
FAQ
Do I need a TikTok account or cookies? No. The actor uses TikTok's public embed API and item detail endpoint. No login is required.
How long do signed media URLs last?
Signed video and audio URLs typically expire within 24 hours. The mediaUrlExpiresAt field tells you exactly when. Download any media you need promptly after scraping.
What is the difference between postUrls and postIds?
They are two ways to identify the same posts. postUrls accepts the standard TikTok URL format; postIds accepts the 15–20 digit numeric ID directly. You can provide either or both in the same run.
Does this work on slideshow (photo carousel) posts?
Yes. Photo carousels are detected automatically (postType: "slideshow") and the individual image URLs are returned in the slideshow array.
What does validateMediaUrls do?
When enabled, the actor sends a HEAD request to each signed video URL to confirm it is accessible before including it in output. This adds latency but ensures the URLs are valid at the time of scraping.
Why are engagement stats from statsV2?
TikTok's legacy stats object uses a 32-bit integer for diggCount, which overflows to a negative number for posts with more than 2 billion likes. statsV2 returns these as strings and never overflows.
Can I scrape private or deleted videos? No. Private videos and deleted posts return an error from TikTok's API and are skipped.
Is there a rate limit? The actor handles pacing automatically. You can scrape hundreds of posts in a single run without manual delay configuration.
Related TikTok Scrapers
Build a complete TikTok data pipeline with our full suite: