TikTok APItiktok.com ↗
Fetch TikTok video details, comments, user profiles, hashtag feeds, reposts, and engagement rates for any public account via 8 structured endpoints.
What is the TikTok API?
This API exposes 8 endpoints covering TikTok public data: video metadata, comments with pagination, comment replies, user profiles, a creator's recent videos, reposted videos, hashtag video feeds, and computed engagement rates. The get_post_details endpoint returns a full Video resource including caption, signed cover URL, music metadata, and engagement stats (likes, shares, comments, plays, saves). All endpoints accept plain TikTok usernames or video URLs and return structured JSON.
curl -X GET 'https://api.parse.bot/scraper/8fb77401-1c2f-4e77-a331-41cac1121187/get_post_details?url=https%3A%2F%2Fwww.tiktok.com%2F%40lilireinhart%2Fvideo%2F7517409255914212638' \ -H 'X-API-Key: $PARSE_API_KEY'
Get video details including caption, media URL, author info, engagement stats, and metadata for a public TikTok video. Requires a full TikTok video URL including the username path (e.g. https://www.tiktok.com/@username/video/VIDEO_ID). Returns a single Video resource with nested author, stats (likes, shares, comments, plays, saves, reposts), and music objects. The media_url, cover and origin_cover are time-limited signed CDN URLs (the cover URLs carry an x-expires Unix timestamp, observed roughly 1-2 days ahead); call again to obtain freshly signed URLs.
| Param | Type | Description |
|---|---|---|
| urlrequired | string | Full TikTok video URL in the format https://www.tiktok.com/@username/video/VIDEO_ID |
{
"type": "object",
"fields": {
"id": "string - Video ID",
"cover": "string - Video cover image URL (signed, time-limited)",
"music": "object - Music info with id, title, author",
"stats": "object - Engagement stats with likes, shares, comments, plays, saves counts, and reposts (integer, or null when TikTok omits it)",
"width": "integer - Video width in pixels",
"author": "object - Author info with uid, unique_id, nickname, avatar URL, and verified boolean",
"format": "string - Video format (e.g. mp4)",
"height": "integer - Video height in pixels",
"caption": "string - Video caption/description",
"duration": "integer - Video duration in seconds",
"media_url": "string - Time-limited signed video playback URL",
"create_time": "string - Unix timestamp of creation",
"origin_cover": "string - Original cover image URL (signed, time-limited)"
},
"sample": {
"data": {
"id": "7517409255914212638",
"cover": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/o4WHfRGQpAJWIf7bQHCmCjZCqcm8gFnfIN0AgM~tplv-tiktokx-origin.image?dr=9636&x-expires=1789200000&x-signature=REDACTED",
"music": {
"id": "7515252172306942726",
"title": "MAMASITAAA",
"author": "celebsnapz"
},
"stats": {
"likes": 480700,
"plays": 4500000,
"saves": 13124,
"shares": 14500,
"reposts": 0,
"comments": 1080
},
"width": 576,
"author": {
"uid": "6815436682578723845",
"avatar": "https://p16-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/075fe1e76e18c49d5d6dc360219c059f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&x-expires=1789200000&x-signature=REDACTED",
"nickname": "Lili Reinhart",
"verified": true,
"unique_id": "lilireinhart"
},
"format": "mp4",
"height": 1024,
"caption": "Mother & son ",
"duration": 15,
"media_url": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/REDACTED/?a=1988&expire=1789201993&signature=REDACTED",
"create_time": "1750283252",
"origin_cover": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/ooBm6pAQE9DAUVdFzyBQSoZDh6zEREDsQjfvf1~tplv-tiktokx-origin.image?dr=9636&x-expires=1789200000&x-signature=REDACTED"
},
"status": "success"
}
}About the TikTok API
Video and Comment Data
get_post_details takes a full TikTok video URL in the format https://www.tiktok.com/@username/video/VIDEO_ID and returns the video's caption, duration, width/height, format, a signed cover image URL, nested music object (id, title, author), nested author object (uid, unique_id, nickname, avatar, verified), and a stats block with likes, shares, comments, plays, saves, and reposts (integer or null when TikTok omits it). get_comments accepts either a video URL or numeric video ID, pages up to 50 comments per request via an integer cursor, and returns each comment's text, create_time, likes, reply_count, is_liked_by_creator flag, and a nested user object. get_comment_replies mirrors that interface but requires an additional comment_id parameter taken from a get_comments result, and each reply also carries reply_to_comment_id.
Profile and Creator Feed Data
get_profile_details resolves a username (leading @ stripped) to uid, nickname, bio, avatar, bio_link, followers, likes, verified, and private boolean. Note that TikTok's public profile page reports only followers, following, and likes counts — a following count is not currently surfaced. get_user_videos returns the creator's most recent public videos (roughly 10–13, including pinned) with id, post_url, caption, create_time, is_pinned, cover, and stats. Setting include_profile_count to true triggers an extra profile load that fills profile_video_count. Full historical pagination beyond that recent set is not available. get_user_reposts lists videos a user has reposted from their public Reposts tab; each row points at the original creator via post_url and author, not the queried user.
Hashtag Feed and Engagement Metrics
search_by_hashtag returns videos from a hashtag's public embed playlist — a curated, fixed set of roughly 10 videos per hashtag. The hashtag parameter strips a leading # automatically, and an optional date_filter value of 'yesterday' narrows results by approximate creation time derived from video IDs. This is not a live trending-feed search; it reflects TikTok's curated embed playlist only. get_creator_engagement computes engagement rate from the same recent-video set as get_user_videos, averaged over 1–15 videos (sample_size). The response includes engagement_rate as a decimal fraction, plus avg_likes, avg_plays, avg_comments, and avg_shares. Passing include_videos: true adds a videos array with per-video breakdowns.
The TikTok API is a managed, monitored endpoint for tiktok.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tiktok.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official tiktok.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor engagement stats (likes, plays, shares) on a brand's TikTok posts over time using
get_post_details - Aggregate and analyze comment sentiment for a video using
get_commentswith cursor-based pagination - Compare engagement rates across creators for influencer vetting using
get_creator_engagement - Track which videos a public account has reposted using
get_user_repoststo map content affinities - Pull a creator's most recent 10–13 videos with pinned status for a content calendar tool using
get_user_videos - Sample hashtag video feeds for trend research using
search_by_hashtagwith thedate_filterparameter - Build a public TikTok profile directory with follower counts, bios, and verification status from
get_profile_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does TikTok have an official developer API?+
How many videos does `get_user_videos` actually return, and can I paginate back through a creator's full history?+
total_available field shows how many are in that accessible set. Full historical pagination beyond this recent window is not available. If you need a creator's older posts, you can fork this API on Parse and revise it to add an endpoint targeting a different data source.What does `search_by_hashtag` actually return, and is it a live trending feed?+
date_filter parameter can narrow results to approximate creation windows, but the underlying pool of videos is fixed by TikTok's embed playlist, not a real-time search index.Does the API return a creator's `following` count from their profile?+
get_profile_details returns followers, total likes, bio, avatar, bio_link, and verified status. TikTok's public profile page only publishes followers, following, and likes at the page level, but following is not currently surfaced in the response. You can fork this API on Parse and revise it to add that field.What does the `is_liked_by_creator` field on comments indicate?+
get_comments and get_comment_replies that flags whether the video's creator has liked that specific comment. This is distinct from the comment's own likes count, which reflects likes from any user. The field maps directly to TikTok's creator-heart feature visible on the public video page.