Appearance
Profile Videos
GET /v3/tiktok/profile/videos
Fetches videos posted by a TikTok user, sortable by latest or most popular , use this to get a creator's video feed or TikToks. Returns aweme_list, an array of video objects each containing aweme_id, desc (caption), statistics (play_count, digg_count/likes, comment_count, share_count, collect_count/saves), and video (download URLs, duration, cover image). Paginate with max_cursor from the previous response.
Authentication
All requests require the x-api-key header. Get your key at scrapecreators.com.
Query Parameters
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
handle | string | yes | TikTok handle | stoolpresidente |
user_id | string | no | TikTok user id. Use this for faster responses. | 6659752019493208069 |
sort_by | enum(latest, popular) | no | What to sort by | latest |
max_cursor | string | no | Cursor to get more videos. Get 'max_cursor' from previous response. | 1734562353000 |
region | string | no | Region (Country) you want the proxy in. Defaults to US. | US |
trim | boolean | no | Set to true for a trimmed down version of the response | false |
Example Request
curl
bash
curl 'https://api.scrapecreators.com/v3/tiktok/profile/videos?handle=stoolpresidente' \
-H 'x-api-key: $SCRAPECREATORS_API_KEY'Node / TypeScript
js
const params = new URLSearchParams({ handle: 'stoolpresidente' });
const res = await fetch(`https://api.scrapecreators.com/v3/tiktok/profile/videos?${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/v3/tiktok/profile/videos',
headers={'x-api-key': os.environ['SCRAPECREATORS_API_KEY']},
params={'handle': 'stoolpresidente'},
)
r.raise_for_status()
print(r.json())CLI
bash
scrapecreators tiktok profile-videos --helpExample Response
json
{
"aweme_list": [
{
"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": 1565,
"comment_count": 587,
"digg_count": 59605,
"download_count": 178,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"play_count": 559925,
"repost_count": 0,
"share_count": 3424,
"whatsapp_share_count": 7
},
"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=2a5a8daf&x-expires=1750370400&x-signature=PsejWQNXF%2BXPz%2BcpwWcdtCU9ddY%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=132edbea&idc=no1a&biz_tag=tt_video&s=PUBLISH&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=2a5a8daf&x-expires=1750370400&x-signature=PsejWQNXF%2BXPz%2BcpwWcdtCU9ddY%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=132edbea&idc=no1a&biz_tag=tt_video&s=PUBLISH&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=2a5a8daf&x-expires=1750370400&x-signature=PsejWQNXF%2BXPz%2BcpwWcdtCU9ddY%3D&t=bacd0480&ps=4f5296ae&shp=d05b14bd&shcp=132edbea&idc=no1a&biz_tag=tt_video&s=PUBLISH&sc=dynamic_cover"
],
"url_prefix": null
},
"big_thumbs": [
{
"duration": 173.66667,
"fext": "jpeg",
"img_num": 174,
"img_uris": [
"tos-maliva-p-0068c799-us/ogA4IiXKCF41BKBgnU9aS9ECP7zIZsMvTIivE"
],
"img_url": "",
"img_urls": [
"https://p16-sign-va.tiktokcdn.com/tos-maliva-p-0068c799-us/ogA4IiXKCF41BKBgnU9aS9ECP7zIZsMvTIivE~tplv-noop.image?x-expires=1750371666&x-signature=1vtd4zbxRXSMA9ysRa68cfDAtLM%3D"
],
"img_x_len": 5,
"img_x_size": 136,
"img_y_len": 5,
"img_y_size": 240,
"interval": 1,
"uri": ""
}
],
"bit_rate": [
{
"HDR_bit": "",
... (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. |