Belgeler
Ctrl+K Arama Alt+[Alt+] Kılavuzlar
API anahtarını al

API

TikTok Shop API — filtreler ve sorgu parametreleri

İçin /api/v1/tiktok-shop/* with an API key (or the same path shapes under session /api/tiktok-shop/...). Route list: API kılavuzu.

Parametreler nasıl gönderilir

Mekanizma Ayrıntılar
Sorgu dizesi Usual for GET
JSON Gönder Merged with query on explore/count (avoids 414)
POST Formu Also merged
Empty / "tanımlanmamış" Stripped

Explore endpoints

Normal explore proxies the upstream TikTok Shop v2 payload and WinningHunter injects:

  • credits_remaining — TikTok Shop daily search quota (not programmatic API credits). On Standard this is null ile credits_unlimited: true (never -1).
  • credits_unlimitedtrue when the TikTok Shop daily search pool is unlimited
  • winninghunter_product_url / tiktok_shop_product_url on product rows (and product-bearing video rows) — both are WinningHunter app deep links today (same host pattern)
  • winninghunter_shop_url / tiktok_shop_url on shop rows (and shop-bearing rows) — same WH deep-link pattern
  • Country codes are normalized to uppercase (BizABD) on explore/count

meta often accompanies veriler. başarı / pagination appear only when the upstream response includes them (or on favorites explore paths). Do not assume creator/video-specific winninghunter_*_url keys — those are not injected today.

AL/api/v1/tiktok-shop/products/explore

List / search TikTok Shop products. Also accepts POST with the same params as JSON.

Send X-API-Anahtarı on every request.

Query parameters

  • ülkedize
    Default: ABD
  • dönemdize

    e.g. 7d, 30d, 90d, or day count.

    Default: 30
  • sınırtamsayı
    Default: 20
  • sayfatamsayı
    Default: 1
  • sıralamadize
    Default: gelir
  • siparişdize
    Default: açıklama
  • addize

    Keyword.

  • minimum gelirnumber
  • maksimum gelirnumber
  • sonradize

    Keyset cursor for deep pagination.

Talep
curl -sS \
  -H "X-API-Key: $WH_API_KEY" \
  "{origin}/api/v1/tiktok-shop/products/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string&min_revenue=0&max_revenue=0&after=string"
const res = await fetch(`${ORIGIN}/api/v1/tiktok-shop/products/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string&min_revenue=0&max_revenue=0&after=string`, {
  method: 'GET',
  headers: {
    'X-API-Key': process.env.WH_API_KEY,
  },
});
const data = await res.json();
import os, requests

res = requests.get(
    f"{ORIGIN}/api/v1/tiktok-shop/products/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string&min_revenue=0&max_revenue=0&after=string",
    headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json()
Yanıt
{
    "data": [
        {
            "id": "1729448464509734958",
            "product_title": "Toplux Magnesium Complex 8 Essential Magnesium Supplement",
            "product_image": "https://media.winninghunter.com/tiktok-shop/products/1729448464509734958_0.webp",
            "unit_price": "$14.97",
            "revenue": "$2.57m",
            "revenue_lifetime": 29785853.91,
            "sold_count": "161803",
            "sold_count_lifetime": 1989703,
            "creator_num": 16,
            "ctr": "4.1%",
            "sales_growth_rate": "-8.5%",
            "launch_date": "2026-02-26",
            "winninghunter_product_url": "https://app.winninghunter.com/tiktok-shop/product/1729448464509734958?period=30",
            "tiktok_shop_product_url": "https://app.winninghunter.com/tiktok-shop/product/1729448464509734958?period=30"
        }
    ],
    "meta": {
        "total": 245019,
        "page": 1,
        "limit": 20,
        "period": "30d",
        "next_cursor": "eyJ2IjoyNTc0Mzk0LjkxLCJpZCI6IjY5OWZmZDg3NmEzOGVlMGQzZmVhZDZiYyJ9"
    },
    "credits_remaining": null,
    "credits_unlimited": true
}
{
    "success": false,
    "error": "Unauthorized"
}
{
    "success": false,
    "error": "No API credits remaining. Buy an add-on pack or wait until next monthly reset.",
    "credits": {
        "used": 20000,
        "limit": 20000,
        "remaining": 0,
        "addon_remaining": 0,
        "total_remaining": 0
    },
    "purchase": {
        "url": "https://…/checkout-api-credits?credits=…"
    }
}

Row objects include many more upstream fields (gelir_eğilimi, category ids, commission, …). credits_remaining is the TikTok Shop daily search quota — null + credits_unlimited: true means unlimited (Standard). Basic plans see a non-negative integer and credits_unlimited: false. This is değil GET /api/v1/credits. meta.next_cursor is the keyset cursor for sonra.

AL/api/v1/tiktok-shop/shops/explore

List / search TikTok shops. Also accepts POST JSON.

Send X-API-Anahtarı on every request.

Query parameters

  • ülkedize
    Default: ABD
  • dönemdize
    Default: 30
  • sınırtamsayı
    Default: 20
  • sayfatamsayı
    Default: 1
  • sıralamadize
    Default: gelir
  • siparişdize
    Default: açıklama
  • addize
Talep
curl -sS \
  -H "X-API-Key: $WH_API_KEY" \
  "{origin}/api/v1/tiktok-shop/shops/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string"
const res = await fetch(`${ORIGIN}/api/v1/tiktok-shop/shops/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string`, {
  method: 'GET',
  headers: {
    'X-API-Key': process.env.WH_API_KEY,
  },
});
const data = await res.json();
import os, requests

res = requests.get(
    f"{ORIGIN}/api/v1/tiktok-shop/shops/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string",
    headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json()
Yanıt
{
    "data": [
        {
            "id": "7495514739648989419",
            "shop_id": "7495514739648989419",
            "shop_name": "medicube US Store",
            "handle": "medicubeusstore",
            "shop_image": "https://media.winninghunter.com/tiktok-shop/shops/7495514739648989419.png",
            "seller_type": "BRAND",
            "product_count": 128,
            "video_count": 2298,
            "creator_count": 1235,
            "revenue_30_days": 19625456.71,
            "sold_count_30_days": 703153,
            "winninghunter_shop_url": "https://app.winninghunter.com/tiktok-shop/shop/7495514739648989419?period=30",
            "tiktok_shop_url": "https://app.winninghunter.com/tiktok-shop/shop/7495514739648989419?period=30"
        }
    ],
    "meta": {
        "total": 15494,
        "page": 1,
        "limit": 20,
        "period": "30d",
        "next_cursor": "eyJ2IjoxOTYyNTQ1Ni43MDk5OTk5OTMsImlkIjoiNjk5YWZlZjk4ZGUxMjI2NjUxYmFmODhjIn0"
    },
    "credits_remaining": null,
    "credits_unlimited": true
}
{
    "success": false,
    "error": "Unauthorized"
}
{
    "success": false,
    "error": "No API credits remaining. Buy an add-on pack or wait until next monthly reset.",
    "credits": {
        "used": 20000,
        "limit": 20000,
        "remaining": 0,
        "addon_remaining": 0,
        "total_remaining": 0
    },
    "purchase": {
        "url": "https://…/checkout-api-credits?credits=…"
    }
}
AL/api/v1/tiktok-shop/creators/explore

List / search TikTok creators. Also accepts POST JSON.

Send X-API-Anahtarı on every request.

Query parameters

  • ülkedize
    Default: ABD
  • dönemdize
    Default: 30
  • sınırtamsayı
    Default: 20
  • sayfatamsayı
    Default: 1
  • sıralamadize
    Default: gelir
  • siparişdize
    Default: açıklama
  • addize
Talep
curl -sS \
  -H "X-API-Key: $WH_API_KEY" \
  "{origin}/api/v1/tiktok-shop/creators/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string"
const res = await fetch(`${ORIGIN}/api/v1/tiktok-shop/creators/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string`, {
  method: 'GET',
  headers: {
    'X-API-Key': process.env.WH_API_KEY,
  },
});
const data = await res.json();
import os, requests

res = requests.get(
    f"{ORIGIN}/api/v1/tiktok-shop/creators/explore?country=US&period=30&limit=20&page=1&sort=revenue&order=desc&name=string",
    headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json()
Yanıt
{
    "data": [
        {
            "creator_id": "6737412251941389318",
            "creator_name": "Hannah Bentley",
            "nickname": "Hannah Bentley",
            "unique_id": "hannahbentley",
            "video_count": 172,
            "revenue_30_days": 890752.76,
            "revenue_7_days": 198025.52
        }
    ],
    "meta": {
        "total": 50000,
        "page": 1,
        "limit": 20,
        "period": "30d",
        "next_cursor": "eyJ2Ijo4OTA3NTIuNzYxODQ5NjI2MiwiaWQiOiI2OTlhZmVmODhkZTEyMjY2NTFiYWYzZmQifQ"
    },
    "credits_remaining": null,
    "credits_unlimited": true
}
{
    "success": false,
    "error": "Unauthorized"
}
{
    "success": false,
    "error": "No API credits remaining. Buy an add-on pack or wait until next monthly reset.",
    "credits": {
        "used": 20000,
        "limit": 20000,
        "remaining": 0,
        "addon_remaining": 0,
        "total_remaining": 0
    },
    "purchase": {
        "url": "https://…/checkout-api-credits?credits=…"
    }
}

Also: kategoriler/keşfet, videolar/keşfet, and matching */count routes. Explore rows are upstream passthrough plus the WinningHunter URL injections listed above — many more keys appear on live rows than the samples. Handler soft-errors often look like { "error": "code", "message": "…" } (hayır başarı). Count routes do değil always include credits_remaining.

credits_remaining in explore 200 bodies is the TikTok Shop daily search quota (same family as GET /api/v1/tiktok-shop/credits). Unlimited accounts return credits_remaining: null ve credits_unlimited: true (the DB sentinel -1 is never returned). It is değil the programmatic monthly pool from GET /api/v1/credits. Every call still costs 1 programmatic credit via the proxy.

Shared explore params

Parametre Varsayılan Notlar
sayfa 1 Integer page
sınır 20 Page size
sonra Keyset cursor
sıralama / sipariş entity default / açıklama Align with dashboard UI
ülke ABD
dönem ~30 days 7d / 30d / 90d or numeric days
kategori_kimlikleri, kategori_l1_id, … When hierarchy applies

Entity filters (canonical names)

Ürünlerad, dönem, kategori_kimlikleri, minimum gelir / maksimum gelir, growth rates, satılan ürün sayısı / satılan ürün sayısı, price / commission / score / review / creator / launch filters. Alias: satılan en azsatılan ürün sayısı.

Mağazalarad, dönem, revenue / growth, rating, seller type, product / creator / video counts, channel strategy %. Aliases: 30 günlük minimum GMVminimum gelirvb.

Yaratıcılarad, dönem, revenue / growth, followers / views, verified, product / video counts.

Videolarad, dönem, revenue / engagement / ROAS / ad spend / publish / flags (is_ad, is_affiliate, …).

Kategorilerseviye, ad, dönem, revenue / shop / video ratios. Default sort: gelir_kaynağı.

Other useful GETs

Yol Notlar
GET .../products sayfa, sınır, sıralama, başlangıç tarihi / bitiş tarihi, …
GET .../search q required
GET .../trending sınır, zaman aralığı, kategori
GET .../suggestions tür + q required
GET .../credits { "success": true, "credits_remaining": null, "credits_unlimited": true } on Standard (or a positive credits_remaining on Basic) — TikTok search credits, not programmatic
GET .../shops/details id required

Detail POST bodies (ürün-detayı, ürün-detayı, …): capture from the dashboard Network tab, replay on /api/v1/tiktok-shop/... with your key. Aggregate /total ve /history routes are upstream passthrough — do not assume flat invented field names like avg_price ya da conversion_rate.

MCP

Explore tools (tiktok_ürünlerini_ara, tiktok_shops_arama, tiktok_yaratıcılarını_ara, …) use the same filter semantics. See MCP araçları kılavuzu.