TikTok APItiktok.com ↗
Fetch TikTok video details, comments, replies, and profile data for any public account. Covers captions, stats, media URLs, and cursor-based comment pagination.
What is the TikTok API?
This API exposes 4 endpoints covering TikTok video data, comments, comment replies, and user profiles. Call get_post_details with a full TikTok video URL to retrieve the caption, cover image, media format, duration, engagement stats (likes, shares, comments, plays, saves), music metadata, and author info. The remaining endpoints cover paginated comments, threaded replies, and public profile statistics.
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, and music objects. The media_url is a time-limited signed playback URL.
| 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",
"music": "object - Music info with id, title, author",
"stats": "object - Engagement stats with likes, shares, comments, plays, saves counts",
"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"
},
"sample": {
"data": {
"id": "7517409255914212638",
"cover": "https://p16-common-sign.tiktokcdn-us.com/example-cover.image",
"music": {
"id": "7515252172306942726",
"title": "MAMASITAAA",
"author": "celebsnapz"
},
"stats": {
"likes": 480100,
"plays": 4500000,
"saves": 13123,
"shares": 14400,
"comments": 1105
},
"width": 576,
"author": {
"uid": "6815436682578723845",
"avatar": "https://p19-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/example.jpeg",
"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/example",
"create_time": "1750283252",
"origin_cover": "https://p19-common-sign.tiktokcdn-us.com/example-origin.image"
},
"status": "success"
}
}About the TikTok API
Video and Profile Data
get_post_details accepts a full TikTok video URL in the format https://www.tiktok.com/@username/video/VIDEO_ID and returns a single video object. Response fields include id, caption, cover (cover image URL), format, width, height, duration (in seconds), a stats object with likes, shares, comments, plays, and saves counts, a music object with id, title, and author, and an author object with uid, unique_id, nickname, avatar, and verified boolean.
get_profile_details takes a TikTok username (with or without a leading @) and returns public account fields: nickname, bio, avatar, followers, likes, private, verified, and bio_link. It does not require a video URL — just the username string.
Comments and Replies
get_comments accepts either a full video URL or a numeric video ID, plus optional count (up to 50 per page) and cursor parameters for pagination. Each comment object in the comments array includes comment_id, text, create_time, likes, reply_count, is_liked_by_creator, labels, and a nested user object. The response also returns has_more and a cursor value to pass into the next request.
get_comment_replies works the same way but requires an additional comment_id parameter (taken from get_comments output) to fetch threaded replies under a specific comment. The replies array follows the same shape as comments, and each reply includes a reply_to_comment_id field identifying its parent. Both comment endpoints return video_id in the response for reference.
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?+
- Track engagement velocity on a video by polling
stats.plays,stats.likes, andstats.sharesover time - Build a comment moderation dashboard by paginating through all comments and flagging
is_liked_by_creatorentries - Aggregate profile metrics (
followers,likes,verified) across a list of TikTok creators for influencer research - Extract video
captionandmusic.titlefields to study trending audio-caption pairings - Fetch threaded comment conversations with
get_comment_repliesto analyze audience discussion depth - Monitor
bio_linkchanges on a set of accounts using periodic calls toget_profile_details - Build a video metadata archive using
duration,format,cover, andstatsfields fromget_post_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?+
What does `get_comments` return, and how does pagination work?+
get_comments returns a comments array (up to 50 per page), a total count for that page, a has_more boolean, a cursor integer, and the video_id. To fetch subsequent pages, pass the returned cursor value as the cursor input parameter in the next call. Repeat until has_more is false. The same cursor pattern applies to get_comment_replies.Does the API return private or login-gated TikTok content?+
get_profile_details returns a private boolean — if that field is true, the account's videos are not accessible. Video content behind login walls, region-locked videos that are not publicly visible, and private account posts are not covered. You can fork this API on Parse and revise it if you need to handle account-specific authenticated flows differently.Can I retrieve a list of all videos posted by a user?+
get_profile_details and individual video details via get_post_details, but there is no endpoint that lists all videos for a given username or uid. You can fork this API on Parse and revise it to add a video-list endpoint.What video formats and resolutions does `get_post_details` expose?+
get_post_details returns format (e.g. mp4), width and height in pixels, and a cover image URL. It does not return multiple resolution variants or direct signed download URLs with expiry tokens — only the primary media URL along with its dimensions.