Skip to content

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

NameTypeRequiredDescriptionExample
handlestringyesTikTok handlestoolpresidente
user_idstringnoTikTok user id. Use this for faster responses.6659752019493208069
sort_byenum(latest, popular)noWhat to sort bylatest
max_cursorstringnoCursor to get more videos. Get 'max_cursor' from previous response.1734562353000
regionstringnoRegion (Country) you want the proxy in. Defaults to US.US
trimbooleannoSet to true for a trimmed down version of the responsefalse

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 --help

Example 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

StatusMeaningAction
200Success.Use the JSON payload.
400Invalid or missing parameter.Verify required parameters and value format.
401Missing or invalid x-api-key.Pass a valid API key in the header.
402Out of credits.Top up at scrapecreators.com or wait for plan reset.
404Resource not found or private.Confirm the handle, URL, or id and that the resource is public.
429Rate limited.Backoff and retry with exponential delay.
500Server error or upstream platform failure.Retry with backoff; report persistent errors to support.