TikTok API endpoint

Retrieve the TikTok explore feed for a category

Returns explore videos for a TikTok category id from the category endpoint.

GETapiKey8 credits/requesttiktok.exploreResponseDoc/tiktok/explore/{id}

Parameters

NameInTypeRequiredEnumExampleDescription
x-api-keyheaderstringYesAPI key required
idpathintegerYesCategory type id returned by the category endpoint

Authentication

Send your scraping API key in the x-api-key header. Use the console API Keys page to rotate or select the active key.

Billing

Endpoint usage is metered in credits. The plan prices, included credits, limits, and overage rates below match the active backend billing configuration.

Credit cost
8 credits/request
Charged response
Successful 2xx responses
PlanPriceIncluded creditsDaily capRate limitOverage
Free$0/mo2,000500 daily credits5/minNo overage
Starter$9/mo20,0005,000 daily credits15/min$0.75/1,000 overage credits when enabled
Growth$29/mo100,00025,000 daily credits45/min$0.45/1,000 overage credits when enabled
Pro$79/mo400,000No daily cap120/min$0.30/1,000 overage credits
Business$199/mo1,200,000No daily cap300/min$0.20/1,000 overage credits
Enterprise$499/mo5,000,000No daily cap1,000/min$0.12/1,000 overage credits

Response behavior

- A successful response contains a non-empty `data.itemList`. - If TikTok returns status success with an empty or null `itemList`, the service retries through the signer browser fallback and then returns an upstream error if the fallback is also empty. Maintenance notes: see `docs/tiktok-maintenance.md`. Example response: ```json { "code": 200, "msg": "OK", "data": { "cursor": "0", "extra": { "fatal_item_ids": [], "logid": "20241211134820CAEF8E035EA9CA040BA5", "now": 1733924900000 }, "hasMore": true, "itemList": [ { "AIGCDescription": "", "CategoryType": 103, "anchors": [ { "description": "Effects", "extraInfo": { "subtype": "" }, "icon": { "urlList": [ "https://p16-sg.tiktokcdn.com/obj/tiktok-obj/capcut_logo_64px_bk.png?shp=81f88b70&shcp=-" ] }, "id": "334772380", "keyword": "Number Fit v14", "schema": "https://www.capcut.com/editor?scenario=tiktok&utm_source=tiktok_anchor_tool&utm_medium=tiktok_anchor&utm_campaign=71351105" } ], "author": { "avatarLarger": "https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/80f67be06bb65c4c0caed1a981ad5dda~c5_1080x1080.jpeg?lk3s=a5d48078&non...", "avatarMedium": "https://p16-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/80f67be06bb65c4c0caed1a981ad5dda~c5_720x720.jpeg?lk3s=a5d48078&nonce...", "avatarThumb": "https://p16-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/80f67be06bb65c4c0caed1a981ad5dda~c5_100x100.jpeg?lk3s=a5d48078&nonce...", "commentSetting": 0, "downloadSetting": 0, "duetSetting": 0 }, "authorStats": { "diggCount": 1292, "followerCount": 73700, "followingCount": 53, "friendCount": 0, "heart": 8400000, "heartCount": 8400000 }, "backendSourceEventTracking": "" } ], "log_pb": { "impr_id": "20241211134820CAEF8E035EA9CA040BA5" }, "statusCode": 0 } } ```

Catalog quality warnings

  • missing example for required path param: id

Failure responses

StatusDescriptionSchema
400Invalid input#/definitions/app.Response
429Rate limit exceeded#/definitions/app.Response
500Internal server error#/definitions/app.Response

Example response

{
  "code": 200,
  "msg": "OK",
  "data": {
    "cursor": "0",
    "extra": {
      "fatal_item_ids": [],
      "logid": "20241211134820CAEF8E035EA9CA040BA5",
      "now": 1733924900000
    },
    "hasMore": true,
    "itemList": [
      {
        "AIGCDescription": "",
        "CategoryType": 103,
        "anchors": [
          {
            "description": "Effects",
            "extraInfo": {
              "subtype": ""
            },
            "icon": {
              "urlList": [
                "https://p16-sg.tiktokcdn.com/obj/tiktok-obj/capcut_logo_64px_bk.png?shp=81f88b70&shcp=-"
              ]
            },
            "id": "334772380",
            "keyword": "Number Fit v14",
            "schema": "https://www.capcut.com/editor?scenario=tiktok&utm_source=tiktok_anchor_tool&utm_medium=tiktok_anchor&utm_campaign=71351105"
          }
        ],
        "author": {
          "avatarLarger": "https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/80f67be06bb65c4c0caed1a981ad5dda~c5_1080x1080.jpeg?lk3s=a5d48078&non...",
          "avatarMedium": "https://p16-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/80f67be06bb65c4c0caed1a981ad5dda~c5_720x720.jpeg?lk3s=a5d48078&nonce...",
          "avatarThumb": "https://p16-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/80f67be06bb65c4c0caed1a981ad5dda~c5_100x100.jpeg?lk3s=a5d48078&nonce...",
          "commentSetting": 0,
          "downloadSetting": 0,
          "duetSetting": 0
        },
        "authorStats": {
          "diggCount": 1292,
          "followerCount": 73700,
          "followingCount": 53,
          "friendCount": 0,
          "heart": 8400000,
          "heartCount": 8400000
        },
        "backendSourceEventTracking": ""
      }
    ],
    "log_pb": {
      "impr_id": "20241211134820CAEF8E035EA9CA040BA5"
    },
    "statusCode": 0
  }
}

Request schema

No body schema

Response schema

#/definitions/tiktok.exploreResponseDoc

FieldTypeRequiredEnumBoundsExampleDescription
codeintegerNo200
datatiktok.ExploreRespNo
data.cursorstringNo
data.extraobjectNo
data.extra.fatal_item_idsarrayNo
data.extra.logidstringNo
data.extra.nowintegerNo
data.hasMorebooleanNo
data.itemListarrayNo
data.log_pbobjectNo
data.log_pb.impr_idstringNo
data.statusCodeintegerNo
data.status_codeintegerNo
data.status_msgstringNo
msgstringNoOK

Example request

curl -X GET "https://api.crawlora.net/api/v1/tiktok/explore/user-1" -H "x-api-key: <api-key>"

TypeScript fetch

const url = new URL("https://api.crawlora.net/api/v1/tiktok/explore/user-1");
const headers = new Headers();
headers.set("x-api-key", "<api-key>");
const response = await fetch(url, {
  method: "GET",
  headers,
});
const payload = await response.json();