tiktok-post

One public TikTok video post as one row: its text and hashtags, when it was posted, the author (handle, name, followers, verified), plays, likes, comments, shares and saves, length, cover, sound and subtitles. post is the post's URL or its id (the long number after /video/). About 1 s; when TikTok does not answer, a slower second source does.

stagedtiktok.comWASM module12 fields1 unit; 1 record when it falls backfresh 15 min
‹ Recipes
…json
POST api.crawl4ai.com/recipes/…

$ crawl recipe

              
Live · your key · counts against your quota✓ 200 OK
# Hit Run - the rows render here as a table, with the cost

Fields

12 columns on every row. null means the site does not state it.
fieldtypemeaning
post_idstringTikTok's id of the post (digits, as a string).
urlstringThe post's page, https://www.tiktok.com/@<handle>/video/<id>.
descriptionstringThe post's text as written, emoji included; null when it has none.
hashtagsany[]The hashtags in the text, without the #, in order, each once.
created_atstringWhen it was posted, ISO 8601 UTC (2026-06-22T02:11:46Z).
authorobject{username, name, id, verified, followers}: username is the handle without @.
statsobject{plays, likes, comments, shares, saves}, integers, as TikTok rounds them on the page.
duration_snumberThe video's length in seconds.
coverstringThe cover image URL; it is signed by TikTok and stops working after some hours.
musicobjectThe sound, {title, author, original}: original is true for a sound made for this post.
subtitlesobject[]The caption tracks, a list of {language, url}; each URL is signed and short-lived.
regionstringThe country code TikTok gives for the post (US).

null means the site does not state it.

post_idstringTikTok's id of the post (digits, as a string).
urlstringThe post's page, https://www.tiktok.com/@<handle>/video/<id>.
descriptionstringThe post's text as written, emoji included; null when it has none.
hashtagsany[]The hashtags in the text, without the #, in order, each once.
created_atstringWhen it was posted, ISO 8601 UTC (2026-06-22T02:11:46Z).
authorobject{username, name, id, verified, followers}: username is the handle without @.
statsobject{plays, likes, comments, shares, saves}, integers, as TikTok rounds them on the page.
duration_snumberThe video's length in seconds.
coverstringThe cover image URL; it is signed by TikTok and stops working after some hours.
musicobjectThe sound, {title, author, original}: original is true for a sound made for this post.
subtitlesobject[]The caption tracks, a list of {language, url}; each URL is signed and short-lived.
regionstringThe country code TikTok gives for the post (US).

How it behaves

Cost. 1 unit; 1 record when it falls back. A failed run costs 0.

Freshness 15 min. The same input within 15 min is served from cache at 0 units.

How it answers. Answers at once for one input; a large run goes as a job you poll.

Questions about this recipeQuestions

Short answers. The API reference has the long ones.

Call POST /recipes/tiktok-post with your key and post. You get rows with the 12 fields above. The recipe is tested against the live site every 6 hours.

Need more from TikTok?

Extra fields, higher volume, or a private copy with a freshness SLA. We build it on Enterprise.

Request a change

For developers

Get a free API key and run your first crawl.

1,000 credits every month. No credit card. Your self-hosted setup keeps working.

For teams

Talk to us about volume, regions and an SLA.

A 30-minute call with the team that writes the crawler. DPA on request, invoice billing, your choice of US, EU or Singapore.