POST /web/scrape with formats.parse: true and parseParams: {"type": "prebuilt", "parser": "tiktok-video"}. Read the result in parsed.data, with parsed.type: "tiktok-video". See the Quickstart for authentication and SDK setup.
Don’t send custom rules with this parser. For CSS selectors and rules, use the Custom parser.
Request
Use a public video or photo post URL:tiktok.com/@{username}/video/{id} or /@{username}/photo/{id}. Short links such as vm.tiktok.com/... aren’t accepted; open them to get the full URL.
Output
Whenparsed.success is true, the parsed output has this shape:
Video fields
null; missing lists are []. IDs are strings, and posted_at is ISO 8601. hashtags and mentions are without # or @. Photo posts have type: "photo", their images in image_urls, and null for video_url and video_duration_seconds. region is the two-letter country the post was created in.
video_url downloads the video file without cookies. It and the other media URLs are TikTok links that can expire, so download them promptly if you need to keep them.
is_paid_partnership is true when the post carries TikTok’s “Paid partnership” label, and sponsors holds the partner brand’s username. is_promotional_content is true when the creator marked the post as promoting a brand, product, or service. is_ad marks TikTok ads.
For the comments themselves, use TikTok comments.
Empty results and errors
A deleted or nonexistent post producesNOT_FOUND. Read parsed.success before using the data. A failed parse has data: null and can coexist with successful outputs. parsed.type remains "tiktok-video" even when parsing fails. See timeouts and errors for handling failures.