JustSERPDocs
TikTok

TikTok Video

One TikTok video or photo post, read as a visitor with no account and answered as the document: `video` and `author`.

GET
/v1/tiktok/video

One TikTok video or photo post, read as a visitor with no account and answered as the document: video and author. Name it with url, or with video_id and username (not both). The full /video/ and /photo/ addresses are accepted, and so are the short vm.tiktok.com, vt.tiktok.com and tiktok.com/t/ share links (a short link to a photo post is not reliably followed: send the full /photo/ address). Counts are the exact ones TikTok shows; the author's counts are the rounded ones TikTok puts on the video's page ("9000000"). subtitles[].url and music.play_url are signed addresses that expire (url_expires_at for the subtitles). Playback addresses are never answered. A video TikTok says does not exist (deleted, private, region locked) is 404 profile_not_found. zero_retention is not handled.

Authorization

headerX-API-Key<token>

Your API key.

Query Parameters

cancel_token?string

A name you make up for this request (a UUID is fine), so you can later GET /v1/cancel with it. Only you know it, so only you can cancel. Use a new one for every request, retries included: a cancelled token stays cancelled for a few minutes.

Length1 <= length <= 128
url?string

The video's address (tiktok.com/@name/video/<id> or /photo/<id>), or a vm.tiktok.com / vt.tiktok.com / tiktok.com/t/ share link.

video_id?string

The number at the end of the video's address. Needs username.

Match^\d+$
username?string

The creator's username, with or without the @. Needs video_id.

Match^@?[a-zA-Z0-9_.]{1,24}$

Response Body

The video, as the document. When the page could not be parsed, the usual envelope.

application/json
  1. response

The first keys of a document-form answer. Unlike DocumentHead there is no search_information unless the engine has one (there is none for the AI engines, Events, Events Details, Facebook, Tripadvisor Place, Trending Now and the Apple engines' places).

search_metadata*
search_parameters*

The parameters the search ran with, defaults filled in; engine is the engine's name.

search_information?
video?

A TikTok video, photo or carousel post. In a list (profile videos, search) is_pinned, is_ad, is_duet_enabled and is_stitch_enabled are present only when true; on a video's own answer the last three are always present.

author?
Example Request
curl -X GET 'https://api.justserp.com/v1/tiktok/video?url=https%3A%2F%2Fwww.tiktok.com%2F%40tiktok%2Fvideo%2F7700009319382650142'
Example Response
{  "search_metadata": {    "id": "string",    "status": "Success",    "created_at": "string",    "request_url": "string",    "html_url": "string"  },  "search_parameters": {},  "search_information": {},  "video": {    "position": 0,    "grid_position": 0,    "id": "string",    "link": "string",    "caption": "string",    "language": "string",    "hashtags": [      "string"    ],    "mentions": [      "string"    ],    "iso_date": "string",    "duration": 0,    "width": 0,    "height": 0,    "is_pinned": true,    "is_ad": true,    "is_duet_enabled": true,    "is_stitch_enabled": true,    "views": 0,    "likes": 0,    "comments": 0,    "shares": 0,    "saves": 0,    "thumbnail": "string",    "dynamic_thumbnail": "string",    "type": "video",    "title": "string",    "carousel_items": [      {        "position": 0,        "image": "string",        "width": 0,        "height": 0      }    ],    "video_meta": {      "definition": "string",      "ratio": "string",      "format": "string",      "codec_type": "string",      "size": 0,      "bitrate": 0,      "bitrates": [        {          "gear_name": "string",          "bitrate": 0,          "fps": 0,          "codec_type": "string",          "format": "string"        }      ]    },    "music": {      "id": "string",      "title": "string",      "album": "string",      "author": "string",      "cover": "string",      "duration": 0,      "play_url": "string",      "is_original": true,      "is_copyrighted": true,      "link": "string"    },    "location": {      "id": "string",      "name": "string",      "address": "string",      "city": "string",      "category": "string"    },    "subtitles": [      {        "language": "string",        "format": "string",        "source": "string",        "url": "string",        "url_expires_at": "string"      }    ],    "author": {      "id": "string",      "sec_uid": "string",      "username": "string",      "link": "string",      "name": "string",      "bio": "string",      "avatar": "string",      "avatar_hd": "string",      "is_verified": true,      "is_private": true,      "followers": 0,      "following": 0,      "hearts": 0,      "posts": 0    }  },  "author": {    "id": "string",    "sec_uid": "string",    "username": "string",    "link": "string",    "name": "string",    "bio": "string",    "avatar": "string",    "avatar_hd": "string",    "is_verified": true,    "is_private": true,    "followers": 0,    "following": 0,    "hearts": 0,    "posts": 0  }}