Skip to main content

Fetch a post

Fetch one TikTok post by video id, with a fully structured payload and all engagement metrics — plays, likes, comments, shares, saves, and reposts.

GET /v1/tiktok/post/{video_id}

Path parameter​

ParameterDescription
video_idThe numeric video id (e.g. 7523456789012345678) or a full TikTok video URL.

Example​

curl "$LISTENX_BASE/v1/tiktok/post/7523456789012345678" \
-H "X-API-Key: $LISTENX_KEY"

Response​

{
"id": "7523456789012345678",
"url": "https://www.tiktok.com/@doc/video/7523456789012345678",
"type": "video",
"desc": "3 tips for whiter teeth #dentalcare @clinic",
"created_at": "2025-06-12T15:25:12+00:00",
"hashtags": ["dentalcare"],
"mentions": ["clinic"],
"author": {
"id": "99887766",
"unique_id": "doc",
"nickname": "Dr. Smile",
"sec_uid": "MS4wLjABAAAA…",
"avatar_url": "https://…",
"is_verified": true,
"signature": "Dentist • tips & myths",
"follower_count": 120400,
"following_count": 180,
"heart_count": 3400000,
"video_count": 412
},
"engagement": {
"play_count": 185300,
"digg_count": 4045,
"comment_count": 238,
"share_count": 512,
"collect_count": 1290,
"repost_count": 12
},
"music": {
"id": "…",
"title": "original sound",
"author": "doc",
"is_original": true,
"duration": 15,
"play_url": "https://…"
},
"media": {
"video": {
"id": "…",
"duration": 15,
"ratio": "720p",
"width": 720,
"height": 1280,
"cover": "https://…",
"play_addr": "https://…",
"download_addr": "https://…"
},
"images": []
},
"challenges": [ { "id": "…", "title": "dentalcare" } ],
"is_ad": false,
"region": "US",
"billing": {
"endpoint": "tiktok.post",
"units": 1,
"unit_price": "0.010000",
"amount": "0.010000",
"balance_after": "97.320000",
"request_id": "…"
}
}

Engagement metrics​

FieldDescription
play_countPlays / views.
digg_countLikes.
comment_countComments.
share_countShares.
collect_countSaves (favourites).
repost_countReposts.
Why some fields are null

TikTok does not return every metric for every post. Fields that TikTok omits are returned as null rather than dropped, so your schema stays stable.

Media​

  • Videos: media.video gives duration, dimensions, cover image, and the play / download URLs.
  • Photo-mode posts: type is photo and media.images is an array of image URLs (with width/height); media.video is null.

Billing​

Billed per request (units = 1), regardless of media type. See Billing.

Errors​

HTTPcodeMeaning
400invalid_video_idNot a valid video id / URL.
404post_not_foundPrivate, deleted, or nonexistent.
429upstream_rate_limitedRetry with backoff.
503signer_unavailableSigning service temporarily unavailable — retry.