tiktok-user-videos

The latest videos of one public TikTok account, newest first, one row per video: its text and hashtags, when it was posted, the author, plays, likes, comments, shares and saves, length, cover and sound. account is the @handle, the profile URL, or TikTok's secUid (MS4wLjABAAAA…, one call less); limit how many videos (default 20, at most 100). About 1 to 3 s; when TikTok does not answer, a slower second source does for a handle (minutes). An unknown or private account gives 0 rows with the reason in the warnings.

stagedtiktok.comWASM module10 fields2 units + 1 per 15 (1 by secUid)fresh 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

10 columns on every row. null means the site does not state it.
fieldtypemeaning
post_idstringTikTok's id of the video (digits, as a string).
urlstringThe video's page, https://www.tiktok.com/@<handle>/video/<id>.
descriptionstringThe video's text as written, emoji and hashtags 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-10-08T13:12:22Z).
authorobject{username, name, followers}: username is the handle without @, name the display name, followers an integer.
statsobject{plays, likes, comments, shares, saves}, integers, as TikTok counts them (large counts are rounded by TikTok: 1400000).
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 video.

null means the site does not state it.

post_idstringTikTok's id of the video (digits, as a string).
urlstringThe video's page, https://www.tiktok.com/@<handle>/video/<id>.
descriptionstringThe video's text as written, emoji and hashtags 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-10-08T13:12:22Z).
authorobject{username, name, followers}: username is the handle without @, name the display name, followers an integer.
statsobject{plays, likes, comments, shares, saves}, integers, as TikTok counts them (large counts are rounded by TikTok: 1400000).
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 video.

How it behaves

Cost. 2 units + 1 per 15 (1 by secUid). 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-user-videos with your key and account and limit. You get rows with the 10 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.