Docs menu

Popular TikTok videos

Beta GET /v1/tiktok/videos/popular

GET /v1/tiktok/videos/popular

Videos from TikTok's Explore feed, the nearest public list to 'popular' (the Creative Center ranking behind ScrapeCreators' endpoint needs a login). period and sort are accepted for compatibility and not applied; category picks an Explore category.

  • Cost: 1 credit
  • Status: Beta. Built and tested against recorded responses; the shape may still gain fields.
  • Cache: Results are kept up to 1 day; send max_age_days to reuse them for free.
  • Timeout: A request still running after about 25 seconds answers 202 with a job to poll (Batch and jobs).

Parameters#

NameTypeRequiredDescription
periodstringnoAccepted for compatibility; the Explore feed has no time window. One of 7, 30.
sortstringnoAccepted for compatibility; not applied. One of views, likes, comments, shares. Also accepted as sort_by, sortBy, order.
categorystringnoTikTok's numeric Explore category id (default 1).

Every request also accepts:

  • cursor: the cursor from the previous page (Pagination).
  • region: two-letter country code for results that vary by country. Changing it restarts the cursor chain.
  • trim: true for a smaller response without null fields and extra.
  • raw: true to also get the platform's original object as raw.
  • max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).

Example request#

Set your key in the environment first (see Authentication).

curl
curl -G "https://api.socialscrape.io/v1/tiktok/videos/popular" \
  -H "x-api-key: $SOCIALSCRAPE_API_KEY" \
  --data-urlencode "region=US"
Python
import os
import requests

params = {
    "region": "US",
}
res = requests.get(
    "https://api.socialscrape.io/v1/tiktok/videos/popular",
    headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},
    params=params,
)
body = res.json()

if body["ok"]:
    print(body["data"])
else:
    print(body["error"]["code"], body["error"]["message"])
TypeScript
const url = new URL("https://api.socialscrape.io/v1/tiktok/videos/popular");
url.search = new URLSearchParams({
  "region": "US"
}).toString();
const res = await fetch(url, {
  headers: { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! },
});
const body = await res.json();

if (body.ok) {
  console.log(body.data);
} else {
  console.error(body.error.code, body.error.message);
}
n8n
{
  "nodes": [
    {
      "name": "SocialScrape Popular TikTok videos",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        0,
        0
      ],
      "parameters": {
        "method": "GET",
        "url": "https://api.socialscrape.io/v1/tiktok/videos/popular",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "region",
              "value": "US"
            }
          ]
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "x-api-key",
              "value": "={{ $env.SOCIALSCRAPE_API_KEY }}"
            }
          ]
        }
      }
    }
  ],
  "connections": {}
}

Example response#

This is a sample from a recorded response, lists and long text are shortened. Status 200.

{
  "ok": true,
  "credits_charged": 1,
  "credits_remaining": 4999,
  "cached": false,
  "cached_at": null,
  "request_id": "req_f64ceef95a71479395ed042a",
  "data": {
    "object": "list",
    "items": [
      {
        "object": "post",
        "platform": "tiktok",
        "id": "7694032058280119583",
        "url": "https://www.tiktok.com/@bbykitty38/video/7694032058280119583",
        "type": "video",
        "author": {
          "id": "7657915122313528334",
          "handle": "bbykitty38",
          "name": "Bbykitty",
          "url": "https://www.tiktok.com/@bbykitty38",
          "avatar_url": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/262858978cba062bcf89c7975ff729ac~tplv-tiktokx-cropcenter:100:100.jpeg?dr=9640&refresh_token=e02bfac9&x-expires=1793498400&x-signature=inSY%2FLBCQ3UKdRWUzMddsLhy3vc%3D&t=4d5b0...",
          "verified": false
        },
        "title": null,
        "text": "#CapCut Toc Toc 😂 |⬆️ Tap on the template anchor to recreate yours #CapCut #capcutpioneer #pioneertemplate",
        "published_at": "2026-10-07T20:54:17Z",
        "duration_seconds": 11.0,
        "language": "en",
        "hashtags": [
          "capcut",
          "capcutpioneer",
          "pioneertemplate"
        ],
        "mentions": null,
        "stats": {
          "views": 155900,
          "likes": 3758,
          "comments": 38,
          "shares": 1526,
          "saves": 345,
          "dislikes": null
        },
        "media": {
          "thumbnail_url": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/osE3XcQAVeAFSErYuuRm2xfgBFD6EB8QjHvqDN~tplv-tiktokx-origin.image?dr=9636&x-expires=1793498400&x-signature=FdJS4sPAoeB17mL3KpUwL0nBPq0%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shc...",
          "video_url": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-ve-0068c001-tx2/oYEADEA7XwBxazBVKCQgBIaJsgGxSRbiYzisP/?a=1988&bti=ODszNWYuMDE6&&bt=2069&ft=aEeq8qT0mIoPD12cAAiI3wUhT9AbMeF~O5&mime_type=video_mp4&rc=ZjwzO2U1NTZpZGdkZDhmOE...",
          "audio_url": null,
          "image_urls": null,
          "width": 720,
          "height": 1260
        },
        "song": {
          "id": "7690651570417060641",
          "title": "son original",
          "artist": "CASTING GASTRO",
          "url": "https://www.tiktok.com/music/son-original-7690651570417060641"
        },
        "location": null,
        "is_pinned": null,
        "is_sponsored": false,
        "extra": {
          "ai_label_shown": true,
          "author_followers": 161200,
          "category_type": 106,
          "comments_disabled": false,
          "duet_enabled": true,
          "is_private": false,
          "music_is_original": true,
          "reposts": 0,
          "stitch_enabled": true,
          "video_definition": "720p"
        }
      },
      {
        "object": "post",
        "platform": "tiktok",
        "id": "7697318897640377631",
        "url": "https://www.tiktok.com/@naohh_ark765/video/7697318897640377631",
        "type": "video",
        "author": {
          "id": "7697305375733744653",
          "handle": "naohh_ark765",
          "name": "naohh_ark765",
          "url": "https://www.tiktok.com/@naohh_ark765",
          "avatar_url": "https://p19-common-sign.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/c9da8fd5fb244ed6b39b85a95976a185~tplv-tiktokx-cropcenter:100:100.jpeg?dr=9640&refresh_token=7dfb052e&x-expires=1793498400&x-signature=3F6rhfNUPcKKErBQMSjphsy74Po%3D&t=4d5b047...",
          "verified": false
        },
        "title": null,
        "text": "Noah's Ark - did the legendary vessel really survive the Great Flood, and where is it today??? Noah's Ark, Great Flood, Ancient Mysteries, Mount Ararat, Biblical History, Archaeological Discoveries, Unsolved Mysteries #NoahsArk #GreatFlood...",
        "published_at": "2026-10-16T17:28:54Z",
        "duration_seconds": 10.0,
        "language": "en",
        "hashtags": [
          "noahsark",
          "greatflood",
          "ancienthistory"
        ],
        "mentions": null,
        "stats": {
          "views": 24000000,
          "likes": 1800000,
          "comments": 42200,
          "shares": 91300,
          "saves": 126147,
          "dislikes": null
        },
        "media": {
          "thumbnail_url": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oQBSISw21Eq1CYi9XAairHeiIiBBtWAuCAPat9~tplv-tiktokx-origin.image?dr=9636&x-expires=1793498400&x-signature=ijG5vSU7TsbDq1%2F4R78A%2ByFiDJI%3D&t=4d5b0474&ps=13740610&shp=81f88b70...",
          "video_url": "https://video-ttp2-bp.us.tiktok.com/e165591be397843d1478b88c828c51f5/6ae6a142/kmoat/mps/logo/v2/r/p/v15044gf0000db95s27og65tmvcas1o0/b12fdccdc8734fc1b9a7e444d38e590c/fbe785663713918b2a1e93cd16166fd3/mp4/main.mp4?a=1988&bti=ODszNWYuMDE6&&bt=...",
          "audio_url": null,
          "image_urls": null,
          "width": 576,
          "height": 1024
        },
        "song": {
          "id": "7265056503707044614",
          "title": "الصوت الأصلي",
          "artist": "حسين مالك |🇮🇶",
          "url": "https://www.tiktok.com/music/%D8%A7%D9%84%D8%B5%D9%88%D8%AA-%D8%A7%D9%84%D8%A3%D8%B5%D9%84%D9%8A-7265056503707044614"
        },
        "location": null,
        "is_pinned": null,
        "is_sponsored": false,
        "extra": {
          "ai_label_shown": true,
          "author_followers": 118800,
          "category_type": 120,
          "comments_disabled": false,
          "duet_enabled": true,
          "is_private": false,
          "music_is_original": true,
          "reposts": 0,
          "stitch_enabled": true,
          "video_definition": "540p"
        }
      }
    ],
    "cursor": "c16",
    "has_more": true,
    "parent": null
  },
  "cursor": "c16",
  "has_more": true
}

Response#

A list of Post objects in data.items, with data.cursor and data.has_more.

See Data models for every field. The envelope around data is described in Responses.

Errors#

Failures are free: credits_charged is 0. Branch on error.code, never on the message.

CodeHTTPRetryMeaning
invalid_params400noA parameter is missing, unknown or has the wrong type.
not_found404noThe platform says this profile, post or item does not exist.

Every request can also fail with the account and platform errors listed on the Errors page.