Rankings
The best-selling TikTok Shop products, shops, creators, videos and LIVEs in any of 17 markets, ranked by revenue, units or growth.
Top-selling TikTok Shop products
Shop AnalyticsProducts ranked by estimated sales over a date range: revenue, units, video/LIVE/showcase split, growth, price, commission, creators, launch date, daily trend. keyword = words in product titles; category = a category name or id (levels 1-3, several allowed; no keyword needed); both together narrow further. With neither, the result is the top 10 products for the most recent days (about 6). Up to 100 rows per page with cursor paging, about 700 rows per keyword (max_rows up to 3,000 in the US). sort: revenue, units, price, growth or creators; order=asc lists lowest first. Filters: revenue, units, growth, price, commission, creators, launch date, channel, rating, seller type, shipping. region picks the market (default US). Shopper's live view: shop_browse. Examples: {"category":"Skincare","launched_within_days":"30"}, {"keyword":"lip oil","region":"DE","sort":"units"}.
/v1/products/topProducts ranked by sales
Parameters
- keywordstring
Words from product titles, e.g. 'vitamin c serum' or 'lip oil'. Ranks every matching product over your window. If keyword and category are both omitted, the result is the top 10 products for the most recent days (about 6), whatever window is set: pass a keyword or category when the user wants more than 10 rows or a specific window.
- limitinteger
Results per page. Max 100 per page; pass next as cursor for the following page. Up to about 700 rows per keyword (
max_rowsscans up to 3,000 in the US). Without a keyword or category: 10 rows. Values above a method's maximum are lowered and reported in notes.
23 more optional parameters
- affiliatestring
Filter. PUBLIC_PLAN = open affiliate plan; NON_AFFILIATE = not open to affiliates.
One of
PUBLIC_PLANNON_AFFILIATE - categoryarray of string
Narrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: "Skincare", "Pet Supplies", "Beauty & Personal Care","Health" or "601450". Without a keyword the products of the category are found by merging several generic keyword searches (the source needs a keyword), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with
category_trendsmethod=tree. - commissionstring
Filter. Affiliate commission percent, e.g. 15-35.
- creator_conversionstring
Filter. Percent of creators who made a sale, e.g. >45.
- creatorsstring
Filter. Number of creators selling it, e.g. 10-50.
- cursorstring
Paging: pass the next value from the previous response unchanged. Omit on the first page.
- detailstring
compact (default) returns the useful fields; full adds the raw upstream payload (large).
Default
compactOne ofcompactfull - endstring
Shop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
- launched_within_daysstring
Filter. Only products launched in the last N days.
One of
3730180365 - max_rowsinteger
Scan up to this many matching products (101-3000) before sorting, to go past the 700-row cap; the top limit rows are returned. Needs keyword; US market only; not with category.
- orderstring
desc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword or category.
One of
descasc - pricestring
Filter. Average selling price in the market's currency, e.g. <20 or 20-100.
- ratingstring
Filter. Product rating, e.g. >4.5.
- regionstring
Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See
shop_regions. - revenuestring
Filter. Revenue in the market's currency over the window: a-b, <a or >b, e.g. 1000-10000.
- revenue_growthstring
Filter. Revenue growth vs the previous equal window, percent, e.g. >30.
- sales_channelstring
Filter. Where the revenue came from: VIDEO, LIVE or SHOWCASE (shop tab and search). Several: comma separated, e.g. VIDEO,LIVE. Values: VIDEO, LIVE, SHOWCASE.
- seller_typestring
Filter. Who sold it: the seller's own accounts, independent affiliates, or the Shop mall.
One of
BELONGED_TO_SELLERINDEPENDENTSHOPPING_MALL - shippingstring
Filter. local = ships from warehouses in the market; global = cross-border.
One of
localglobal - sortstring
Ranking metric: creators, growth, price, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword or category.
One of
creatorsgrowthpricerevenueunits - startstring
Shop Analytics methods: custom range start, YYYY-MM-DD.
- unitsstring
Filter. Units sold over the window, e.g. 500-5000 or >10000.
- windowstring
Shop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
One of
7d30d90d180d365d
Use it in Claude or ChatGPT
Connect https://mcp.tokconnect.com/mcp and your AI calls this as the product_top_selling tool. Same data, same credit. MCP setup
{
"tool": "product_top_selling",
"arguments": {
"keyword": "lip oil",
"limit": 3
}
}Request
curl "https://api.tokconnect.com/v1/products/top?keyword=lip%20oil&limit=3" \
-H "X-API-Key: $TOKCONNECT_API_KEY"import os
import requests
r = requests.get(
"https://api.tokconnect.com/v1/products/top",
params={
"keyword": "lip oil",
"limit": 3,
},
headers={"X-API-Key": os.environ["TOKCONNECT_API_KEY"]},
timeout=100,
)
r.raise_for_status()
body = r.json()
print(body["data"])const params = new URLSearchParams({
keyword: "lip oil",
limit: "3",
});
const res = await fetch(`https://api.tokconnect.com/v1/products/top?${params}`, {
headers: { "X-API-Key": process.env.TOKCONNECT_API_KEY },
});
if (!res.ok) throw new Error((await res.json()).error?.message);
const { data, next_cursor } = await res.json();Response
{
"data": {
"count": 3,
"currency": "USD",
"dataEnd": "2026-10-28",
"hasMore": true,
"items": [
{
"commission_rate": "13%",
"creator_conversion_ratio": 0.47589952477936187,
"creator_num": 1473,
"delivery_type": "local",
"id": "1731896769144001226",
"is_full_service": 0,
"is_overseas": 0,
"is_tokopedia": 0,
"launch_date": "2025-10-18",
"live_revenue": "$5.19k",
"max_real_price": "$13.92",
"min_real_price": "$13.92",
"pri_cate_id": 601450,
"product_rating": 4.4,
"product_title": "Hydrating Lip Gloss - High Shine & Tinted, Infused with Hyaluronic Acid, Jojoba Oil & Shea Butter",
"revenue": "$285.28k",
"revenue_grouping_rate": "16.2%",
"revenue_trend": [
4760,
0,
0
],
"sale": 35660,
"sec_cate_id": 848648,
"shipping_fee": "$0.00",
"showcase_revenue": "$112.00",
"ter_cate_id": 601534,
"total": 407,
"unit_price": "$8.00",
"video_revenue": "$279.98k"
},
{
"commission_rate": "15%",
"creator_conversion_ratio": 0.47819767441860467,
"creator_num": 688,
"delivery_type": "local",
"id": "1732111846411833635",
"is_full_service": 0,
"is_overseas": 0,
"is_tokopedia": 0,
"launch_date": "2025-12-02",
"live_revenue": "$2.72k",
"max_real_price": "$14.00",
"min_real_price": "$14.00",
"pri_cate_id": 601450,
"product_rating": 4.6,
"product_title": "e.l.f. Glow Reviver Lip Oil Stick, Nourishing Lip Oil Stick Infused with Squalane Shea Butter & Jojoba Oil for Buildable Color & Soft Shine 3.3mL",
"revenue": "$177.48k",
"revenue_grouping_rate": "25.6%",
"revenue_trend": [
2700,
5480,
8200
],
"sale": 17748,
"sec_cate_id": 848648,
"shipping_fee": "$0.00",
"showcase_revenue": "$30.00",
"ter_cate_id": 601534,
"total": 407,
"unit_price": "$10.00",
"video_revenue": "$174.73k"
},
{
"commission_rate": "13%",
"creator_conversion_ratio": 0.4717948717948718,
"creator_num": 780,
"delivery_type": "local",
"id": "1729440860171702516",
"is_full_service": 0,
"is_overseas": 0,
"is_tokopedia": 0,
"launch_date": "2024-04-10",
"live_revenue": "$17.58k",
"max_real_price": "$19.50",
"min_real_price": "$15.00",
"pri_cate_id": 601450,
"product_rating": 4.2,
"product_title": "Nooni Korean Apple Lip Oil + Lip Stain | Glossy Lip Stain, Tinting & Long Lasting, Moisturizing Lip Care (17 options) Hydrate Lipgloss Lipstick Makeup Glossy Hydrating Moisturizer Plump Transfer-proof",
"revenue": "$169.86k",
"revenue_grouping_rate": "-3.2%",
"revenue_trend": [
3795,
4365,
5115
],
"sale": 11324,
"sec_cate_id": 848648,
"shipping_fee": "$0.00",
"showcase_revenue": "$330.00",
"ter_cate_id": 601534,
"total": 407,
"unit_price": "$15.00",
"video_revenue": "$151.95k"
}
],
"keyword": "lip oil",
"market": "US",
"next": "eyJwYWdlIjoyLCJzaXplIjozfQ",
"notes": [
"Market US (United States): amounts are in USD."
],
"see_also": "Pass a row's id to product: method=trend (daily), creators (who sells it), video_sales, page (live price and stock).",
"sortedBy": "revenue",
"source": "TokConnect Shop Analytics (TikTok Shop US). Revenue and units are estimates: units track TikTok's sold counter; revenue is units times listed price.",
"totalMatched": 407,
"window": {
"days": 30,
"end": "2026-10-28",
"start": "2026-09-29"
}
},
…Response fields
dataobjectThe tool's result. Compact by default; passdetail=fullfor the complete record.data.countintegerdata.currencystringdata.dataEndstringdata.hasMorebooleandata.itemsarraydata.items[].commission_ratestringdata.items[].creator_conversion_rationumberdata.items[].creator_numintegerdata.items[].delivery_typestringdata.items[].idstringdata.items[].is_full_serviceintegerdata.items[].is_overseasintegerdata.items[].is_tokopediaintegerdata.items[].launch_datestringdata.items[].live_revenuestringdata.items[].max_real_pricestringdata.items[].min_real_pricestringdata.items[].pri_cate_idintegerdata.items[].product_ratingnumberdata.items[].product_titlestringdata.items[].revenuestringdata.items[].revenue_grouping_ratestringdata.items[].revenue_trendarraydata.items[].saleintegerdata.items[].sec_cate_idintegerdata.items[].shipping_feestringdata.items[].showcase_revenuestringdata.items[].ter_cate_idintegerdata.items[].totalintegerdata.items[].unit_pricestringdata.items[].video_revenuestringdata.keywordstringdata.marketstringdata.nextstringdata.notesarraydata.see_alsostringdata.sortedBystringdata.sourcestringdata.totalMatchedintegerdata.windowobjectdata.window.daysintegerdata.window.endstringdata.window.startstringmetaobjectmeta.credits_chargedinteger1 on success.meta.credits_remainingintegerCredits left this period, when known.meta.request_idstringQuote it to support.next_cursorstringPresent when there is another page: pass it back as cursor.
Errors
400401402403404429502503
Try it Live call, 1 credit
Top-selling TikTok Shop sellers
Shop AnalyticsTikTok Shop sellers ranked by estimated sales over a date range: revenue, units, growth, average price, and revenue split across own accounts, affiliates and the mall. keyword = a shop or brand name, matched loosely, e.g. 'medicube'; not a product type. For the shops behind a product type or category, rank products with product_top_selling, then product method=page on the top items gives their sellerId. Without a keyword: the top 10 shops for the most recent days (about 6). type=brands lists the top 10 brands. No category scope for shops. Up to 100 rows per page with cursor paging, about 500 rows per keyword. sort: revenue, units or growth; order=asc lists lowest first. Filters: revenue, growth, price, revenue source, seller type. region picks the market (default US). Examples: {"keyword":"medicube","window":"90d"}, {"type":"brands","region":"GB"}.
/v1/shops/topShops ranked by sales
Parameters
- keywordstring
A shop or brand NAME, matched loosely against shop names, e.g. 'medicube'. It does not match product types: 'skincare' finds shops with that word in their name. For the shops behind a product type or category, rank products with
product_top_selling(category or a product keyword), callproductmethod=pageon the top items for their sellerId, then use shop or call this tool with the brand names found. If keyword is omitted, the result is the top 10 shops for the most recent days (about 6), whatever window is set: pass a shop or brand name when the user wants more than 10 rows or a specific window. - limitinteger
Results per page. Max 100 per page; pass next as cursor for the following page. Up to about 500 rows per keyword. Without a keyword: 10 rows. Values above a method's maximum are lowered and reported in notes.
14 more optional parameters
- cursorstring
Paging: pass the next value from the previous response unchanged. Omit on the first page.
- detailstring
compact (default) returns the useful fields; full adds the raw upstream payload (large).
Default
compactOne ofcompactfull - endstring
Shop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
- orderstring
desc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword.
One of
descasc - pricestring
Filter. Average selling price in the market's currency, e.g. 20-100.
- regionstring
Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See
shop_regions. - revenuestring
Filter. Shop revenue in the market's currency over the window, e.g. >100000.
- revenue_growthstring
Filter. Revenue growth percent vs the previous window, e.g. >30.
- revenue_sourcestring
Filter. Main revenue source: own accounts, affiliates, or the mall.
One of
SELF_ACCOUNTSAFFILIATESHOPPING_MALL - seller_typestring
Filter. BRAND or RETAILER.
One of
BRANDRETAILER - sortstring
Ranking metric: growth, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword.
One of
growthrevenueunits - startstring
Shop Analytics methods: custom range start, YYYY-MM-DD.
- typestring
shops (default) or brands (the top 10 brands for the most recent days; keyword, filters and sort do not apply).
One of
shopsbrands - windowstring
Shop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
One of
7d30d90d180d365d
Use it in Claude or ChatGPT
Connect https://mcp.tokconnect.com/mcp and your AI calls this as the shop_top_selling tool. Same data, same credit. MCP setup
{
"tool": "shop_top_selling",
"arguments": {
"keyword": "lip oil",
"limit": 3
}
}Request
curl "https://api.tokconnect.com/v1/shops/top?keyword=lip%20oil&limit=3" \
-H "X-API-Key: $TOKCONNECT_API_KEY"import os
import requests
r = requests.get(
"https://api.tokconnect.com/v1/shops/top",
params={
"keyword": "lip oil",
"limit": 3,
},
headers={"X-API-Key": os.environ["TOKCONNECT_API_KEY"]},
timeout=100,
)
r.raise_for_status()
body = r.json()
print(body["data"])const params = new URLSearchParams({
keyword: "lip oil",
limit: "3",
});
const res = await fetch(`https://api.tokconnect.com/v1/shops/top?${params}`, {
headers: { "X-API-Key": process.env.TOKCONNECT_API_KEY },
});
if (!res.ok) throw new Error((await res.json()).error?.message);
const { data, next_cursor } = await res.json();Response
{
"data": {
"count": 3,
"currency": "USD",
"dataEnd": "2026-10-28",
"hasMore": true,
"items": [
{
"affiliate_revenue": "$192.14k",
"id": "7495499730147969966",
"is_full_service": 0,
"live_revenue": "$38.81k",
"main_category": "{\"pri_main_category\":[\"601450\"],\"sec_main_category\":[\"601450-856208\"],\"ter_main_category\":[\"601450-856208-856080\"]}",
"name": "Eternal Perfume Oils",
"region": "US",
"revenue": "$225.43k",
"revenue_grouping_rate": "7.3%",
"revenue_trend": [
6719.6,
6453.8,
5580.2
],
"sale": 4036,
"self_promotion_revenue": "$626.06",
"seller_type": "BRAND",
"shopping_mall_revenue": "$32.66k",
"showcase_revenue": "$39.67k",
"total": 500,
"unit_price": "$55.85",
"video_revenue": "$146.95k"
},
{
"affiliate_revenue": "$32.13k",
"id": "7495638404827024204",
"is_full_service": 0,
"live_revenue": "$13.74k",
"main_category": "{\"pri_main_category\":[\"601450\"],\"sec_main_category\":[\"601450-848648\"],\"ter_main_category\":[\"601450-848648-601534\"]}",
"name": "The Lip Bar",
"region": "US",
"revenue": "$45.24k",
"revenue_grouping_rate": "-18.3%",
"revenue_trend": [
690,
1138,
1264
],
"sale": 2784,
"self_promotion_revenue": "$8.10k",
"seller_type": "BRAND",
"shopping_mall_revenue": "$5.02k",
"showcase_revenue": "$7.76k",
"total": 500,
"unit_price": "$16.25",
"video_revenue": "$23.73k"
},
{
"affiliate_revenue": "$13.63k",
"id": "8651629413806347145",
"is_full_service": 1,
"live_revenue": "$2.46k",
"main_category": "{\"pri_main_category\":[\"601152\"],\"sec_main_category\":[\"601152-842888\"],\"ter_main_category\":[\"601152-842888-601262\"]}",
"name": "KISSLIP",
"region": "US",
"revenue": "$40.99k",
"revenue_grouping_rate": "8.8%",
"revenue_trend": [
685.4420000000001,
828.409,
1040.042
],
"sale": 3185,
"self_promotion_revenue": "$1.88k",
"seller_type": "RETAILER",
"shopping_mall_revenue": "$25.48k",
"showcase_revenue": "$34.26k",
"total": 500,
"unit_price": "$12.87",
"video_revenue": "$4.27k"
}
],
"keyword": "lip oil",
"market": "US",
"next": "eyJwYWdlIjoyLCJzaXplIjozfQ",
"notes": [
"Market US (United States): amounts are in USD."
],
"see_also": "Pass a row's id (sellerId) to shop: method=sales, trend, products, creators, or store for the live storefront.",
"sortedBy": "revenue",
"source": "TokConnect Shop Analytics (TikTok Shop US). Revenue and units are estimates: units track TikTok's sold counter; revenue is units times listed price.",
"totalMatched": 500,
"window": {
"days": 30,
"end": "2026-10-28",
"start": "2026-09-29"
}
},
"meta": {
"credits_charged": 1,
"credits_remaining": 7906,
"request_id": "req_3f9c2a1b7d4e"
},
"next_cursor": "eyJwYWdlIjoyLCJzaXplIjozfQ"
}Response fields
dataobjectThe tool's result. Compact by default; passdetail=fullfor the complete record.data.countintegerdata.currencystringdata.dataEndstringdata.hasMorebooleandata.itemsarraydata.items[].affiliate_revenuestringdata.items[].idstringdata.items[].is_full_serviceintegerdata.items[].live_revenuestringdata.items[].main_categorystringdata.items[].namestringdata.items[].regionstringdata.items[].revenuestringdata.items[].revenue_grouping_ratestringdata.items[].revenue_trendarraydata.items[].saleintegerdata.items[].self_promotion_revenuestringdata.items[].seller_typestringdata.items[].shopping_mall_revenuestringdata.items[].showcase_revenuestringdata.items[].totalintegerdata.items[].unit_pricestringdata.items[].video_revenuestringdata.keywordstringdata.marketstringdata.nextstringdata.notesarraydata.see_alsostringdata.sortedBystringdata.sourcestringdata.totalMatchedintegerdata.windowobjectdata.window.daysintegerdata.window.endstringdata.window.startstringmetaobjectmeta.credits_chargedinteger1 on success.meta.credits_remainingintegerCredits left this period, when known.meta.request_idstringQuote it to support.next_cursorstringPresent when there is another page: pass it back as cursor.
Errors
400401402403404429502503
Try it Live call, 1 credit
Top-selling TikTok Shop creators
Shop AnalyticsCreators (affiliates) ranked by the sales they drove over a date range: revenue, units, followers, engagement, views, trend. keyword = words in creator names, handles and bios (not the products they sell); category = a category name or id (levels 1-3: the creators selling in it, no keyword needed); both together narrow further. With neither, the result is the top 10 creators for the most recent days (about 6). Up to 100 rows per page with cursor paging, about 700 rows per keyword. sort: revenue, units, followers or growth; order=asc lists lowest first. Filters: revenue, followers, engagement, average views, price, growth, video or LIVE, gender, language, contact channel, MCN, audience age/language. region picks the market (default US). Examples: {"category":"Pet Supplies","followers":"10000-500000","contact":"EMAIL"}, {"keyword":"beauty","window":"7d","sort":"units"}.
/v1/affiliates/topCreators ranked by sales
Parameters
- keywordstring
Matched against creator names, handles and bios (not the products they sell): 'pet' finds accounts like 'Pet Finds'. For the affiliates of a product type, pass category, or rank products with
product_top_sellingand callproductmethod=creatorson the top items. If keyword and category are both omitted, the result is the top 10 creators for the most recent days (about 6), whatever window is set: pass a keyword or category when the user wants more than 10 rows or a specific window. - limitinteger
Results per page. Max 100 per page; pass next as cursor for the following page. Up to about 700 rows per keyword. Without a keyword or category: 10 rows. Values above a method's maximum are lowered and reported in notes.
24 more optional parameters
- account_typestring
Filter. BELONGED_TO_SELLER = a brand's own account; INDEPENDENT = affiliate creator.
One of
BELONGED_TO_SELLERINDEPENDENT - audience_agestring
Filter. Main follower age band.
One of
18-2425-3435-4445-5455+ - audience_languagestring
Filter. Main follower language.
One of
en-USes-ESpt-BRfr-FRde-DEit-ITja-JPru-RU - avg_viewsstring
Filter. Average video views, e.g. >10000.
- categoryarray of string
Narrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: "Skincare", "Pet Supplies", "Beauty & Personal Care","Health" or "601450". Without a keyword the creators of the category are found by merging several generic keyword searches (the source needs a keyword), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with
category_trendsmethod=tree. - contactstring
Filter. Only creators who list this contact channel. Several: comma separated, e.g. EMAIL,INSTAGRAM. Values: EMAIL, WHATSAPP, INSTAGRAM, YOUTUBE, FACEBOOK, TWITTER.
- cursorstring
Paging: pass the next value from the previous response unchanged. Omit on the first page.
- debutstring
Filter. Days since the creator started selling: <4, <8, <31, or >30.
One of
<4<8<31>30 - detailstring
compact (default) returns the useful fields; full adds the raw upstream payload (large).
Default
compactOne ofcompactfull - endstring
Shop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
- engagementstring
Filter. Video engagement rate percent, e.g. >8.
- followersstring
Filter. Followers, e.g. 50000-500000.
- genderstring
Filter. Creator gender as the feed classifies it.
One of
FemaleMale - growingboolean
Filter. true = only creators whose revenue is growing.
- languagestring
Filter. Creator language.
One of
enesptfrzhdeit - mcnstring
Filter. Signed to an MCN (agency) or not.
One of
SIGNEDNOT_SIGNED - orderstring
desc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword or category.
One of
descasc - pricestring
Filter. Average price of what they sell, in the market's currency, e.g. <20.
- regionstring
Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See
shop_regions. - revenuestring
Filter. Revenue the creator drove in the market's currency over the window, e.g. >10000.
- revenue_sourcestring
Filter. Main revenue source: VIDEO or LIVE.
One of
VIDEOLIVE - sortstring
Ranking metric: followers, growth, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword or category.
One of
followersgrowthrevenueunits - startstring
Shop Analytics methods: custom range start, YYYY-MM-DD.
- windowstring
Shop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
One of
7d30d90d180d365d
Use it in Claude or ChatGPT
Connect https://mcp.tokconnect.com/mcp and your AI calls this as the creator_top_selling tool. Same data, same credit. MCP setup
{
"tool": "creator_top_selling",
"arguments": {
"keyword": "lip oil",
"limit": 3
}
}Request
curl "https://api.tokconnect.com/v1/affiliates/top?keyword=lip%20oil&limit=3" \
-H "X-API-Key: $TOKCONNECT_API_KEY"import os
import requests
r = requests.get(
"https://api.tokconnect.com/v1/affiliates/top",
params={
"keyword": "lip oil",
"limit": 3,
},
headers={"X-API-Key": os.environ["TOKCONNECT_API_KEY"]},
timeout=100,
)
r.raise_for_status()
body = r.json()
print(body["data"])const params = new URLSearchParams({
keyword: "lip oil",
limit: "3",
});
const res = await fetch(`https://api.tokconnect.com/v1/affiliates/top?${params}`, {
headers: { "X-API-Key": process.env.TOKCONNECT_API_KEY },
});
if (!res.ok) throw new Error((await res.json()).error?.message);
const { data, next_cursor } = await res.json();Response
{
"data": {
"count": 3,
"currency": "USD",
"dataEnd": "2026-10-28",
"hasMore": true,
"items": [
{
"creatorDebut": "2024-01-01",
"followers": "10.5k",
"handle": "denisebw75",
"id": "6805718817295614981",
"main_category": "{\"pri_main_category\":[\"601352\",\"601152\",\"600154\"],\"sec_main_category\":[\"601352-900488\",\"600154-808328\",\"601450-848648\"],\"ter_main_category\":[\"601352-900488-901000\",\"600154-808328-600157\",\"601450-848648-601555\"]}",
"new_followers": "0",
"nickname": "TikTok’s Favorite Lips 👄",
"revenue": "$15.23k",
"revenue_grouping_rate": 3.1356722740088223,
"revenue_trend": [
29,
317,
123
],
"sale": "558",
"signature": "Mom/Mimi/Woman Roofer/beauty/skincare/fashion/TTS/Pop Up LIVEHOST #TTFL 👄",
"total": 500,
"unit_price": "$27.29",
"video_engagement_rate": "1.37%",
"views": "411.13k",
"views_trend": [
5474,
7337,
9372
]
},
{
"creatorDebut": "2024-10-19",
"followers": "7.8k",
"handle": "drchristinbradley",
"id": "7397862193050485802",
"main_category": "{\"pri_main_category\":[\"601450\"],\"sec_main_category\":[\"601450-849160\",\"601450-856208\"],\"ter_main_category\":[\"601450-849160-873736\",\"601450-856208-855952\"]}",
"new_followers": "211",
"nickname": "Royal Alchemyst Body Oils",
"revenue": "$9.71k",
"revenue_grouping_rate": -0.18963460104399701,
"revenue_trend": [
952,
0,
0
],
"sale": "206",
"signature": "Squalane infused body oils💧\nJoin the ROYAL VIP LIST 👇🏾",
"total": 500,
"unit_price": "$47.14",
"video_engagement_rate": "-",
"views": "36.2k",
"views_trend": [
2614,
105,
361
]
},
{
"creatorDebut": "2021-11-06",
"followers": "12.8k",
"handle": "danina73",
"id": "6758777337975899142",
"main_category": "{\"pri_main_category\":[\"601450\",\"603014\",\"601152\"],\"sec_main_category\":[\"601450-1086856\",\"603014-834568\",\"601152-842376\"],\"ter_main_category\":[\"601450-1086856-1004680\",\"603014-834568-836104\",\"601152-842376-601276\"]}",
"new_followers": "0",
"nickname": "Oil Dlr",
"revenue": "$7.64k",
"revenue_grouping_rate": -0.19263273734158493,
"revenue_trend": [
437,
276,
323
],
"sale": "376",
"signature": "✨Short girl approved✨\n✨Leggings I’m obsessed with✨\n✨Cute | Comfy Fits✨\n✨Wellness that Works✨",
"total": 500,
"unit_price": "$20.31",
"video_engagement_rate": "0.94%",
"views": "334.08k",
"views_trend": [
30886,
14386,
25282
]
}
],
"keyword": "lip oil",
"market": "US",
"next": "eyJwYWdlIjoyLCJzaXplIjozfQ",
"notes": [
"Market US (United States): amounts are in USD."
],
"see_also": "Pass a row's id or handle to creator_commerce (sales, products, shops, audience) or creator (profile, posts).",
"sortedBy": "revenue",
"source": "TokConnect Shop Analytics (TikTok Shop US). Revenue and units are estimates: units track TikTok's sold counter; revenue is units times listed price.",
"totalMatched": 500,
"window": {
"days": 30,
"end": "2026-10-28",
"start": "2026-09-29"
}
},
"meta": {
"credits_charged": 1,
"credits_remaining": 7906,
"request_id": "req_3f9c2a1b7d4e"
},
"next_cursor": "eyJwYWdlIjoyLCJzaXplIjozfQ"
}Response fields
dataobjectThe tool's result. Compact by default; passdetail=fullfor the complete record.data.countintegerdata.currencystringdata.dataEndstringdata.hasMorebooleandata.itemsarraydata.items[].creatorDebutstringdata.items[].followersstringdata.items[].handlestringdata.items[].idstringdata.items[].main_categorystringdata.items[].new_followersstringdata.items[].nicknamestringdata.items[].revenuestringdata.items[].revenue_grouping_ratenumberdata.items[].revenue_trendarraydata.items[].salestringdata.items[].signaturestringdata.items[].totalintegerdata.items[].unit_pricestringdata.items[].video_engagement_ratestringdata.items[].viewsstringdata.items[].views_trendarraydata.keywordstringdata.marketstringdata.nextstringdata.notesarraydata.see_alsostringdata.sortedBystringdata.sourcestringdata.totalMatchedintegerdata.windowobjectdata.window.daysintegerdata.window.endstringdata.window.startstringmetaobjectmeta.credits_chargedinteger1 on success.meta.credits_remainingintegerCredits left this period, when known.meta.request_idstringQuote it to support.next_cursorstringPresent when there is another page: pass it back as cursor.
Errors
400401402403404429502503
Try it Live call, 1 credit
Top-selling TikTok Shop videos
Shop AnalyticsThe top 10 shoppable videos by estimated revenue over a date range, with revenue, units, views, GPM, ad metrics (CPA, ROAS, ad revenue share), whether it is AI-generated, and the creator. The data source applies no filters to this ranking; to study one niche, rank its products with product_top_selling, then use product method=video_sales. Pass a row's id to video method=transcript or products. Example: {"window":"7d"}.
/v1/videos/top-sellingTop videos by sales
Parameters
- detailstring
compact (default) returns the useful fields; full adds the raw upstream payload (large).
Default
compactOne ofcompactfull - endstring
Shop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
- regionstring
Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See
shop_regions. - startstring
Shop Analytics methods: custom range start, YYYY-MM-DD.
- windowstring
Shop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
One of
7d30d90d180d365d
Use it in Claude or ChatGPT
Connect https://mcp.tokconnect.com/mcp and your AI calls this as the video_top_selling tool. Same data, same credit. MCP setup
{
"tool": "video_top_selling",
"arguments": {}
}Request
curl "https://api.tokconnect.com/v1/videos/top-selling" \
-H "X-API-Key: $TOKCONNECT_API_KEY"import os
import requests
r = requests.get(
"https://api.tokconnect.com/v1/videos/top-selling",
headers={"X-API-Key": os.environ["TOKCONNECT_API_KEY"]},
timeout=100,
)
r.raise_for_status()
body = r.json()
print(body["data"])const res = await fetch("https://api.tokconnect.com/v1/videos/top-selling", {
headers: { "X-API-Key": process.env.TOKCONNECT_API_KEY },
});
if (!res.ok) throw new Error((await res.json()).error?.message);
const { data, next_cursor } = await res.json();Response
{
"data": {
"count": 10,
"currency": "USD",
"dataEnd": "2026-10-28",
"hasMore": false,
"items": [
{
"ad": 1,
"ad2Cost": "$25.73k",
"ad2Roas": 3.69,
"ad_cpa": "$82.20",
"ad_revenue_ratio": "80.00%",
"ad_view_ratio": "28.88%",
"ai_video": 0,
"collect_day": "2026-10-25",
"content_type": "video",
"creator_uid": "7408927728046933038",
"description": "I think there’s a clear winner here 😅 #vacuum #stickvacuum #petallergies #shark #sharkpowerproflex ",
"duration": "1m 35s",
"follower_count": "191.3k",
"gpm": "$51.56",
"handle": "kid.shops",
"id": "7700682843906723103",
"original_duration": 95.267,
"publish_date": "2026/10/25 15:02:39",
"revenue": "$118.63k",
"revenueDiff": 11786900,
"revenue_grouping_rate": -2.0203332575437685,
"revenue_trend": [
0,
0,
379
],
"sale": 313,
"views": "2.3m",
"views_trend": [
0,
0,
1681
]
},
{
"ad": 1,
"ad2Cost": "$23.83k",
"ad2Roas": 3.53,
"ad_cpa": "$77.61",
"ad_revenue_ratio": "72.70%",
"ad_view_ratio": "22.75%",
"ai_video": 0,
"collect_day": "2026-02-17",
"content_type": "video",
"creator_uid": "6546693901460832266",
"description": "Changed my life. ",
"duration": "2m 41s",
"follower_count": "5m",
"gpm": "$42.52",
"handle": "_jen_hamilton_",
"id": "7607862589363670285",
"original_duration": 161.767,
"publish_date": "2026/02/17 10:53:10",
"revenue": "$115.74k",
"revenueDiff": -9613500,
"revenue_grouping_rate": -1.9762080055798814,
"revenue_trend": [
84825,
16211,
4901
],
"sale": 307,
"views": "2.72m",
"views_trend": [
778386,
334822,
228177
]
},
{
"ad": 1,
"ad2Cost": "$11.08k",
"ad2Roas": 4.1,
"ad_cpa": "$1.35",
"ad_revenue_ratio": "50.33%",
"ad_view_ratio": "20.70%",
"ai_video": 0,
"collect_day": "2026-10-23",
"content_type": "multi_photo",
"creator_uid": "7569137951294620685",
"description": "",
"duration": "0m",
"follower_count": "3.19k",
"gpm": "$10.21",
"handle": "robertco.yuo",
"id": "7699847369348713742",
"original_duration": 0,
"publish_date": "2026/10/23 09:00:36",
"revenue": "$90.33k",
"revenueDiff": -4719000,
"revenue_grouping_rate": -1.9624346998710007,
"revenue_trend": [
11935,
32318,
24508
],
"sale": 8212,
"views": "8.84m",
"views_trend": [
1100000,
3300000,
2300000
]
}
],
"market": "US",
"notes": [
"Market US (United States): amounts are in USD.",
"Without a keyword the data source returns its fixed overall top 10 for the most recent days (window below), whatever window you ask for. Add a keyword to rank more rows over your own window."
],
"see_also": "Pass a row's id to video: method=detail, transcript, products, sales.",
"source": "TokConnect Shop Analytics (TikTok Shop US). Revenue and units are estimates: units track TikTok's sold counter; revenue is units times listed price.",
…Response fields
dataobjectThe tool's result. Compact by default; passdetail=fullfor the complete record.data.countintegerdata.currencystringdata.dataEndstringdata.hasMorebooleandata.itemsarraydata.items[].adintegerdata.items[].ad2Coststringdata.items[].ad2Roasnumberdata.items[].ad_cpastringdata.items[].ad_revenue_ratiostringdata.items[].ad_view_ratiostringdata.items[].ai_videointegerdata.items[].collect_daystringdata.items[].content_typestringdata.items[].creator_uidstringdata.items[].descriptionstringdata.items[].durationstringdata.items[].follower_countstringdata.items[].gpmstringdata.items[].handlestringdata.items[].idstringdata.items[].original_durationnumberdata.items[].publish_datestringdata.items[].revenuestringdata.items[].revenueDiffintegerdata.items[].revenue_grouping_ratenumberdata.items[].revenue_trendarraydata.items[].saleintegerdata.items[].viewsstringdata.items[].views_trendarraydata.marketstringdata.notesarraydata.see_alsostringdata.sourcestringdata.windowobjectdata.window.daysintegerdata.window.endstringdata.window.startstringmetaobjectmeta.credits_chargedinteger1 on success.meta.credits_remainingintegerCredits left this period, when known.meta.request_idstringQuote it to support.next_cursorstringPresent when there is another page: pass it back as cursor.
Errors
400401402403404429502503
Try it Live call, 1 credit
Top-selling TikTok Shop LIVEs
Shop AnalyticsThe top 10 LIVE broadcasts by estimated revenue over a date range, with host, start and end time, duration, units, GPM and average price. The data source applies no filters to this ranking. Pass a row's id to live method=products, sales or history. Example: {"window":"7d"}.
/v1/lives/top-sellingTop LIVEs by sales
Parameters
- detailstring
compact (default) returns the useful fields; full adds the raw upstream payload (large).
Default
compactOne ofcompactfull - endstring
Shop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
- regionstring
Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See
shop_regions. - startstring
Shop Analytics methods: custom range start, YYYY-MM-DD.
- windowstring
Shop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
One of
7d30d90d180d365d
Use it in Claude or ChatGPT
Connect https://mcp.tokconnect.com/mcp and your AI calls this as the live_top_selling tool. Same data, same credit. MCP setup
{
"tool": "live_top_selling",
"arguments": {}
}Request
curl "https://api.tokconnect.com/v1/lives/top-selling" \
-H "X-API-Key: $TOKCONNECT_API_KEY"import os
import requests
r = requests.get(
"https://api.tokconnect.com/v1/lives/top-selling",
headers={"X-API-Key": os.environ["TOKCONNECT_API_KEY"]},
timeout=100,
)
r.raise_for_status()
body = r.json()
print(body["data"])const res = await fetch("https://api.tokconnect.com/v1/lives/top-selling", {
headers: { "X-API-Key": process.env.TOKCONNECT_API_KEY },
});
if (!res.ok) throw new Error((await res.json()).error?.message);
const { data, next_cursor } = await res.json();Response
{
"data": {
"count": 10,
"currency": "USD",
"dataEnd": "2026-10-28",
"hasMore": false,
"items": [
{
"create_time": "2026/10/21 06:15:53",
"duration": "123h 56m",
"finish_time": "2026/10/26 10:12:51",
"gpm": "$55.39",
"handle": "based",
"id": "7699061230417349407",
"main_category": [
"601450-848904"
],
"record_type": "SHORT",
"revenue": "$169.85k",
"sale": 5694,
"title": "DEALS FOR YOU - Live Now!",
"uid": "7153432386608251946",
"unit_price": "$29.83",
"views": "3.07m"
},
{
"create_time": "2026/10/25 15:40:57",
"duration": "11h 39m",
"finish_time": "2026/10/26 03:20:04",
"gpm": "$763.53",
"handle": "glamourmodernfashion1",
"id": "7700692389735811853",
"main_category": [
"601152-842376"
],
"record_type": "SHORT",
"revenue": "$89.92k",
"sale": 1251,
"title": "",
"uid": "7043091206013060102",
"unit_price": "$71.88",
"views": "117.77k"
},
{
"create_time": "2026/10/27 18:27:37",
"duration": "5h 57m",
"finish_time": "2026/10/28 00:25:29",
"gpm": "$816.49",
"handle": "noelyfajas",
"id": "7701477528661920543",
"main_category": [
"601152-842888"
],
"record_type": "SHORT",
"revenue": "$82.50k",
"sale": 969,
"title": "Fall Deals For You LIVE",
"uid": "6801519791112897542",
"unit_price": "$85.13",
"views": "101.04k"
}
],
"market": "US",
"notes": [
"Market US (United States): amounts are in USD.",
"Without a keyword the data source returns its fixed overall top 10 for the most recent days (window below), whatever window you ask for. Add a keyword to rank more rows over your own window."
],
"see_also": "Pass a row's id to live: method=products, sales, history.",
"source": "TokConnect Shop Analytics (TikTok Shop US). Revenue and units are estimates: units track TikTok's sold counter; revenue is units times listed price.",
"window": {
"days": 8,
"end": "2026-10-28",
"start": "2026-10-21"
}
},
"meta": {
"credits_charged": 1,
"credits_remaining": 7906,
"request_id": "req_3f9c2a1b7d4e"
}
}Response fields
dataobjectThe tool's result. Compact by default; passdetail=fullfor the complete record.data.countintegerdata.currencystringdata.dataEndstringdata.hasMorebooleandata.itemsarraydata.items[].create_timestringdata.items[].durationstringdata.items[].finish_timestringdata.items[].gpmstringdata.items[].handlestringdata.items[].idstringdata.items[].main_categoryarraydata.items[].record_typestringdata.items[].revenuestringdata.items[].saleintegerdata.items[].titlestringdata.items[].uidstringdata.items[].unit_pricestringdata.items[].viewsstringdata.marketstringdata.notesarraydata.see_alsostringdata.sourcestringdata.windowobjectdata.window.daysintegerdata.window.endstringdata.window.startstringmetaobjectmeta.credits_chargedinteger1 on success.meta.credits_remainingintegerCredits left this period, when known.meta.request_idstringQuote it to support.next_cursorstringPresent when there is another page: pass it back as cursor.
Errors
400401402403404429502503