TikTok
TikTok profile.videos
List the videos of a TikTok profile. Normalized JSON, one price per record, automatic failover across sources.
POST
/
v1
/
extract
/
tiktok
/
profile.videos
curl -X POST https://api.socialrouter.io/v1/extract/tiktok/profile.videos \
-H "Authorization: Bearer sr_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.tiktok.com/@tiktok",
"limit": 50
}'
const response = await fetch(
"https://api.socialrouter.io/v1/extract/tiktok/profile.videos",
{
method: "POST",
headers: {
"Authorization": "Bearer sr_live_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://www.tiktok.com/@tiktok",
limit: 50
}),
},
);
import requests
response = requests.post(
"https://api.socialrouter.io/v1/extract/tiktok/profile.videos",
headers={"Authorization": "Bearer sr_live_your_key"},
json={
"url": "https://www.tiktok.com/@tiktok",
"limit": 50
},
)
const run = await sr.run("tiktok/profile.videos", {
url: "https://www.tiktok.com/@tiktok",
limit: 50
});
{
"id": "ext_a1b2c3d4",
"status": "completed",
"platform": "tiktok",
"service": "profile.videos",
"url": "https://www.tiktok.com/@tiktok",
"served_by": "brightdata/tiktok",
"data": [
{
"name": "sol_y_bici",
"profile_url": "https://www.tiktok.com/@sol_y_bici/video/7664653232290925846",
"source": "tiktok",
"extracted_at": "2026-08-14T15:38:32.747Z",
"post_id": "7664653232290925846",
"post_url": "https://www.tiktok.com/@sol_y_bici/video/7664653232290925846",
"description": "@DJI Official @DJI Osmo",
"date_posted": "2026-07-20T16:49:14.000Z",
"post_type": "video",
"preview_image": "https://p19-common-sign.tiktokcdn-us.com/tos-no1a-p-0037-no/o4efKgXIjQyAZIBe4SQNOgGUA2mLILlKDAWLUv~tplv-tiktokx-origi...",
"video_url": "https://v16-webapp-prime.us.tiktok.com/video/tos/no1a/tos-no1a-ve-0068c001-no/owGe8IylIDfvgQIUmejUIT4LyLjmKAKOiyAdLU/...",
"video_duration": 179,
"tagged_users": [
{
"user_id": "6683842857009546246",
"user_handle": "dji_official",
"user_url": "https://www.tiktok.com/@dji_official",
"user_name": "@DJI"
}
],
"play_count": 709300,
"digg_count": 10500,
"comment_count": 139,
"collect_count": 728,
"music_title": "Sol ☀️: sonido original",
"music_id": "7664653294837189398",
"music_author": "Sol ☀️",
"music_url": "https://v19.tiktokcdn-us.com/17d281df2c283612133dce04bf8ca39f/6a7f8b78/video/tos/no1a/tos-no1a-v-2370-no/oIKfILGYToLa...",
"music_is_original": true,
"username": "sol_y_bici",
"user_url": "https://www.tiktok.com/@sol_y_bici",
"profile_id": "7494578926280508438",
"sec_uid": "MS4wLjABAAAAHTHlyWLTxNbp4I47j5pgOkb5c86_UAnpdG_q7LiKASSV2z6G7enh5jeEyNpt7mOp",
"about": "@cartageneraenbici",
"profile_picture": "https://p19-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/8f14ab108ea403a4810294d391015627~tplv-tiktokx-cropcenter...",
"follower_count": 1000000,
"is_verified": false
}
],
"pagination": {
"total": 1,
"returned": 1
},
"created_at": "2026-07-30T12:00:00Z",
"completed_at": "2026-07-30T12:00:03Z"
}
List the videos of a TikTok profile. The response is normalized, so it keeps the same shape whichever offer served it.
The call is synchronous and comes back
Prices are live in the catalogue:
completed or failed. Body fields and error codes shared by every service are documented on Run a service.
Body
string[]
required
The URLs to fetch, as
urls (array) or url (single string). Each one must match an accepted format below, and a mismatch returns 400 invalid_input_format before any routing or billing.string
Single-input form of
urls.number
default:"100"
Maximum number of records to return. Integer, 1-250.
string
Pin one offer, as
source/name. Serving this service: brightdata/tiktok. Omit it (the default) to let the router walk the failover chain.object
Accepted URL formats
| Format | Example |
|---|---|
https://www.tiktok.com/@<handle> | https://www.tiktok.com/@tiktok |
Offers
One offer serves this endpoint today. When a second one implements it, failover turns on with no change on your side.| Offer | Inputs per call |
|---|---|
brightdata/tiktok | 1000 |
GET /v1/services/tiktok/profile.videos. See Credits for how a call is billed.
Response
data[] holds the normalized records, served_by names the offer that answered, and credits_used carries the actual charge.
The example response is a real run with values shortened for readability. A field is present when TikTok exposes it for that item, so the exact set varies record to record.
curl -X POST https://api.socialrouter.io/v1/extract/tiktok/profile.videos \
-H "Authorization: Bearer sr_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.tiktok.com/@tiktok",
"limit": 50
}'
const response = await fetch(
"https://api.socialrouter.io/v1/extract/tiktok/profile.videos",
{
method: "POST",
headers: {
"Authorization": "Bearer sr_live_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://www.tiktok.com/@tiktok",
limit: 50
}),
},
);
import requests
response = requests.post(
"https://api.socialrouter.io/v1/extract/tiktok/profile.videos",
headers={"Authorization": "Bearer sr_live_your_key"},
json={
"url": "https://www.tiktok.com/@tiktok",
"limit": 50
},
)
const run = await sr.run("tiktok/profile.videos", {
url: "https://www.tiktok.com/@tiktok",
limit: 50
});
{
"id": "ext_a1b2c3d4",
"status": "completed",
"platform": "tiktok",
"service": "profile.videos",
"url": "https://www.tiktok.com/@tiktok",
"served_by": "brightdata/tiktok",
"data": [
{
"name": "sol_y_bici",
"profile_url": "https://www.tiktok.com/@sol_y_bici/video/7664653232290925846",
"source": "tiktok",
"extracted_at": "2026-08-14T15:38:32.747Z",
"post_id": "7664653232290925846",
"post_url": "https://www.tiktok.com/@sol_y_bici/video/7664653232290925846",
"description": "@DJI Official @DJI Osmo",
"date_posted": "2026-07-20T16:49:14.000Z",
"post_type": "video",
"preview_image": "https://p19-common-sign.tiktokcdn-us.com/tos-no1a-p-0037-no/o4efKgXIjQyAZIBe4SQNOgGUA2mLILlKDAWLUv~tplv-tiktokx-origi...",
"video_url": "https://v16-webapp-prime.us.tiktok.com/video/tos/no1a/tos-no1a-ve-0068c001-no/owGe8IylIDfvgQIUmejUIT4LyLjmKAKOiyAdLU/...",
"video_duration": 179,
"tagged_users": [
{
"user_id": "6683842857009546246",
"user_handle": "dji_official",
"user_url": "https://www.tiktok.com/@dji_official",
"user_name": "@DJI"
}
],
"play_count": 709300,
"digg_count": 10500,
"comment_count": 139,
"collect_count": 728,
"music_title": "Sol ☀️: sonido original",
"music_id": "7664653294837189398",
"music_author": "Sol ☀️",
"music_url": "https://v19.tiktokcdn-us.com/17d281df2c283612133dce04bf8ca39f/6a7f8b78/video/tos/no1a/tos-no1a-v-2370-no/oIKfILGYToLa...",
"music_is_original": true,
"username": "sol_y_bici",
"user_url": "https://www.tiktok.com/@sol_y_bici",
"profile_id": "7494578926280508438",
"sec_uid": "MS4wLjABAAAAHTHlyWLTxNbp4I47j5pgOkb5c86_UAnpdG_q7LiKASSV2z6G7enh5jeEyNpt7mOp",
"about": "@cartageneraenbici",
"profile_picture": "https://p19-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/8f14ab108ea403a4810294d391015627~tplv-tiktokx-cropcenter...",
"follower_count": 1000000,
"is_verified": false
}
],
"pagination": {
"total": 1,
"returned": 1
},
"created_at": "2026-07-30T12:00:00Z",
"completed_at": "2026-07-30T12:00:03Z"
}
⌘I
curl -X POST https://api.socialrouter.io/v1/extract/tiktok/profile.videos \
-H "Authorization: Bearer sr_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.tiktok.com/@tiktok",
"limit": 50
}'
const response = await fetch(
"https://api.socialrouter.io/v1/extract/tiktok/profile.videos",
{
method: "POST",
headers: {
"Authorization": "Bearer sr_live_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://www.tiktok.com/@tiktok",
limit: 50
}),
},
);
import requests
response = requests.post(
"https://api.socialrouter.io/v1/extract/tiktok/profile.videos",
headers={"Authorization": "Bearer sr_live_your_key"},
json={
"url": "https://www.tiktok.com/@tiktok",
"limit": 50
},
)
const run = await sr.run("tiktok/profile.videos", {
url: "https://www.tiktok.com/@tiktok",
limit: 50
});
{
"id": "ext_a1b2c3d4",
"status": "completed",
"platform": "tiktok",
"service": "profile.videos",
"url": "https://www.tiktok.com/@tiktok",
"served_by": "brightdata/tiktok",
"data": [
{
"name": "sol_y_bici",
"profile_url": "https://www.tiktok.com/@sol_y_bici/video/7664653232290925846",
"source": "tiktok",
"extracted_at": "2026-08-14T15:38:32.747Z",
"post_id": "7664653232290925846",
"post_url": "https://www.tiktok.com/@sol_y_bici/video/7664653232290925846",
"description": "@DJI Official @DJI Osmo",
"date_posted": "2026-07-20T16:49:14.000Z",
"post_type": "video",
"preview_image": "https://p19-common-sign.tiktokcdn-us.com/tos-no1a-p-0037-no/o4efKgXIjQyAZIBe4SQNOgGUA2mLILlKDAWLUv~tplv-tiktokx-origi...",
"video_url": "https://v16-webapp-prime.us.tiktok.com/video/tos/no1a/tos-no1a-ve-0068c001-no/owGe8IylIDfvgQIUmejUIT4LyLjmKAKOiyAdLU/...",
"video_duration": 179,
"tagged_users": [
{
"user_id": "6683842857009546246",
"user_handle": "dji_official",
"user_url": "https://www.tiktok.com/@dji_official",
"user_name": "@DJI"
}
],
"play_count": 709300,
"digg_count": 10500,
"comment_count": 139,
"collect_count": 728,
"music_title": "Sol ☀️: sonido original",
"music_id": "7664653294837189398",
"music_author": "Sol ☀️",
"music_url": "https://v19.tiktokcdn-us.com/17d281df2c283612133dce04bf8ca39f/6a7f8b78/video/tos/no1a/tos-no1a-v-2370-no/oIKfILGYToLa...",
"music_is_original": true,
"username": "sol_y_bici",
"user_url": "https://www.tiktok.com/@sol_y_bici",
"profile_id": "7494578926280508438",
"sec_uid": "MS4wLjABAAAAHTHlyWLTxNbp4I47j5pgOkb5c86_UAnpdG_q7LiKASSV2z6G7enh5jeEyNpt7mOp",
"about": "@cartageneraenbici",
"profile_picture": "https://p19-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/8f14ab108ea403a4810294d391015627~tplv-tiktokx-cropcenter...",
"follower_count": 1000000,
"is_verified": false
}
],
"pagination": {
"total": 1,
"returned": 1
},
"created_at": "2026-07-30T12:00:00Z",
"completed_at": "2026-07-30T12:00:03Z"
}