Appearance
Video Info
GET /v2/tiktok/video
Fetches detailed data for a single TikTok video by URL, including its metadata, engagement stats, and optionally its transcript/captions. Returns aweme_detail with desc (caption), statistics (play_count, digg_count/likes, comment_count, share_count, collect_count), video (download URLs including no-watermark), author info, and music info; also returns transcript in WEBVTT format if get_transcript=true.
Authentication
All requests require the x-api-key header. Get your key at scrapecreators.com.
Query Parameters
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
url | string | yes | TikTok video URL | https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630 |
get_transcript | boolean | no | Get transcript of the video | |
region | string | no | Region of the proxy. Sometimes you'll need to specify the region if you're not getting a response. Commonly for videos from the Phillipines, in which case you'd use 'PH'. Use 2 letter country codes like US, GB, FR, etc | US |
trim | boolean | no | Set to true to get a trimmed response | |
download_media | boolean | no | Set to true to download the video/images and get back permanent Supabase URLs. Costs 10 credits if media is found, 1 credit otherwise. |
Example Request
curl
bash
curl 'https://api.scrapecreators.com/v2/tiktok/video?url=https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630' \
-H 'x-api-key: $SCRAPECREATORS_API_KEY'Node / TypeScript
js
const params = new URLSearchParams({ url: 'https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630' });
const res = await fetch(`https://api.scrapecreators.com/v2/tiktok/video?${params}`, {
headers: { 'x-api-key': process.env.SCRAPECREATORS_API_KEY }
});
const data = await res.json();
console.log(data);Python
python
import os, requests
r = requests.get(
'https://api.scrapecreators.com/v2/tiktok/video',
headers={'x-api-key': os.environ['SCRAPECREATORS_API_KEY']},
params={'url': 'https://www.tiktok.com/@randomspamvideos25/video/7251387037834595630'},
)
r.raise_for_status()
print(r.json())CLI
bash
scrapecreators tiktok video --helpExample Response
json
{
"aweme_detail": {
"aweme_id": "7517114944362499342",
"desc": "You can say whatever you want about the WNBA is but it’s never boring",
"desc_language": "en",
"region": "US",
"statistics": {
"aweme_id": "7517114944362499342",
"collect_count": 1633,
"comment_count": 618,
"digg_count": 62522,
"download_count": 190,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"play_count": 589745,
"repost_count": 0,
"share_count": 3585,
"whatsapp_share_count": 8
},
"video": {
"CoverTsp": 140.193500922967,
"ai_dynamic_cover": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=1d205fbb&x-expires=1750374000&x-signature=3iaAsuyxWAl52xo73%2FzWWOnRFBo%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=1d1a97fc&idc=no1a&biz_tag=tt_video&s=AWEME_DETAIL&sc=dynamic_cover"
],
"url_prefix": null
},
"ai_dynamic_cover_bak": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=1d205fbb&x-expires=1750374000&x-signature=3iaAsuyxWAl52xo73%2FzWWOnRFBo%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=1d1a97fc&idc=no1a&biz_tag=tt_video&s=AWEME_DETAIL&sc=dynamic_cover"
],
"url_prefix": null
},
"animated_cover": {
"uri": "tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H",
"url_list": [
"https://p16-sign.tiktokcdn-us.com/tos-useast5-p-0068-tx/o0QcUfjIQHA8EQBSBQtAfYqKkCX9eKpMEOHl1H~tplv-tiktokx-origin.image?dr=9229&refresh_token=1d205fbb&x-expires=1750374000&x-signature=3iaAsuyxWAl52xo73%2FzWWOnRFBo%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=1d1a97fc&idc=no1a&biz_tag=tt_video&s=AWEME_DETAIL&sc=dynamic_cover"
],
"url_prefix": null
},
"bit_rate": [
{
"HDR_bit": "",
"HDR_type": "",
"bit_rate": 694328,
"dub_infos": null,
"fid_profile_labels": "",
"fps": 30,
"gear_name": "adapt_lower_720_2",
"is_bytevc1": 2,
"play_addr": {
"data_size": 15073438,
"file_cs": "c:0-144831-d8fd",
"file_hash": "bade4c49b717e85095bf288836f2cf41",
"height": 1280,
"uri": "v12044gd0000d192fcnog65ouluk5f60",
"url_key": "v12044gd0000d192fcnog65ouluk5f60_bytevc2_720p_694328",
"url_list": [
"https://v45.tiktokcdn-eu.com/181058a705ab5b81ac71c7ec81b7d91c/68549d47/video/tos/maliva/tos-maliva-ve-0068c799-us/oQOIKCXpeQMxlHgA9YwA8fQqQkIfj3UHkctEaC/?a=1233&bti=OUBzOTg7QGo6OjZAL3AjLTAzYCMxNDNg&ch=0&cr
... (truncated)Credits
Most ScrapeCreators endpoints consume 1 credit per successful response. Some heavier endpoints (transcripts, AI-driven enrichment, ad detail lookups) may cost more. Check GET /v1/credit-balance for your remaining balance.
Errors
| Status | Meaning | Action |
|---|---|---|
| 200 | Success. | Use the JSON payload. |
| 400 | Invalid or missing parameter. | Verify required parameters and value format. |
| 401 | Missing or invalid x-api-key. | Pass a valid API key in the header. |
| 402 | Out of credits. | Top up at scrapecreators.com or wait for plan reset. |
| 404 | Resource not found or private. | Confirm the handle, URL, or id and that the resource is public. |
| 429 | Rate limited. | Backoff and retry with exponential delay. |
| 500 | Server error or upstream platform failure. | Retry with backoff; report persistent errors to support. |