API SellWinners memberi anda maklumat risikan e-dagang dan pengiklanan melalui HTTPS dengan respons JSON: kedai Shopify beserta produk dan trafiknya; produk kedai beserta harga, anggaran jualan, ulasan dan iklannya; iklan Meta, Google dan TikTok; pengiklan; dan e-mel yang dihantar jenama. Setiap endpoint juga tersedia kepada ejen AI melalui pelayan MCP terhos kami. Halaman ini membincangkan pengesahan, format respons, penomboran, pengisihan dan penapis, had kadar dan kredit, ralat dan URL media, kemudian setiap endpoint beserta parameter dan contoh permintaan, dan alat pelayan MCP.
URL asas
https://api.sellwinners.com
Cuba secara langsung
Hantar permintaan sebenar daripada Playground pada pelan berbayar, atau jana klien daripada spesifikasi OpenAPI:
Hantar kunci API anda pada setiap permintaan dalam pengepala X-API-Key, atau sebagai token bearer:
X-API-Key: YOUR_API_KEY
# or
Authorization: Bearer YOUR_API_KEY
Kunci bermula dengan ak_live_. Rahsiakannya: jangan letakkannya dalam kod bahagian hadapan atau repositori awam. Anda boleh mencipta beberapa kunci (satu bagi setiap apl atau persekitaran) dan membatalkan mana-mana kunci daripada papan pemuka anda; kunci yang dibatalkan berhenti berfungsi serta-merta.
Respons
Setiap respons ialah JSON. Ia membawa requestId dan hasilnya di bawah data: senarai untuk carian dan penyenaraian, satu objek untuk satu rekod. Senarai menambah objek pagination, dan sesetengah jawapan menambah meta.
Rekod ialah objek bersarang: sesuatu iklan mempunyai media, advertiser, content, metrics, audience, rank dan flags, dan kedai, pengiklan, iklan Google, item TikTok dan e-mel dikumpulkan dengan cara yang sama. Nilai yang tidak diketahui ialah null. Medan lain yang tiada tempat tetap disimpan di bawah extra. Contoh di atas dipendekkan.
Dalam sesuatu iklan, content.title ialah tajuk dan content.callToAction ialah teks yang boleh dibaca seperti "Shop now". metrics.estimatedSpend ialah anggaran perbelanjaan daripada sumber data apabila ada (satu iklan daripada /v1/ads/{adId} membacanya), jika tidak capaian x 9 / 1000 (9 USD bagi setiap 1,000 orang yang dicapai); anggaran perbelanjaan mengekalkan dua tempat perpuluhan di bawah 10 USD dan dalam dolar bulat bermula 10 USD ke atas. rank.rankDelta ialah kedudukan semasa tolak kedudukan sebelumnya, jadi nilai negatif bermaksud iklan itu naik, dan rank.improvementPct ialah pecahan (0.25 ialah suku).
Laporan kedudukan penjejak jenama (/ad-rank, /scaling-ads, /v1/workspace/scaling-ads dan alat MCP get_brandtracker_scaling_ads) menambah metrics mereka sendiri: di situ metrics.rankDelta ialah kedudukan sebelumnya tolak kedudukan semasa (positif: tempat yang diperoleh) dan metrics.improvementPct ialah pecahan kedudukan sebelumnya yang diperoleh, seperti dalam sesuatu iklan (0.875 ialah 87.5%). Pada satu iklan, metrics.reachDelta1d, reachDelta7d dan reachDelta30d diisi daripada sejarah capaiannya. Kedai menamakan kategori mereka: catalog.mainCategory dalam senarai, serta catalog.categories pada satu kedai.
Dalam iklan Google, media.type dan media.format ialah text, image atau video, dan media.url ialah imej iklan itu: bagi iklan video, imej kecilnya (tiada fail video). transparencyUrl ialah iklan itu pada Ads Transparency Center Google, tempat iklan video dimainkan; ia ialah null apabila iklan itu tiada id Google. network ialah search, youtube, shopping, maps atau other, begitu juga nilai extra.networks.
Diubah pada 19 Oktober 2026:
media.format iklan Google dahulunya kod format dan kini ialah text, image atau video, media.type boleh jadi text atau video, dan extra.networks menggunakan nama huruf kecil network.
media.url Google tidak pernah merupakan fail video, walaupun media.type ialah video.
Dalam penapis formats Google, image kini bermaksud iklan imej (sebelum ini ia bermaksud iklan teks), jadi gunakan text untuk iklan teks. Kod terdahulu static_image, html5_iframe dan responsive_display, serta nama pendeknya, masih diterima.
status iklan Google ialah active hanya semasa Google memaparkan iklan itu: iklan yang tidak dipaparkan Google lebih daripada 7 hari ialah unknown. daysRunning mengira hari dari firstSeenAt hingga lastSeenAt, kedua-duanya termasuk; extra.servedDays ialah kiraan sumber data itu sendiri, yang berterusan selepas iklan berhenti. Penapis sepadan dengan apa yang ditunjukkan oleh setiap iklan: status=active mengekalkan iklan yang dipaparkan Google dalam 7 hari lepas dan status=inactive iklan yang ditandakan sumber data sebagai berhenti, jadi iklan unknown tidak berada di bawah mana-mana; minDaysRunning dan maxDaysRunning mengekalkan iklan yang nilai daysRunning berada dalam julat. Senarai sedemikian mempunyai pagination.total null, dan apabila hanya sedikit daripada iklan yang dibaca sepadan, ia berakhir lebih awal, dengan meta.partial dan amaran.
Tanpa teks carian, sortBy=relevance menyenaraikan yang terbaharu; sortBy=reach hanya menerima order=desc. Dengan status=active, sortBy=reach menyenaraikan sedikit iklan: dalam susunan capaian, iklan pertama kebanyakannya iklan yang telah dihentikan Google, jadi isih mengikut terbaharu untuk iklan yang sedang dipaparkan Google (amarannya menyatakan perkara ini). Iklan Google tidak menerima sortBy=longestRunning: sumber data menyusunnya mengikut hari yang berterusan selepas iklan berhenti, jadi ia menyenaraikan iklan yang tidak lagi dipaparkan Google, dan ia menjawab 400 dengan sebab itu.
extra.startIsFloor menandakan iklan yang mula dilihat pada 31 Mei 2018, hari pertama data iklan Google, jadi ia mungkin lebih lama. audience.countries menyenaraikan setiap negara audiens, dengan percentage hanya bagi iklan yang dipaparkan di satu negara; remarketing dan interest ialah null apabila tidak diketahui.
Google melaporkan capaian bagi sesetengah iklan yang dipaparkan di EU sahaja, selalunya hanya sebagai 10,000,000, had atas skalanya (10 juta atau lebih): kebanyakan iklan tidak mempunyainya, dan nullReasons menyatakan sebab reach.value ialah null (not_reported: iklan yang dipaparkan di EU yang tidak dilaporkan capaiannya oleh Google; eu_only: iklan yang dipaparkan di tempat lain), kecuali capaian yang ditinggalkan oleh pelan. extra.networks ialah senarai platform iklan daripada sumber data, yang mungkin tidak menamakan network. extra.shop.google memegang jumlah Google bagi laman web pengiklan; bagi laman yang bukan kedai (kedai apl, laman sosial, pemendek pautan) advertiser.domain dan websiteId ialah null.
Diubah pada 20 Oktober 2026:
Domain (GET /v1/shops/{domain}, carian id, domain TikTok, ringkasan pesaing) ialah laman dengan domain tepat itu, termasuk di luar indeks kedai; domain yang tidak dicapai sumber data dijawab 404.
GET /v1/lookup menyusun hasil dengan yang terbaik dahulu: laman milik sesuatu domain, halaman Facebook miliknya (halaman utama dahulu), kemudian halaman yang dinamakan seperti domain itu; bagi nama, laman milik jenama dan halamannya sendiri (halaman utama dahulu), kemudian kedai dan halaman yang ditemui melalui nama itu.
Apabila laman jenama ditemui, kedai atau halaman yang mempunyai nama itu hanya di dalam sesuatu perkataan dikecualikan dan laman dengan nama itu dianggap tepat hanya apabila ia menjalankan iklan; jika tidak, padanan nama dianggap tepat hanya jika ada trafik atau iklan. Halaman rasmi bernama lain yang tiada iklan aktif datang selepas halaman yang ditemui melalui nama.
Pada baris kedai, signals.activeAdsSource menyatakan dari mana activeAds diperoleh: page (iklan aktif halaman utamanya, dibaca sekarang, pada baris kedai itu sendiri) atau index (kiraan indeks kedai, yang mungkin lebih lama).
Carian domain kedai (searchType=domain) menyenaraikan laman yang tepat dahulu, dengan extra.exactDomainMatch (dan extra.inShopIndex false apabila indeks kedai tidak memasukkannya).
Bagi laman yang bukan kedai (kedai apl, laman sosial atau pemesejan, pemendek pautan atau ubah hala penjejakan), extra.domain pada baris pengiklan ialah null, rekod pengiklan menamakannya dalam extra.nonShopSite, meninggalkan extra.platforms dan mengambil linkedShops daripada halaman pendaratannya (fromLandingPages), dan iklan tidak mempunyai shops.
Tarikh dan masa yang dihantar sumber data tanpa zon ialah UTC dan kini dihantar dengan +00:00.
Dalam statistik e-mel, emailsByDayOfWeek dikunci mengikut nombor hari: 0 ialah Ahad, 6 Sabtu.
Baris carian id boleh membawa nullReasons, dan rekod kedai boleh membawa meta.partial apabila angka senaraiannya tidak dapat dibaca.
Turut diubah pada 20 Oktober 2026 (TikTok):
publishedAt bagi item TikTok ialah UTC. Ia lewat 1 atau 2 jam, jadi siaran yang dibuat pada jam terakhir hari UTC menunjukkan hari berikutnya dan daysRunning kurang satu hari.
Penapis sepadan dengannya: publishedAfter dan publishedBefore ialah UTC (tarikh sahaja ialah permulaan harinya, dan publishedBefore menyenaraikan siaran sebelumnya), minDaysRunning dan maxDaysRunning mengira dari hari UTC, seperti daysRunning, dan sortBy=longestRunning bermula pada 31 Ogos 2016, 22:00 UTC.
Turut diubah pada 20 Oktober 2026 (iklan Google):
GET /v1/google-ads, POST /v1/google-ads/query dan alat MCP tidak menerima sortBy=longestRunning (atau daysRunning) dan menjawab 400 beserta sebabnya: sumber data menyusunnya mengikut hari yang berterusan selepas iklan berhenti, jadi ia menyenaraikan iklan yang tidak lagi dipaparkan Google.
Carian Free yang hasil pertamanya menjadi sedikit selepas ditapis dengan status=active menjawab dengan meta.partial dan amaran yang menyatakan berapa banyak iklan yang dibaca disenaraikannya.
Dalam extra.shop, laman web tanpa data trafik tidak mempunyai monthlyVisits (sebelum ini 0), trafficGrowth30d hanya disertakan bersama lawatan melebihi 0, dan extra.shop.google tidak memuatkan totalReach atau weeklyReach bernilai 0 (tidak pernah dilaporkan) dan, apabila tiada iklan dikira, kiraan 0 itu.
Iklan Google yang disimpan ke papan juga dibaca dengan cara yang sama.
Turut diubah pada 20 Oktober 2026 (kedai):
Dalam GET /v1/shops/{shopId}, advertising.summary.reach30d ialah capaian EU 30 hari lepas, dijumlahkan mengikut tarikh (sebelum ini jumlah sejak penjejakan bermula, kini totalReach), spend30d ialah capaian itu x 9 / 1000, extra.estimatedSpendUsd ialah perbelanjaan sejak penjejakan bermula dan extra.adsLaunched30d menjumlahkan iklan yang dilancarkan dalam 30 hari lepas; semuanya null bagi kedai tanpa capaian EU atau UK.
Rekod kedai, kedai dalam senarai dan statistik e-mel mempunyai nullReasons, iaitu laluan medan yang dipetakan kepada sebab ia null: not_shopify (jualan dan produk dianggarkan untuk kedai Shopify sahaja), no_estimate, not_measured, eu_uk_only, not_linked (tiada profil TikTok), not_on_tp, no_reviews, none_found.
Anggaran jualan sifar di samping unit terjual ialah null, dalam rekod, senarai dan sejarah jualan, yang period=week memberikan satu titik bagi setiap minggu.
traffic.growth30d ialah pecahan (-0.1543 ialah -15.4%), dan traffic.history bermula pada bulan pertama yang ada lawatan.
catalog.mainCategory datang daripada id kategori (yang paling khusus dalam cabang utama), bersama catalog.categoryLeaves dan productsCountCapped (25,001 ialah had atas sumber data: 25,000 atau lebih).
Halaman Trustpilot tanpa ulasan mempunyai penilaian null.
tiktok.matchedBy ialah socials atau handle apabila angka TikTok datang daripada profil sosial kedai atau daripada profil yang ditemui melalui nama penggunanya (padanan, bukan pautan daripada sumber data).
advertising.mainPageActiveAds ialah iklan aktif halaman utama (bacaan gambaran keseluruhan iklannya, seperti yang ditunjukkan oleh Halaman utama dalam linkedAdvertisers; kiraan yang ditunjukkan senarai kedai hanya muncul apabila bacaan itu tiada) dan linkedAdvertisers[].rank ialah kedudukan halaman itu.
Kedai serupa tidak termasuk kedai itu sendiri dan laman webnya sendiri, dan setiap halaman diisi daripada senarai yang lebih ke bawah (offset dan limit mengira senarai tanpa kedai-kedai itu).
Produk yang diisih mengikut populariti meletakkan produk terlaris kedai di hadapan (meta.order).
E-mel dan statistik e-mel sesebuah kedai mengira setiap jenis kempen, dan angka 90 harinya null apabila tidak diketahui.
Isihan jualan menyenaraikan satu baris bagi setiap kedai Shopify (extra.sharedSalesWith), dan sortBy=estMonthlySales&order=asc tidak memuatkan kedai tanpa anggaran.
Turut diubah pada 20 Oktober 2026 (angka kedai):
Isihan jualan GET /v1/shops terus dibaca melepasi domain yang digabungkannya menjadi satu baris bagi setiap kedai Shopify (sebelum ini ia berhenti selepas beberapa baris pertama), turut menggabungkan domain sesebuah kedai yang lebih jauh ke bawah dalam senarai, dan pagination.total ialah null sehingga senarai dibaca hingga ke hujung; sortBy=estMonthlySales&order=asc bermula pada anggaran 100 USD (minMonthlySales 100).
Anggaran jualan di bawah 0.50 USD bagi setiap unit terjual ialah null (no_estimate), dalam rekod, senarai dan sejarah jualan.
traffic.monthlyVisits ialah null bagi laman web yang belum diukur dan traffic.growth30d apabila bulan sebelumnya tiada lawatan (not_measured); growth30d sesuatu rangkaian sosial datang daripada sejarah pengikutnya apabila sumber data memberikan 0 atau tiada, dan 0 pengikut ialah null (not_measured).
Kedai dalam senarai menyatakan sebab catalog.productsCount dan sales.unitsSold ialah null.
extra.storeWide menandakan domain dengan 0 lawatan yang membawa jualan kedainya (0 yang telah diukur, atau domain lain milik kedai itu, yang dinamakan dalam extra.sharedSalesWith, memiliki lawatan itu; pelan Free tidak menyertakan nama itu dalam rekod kedai).
advertising.mainPageActiveAds ialah iklan aktif halaman utama seperti yang dibaca oleh gambaran keseluruhan iklannya (kiraan yang ditunjukkan senarai kedai hanya muncul apabila bacaan itu tiada).
Kedai serupa juga tidak termasuk kedai jenama milik kedai itu, dan extra.similarIndexed ialah false bagi kedai yang tiada dalam indeks kesamaan.
catalog.mainCategory mengekalkan label asal sumber data hanya apabila ia ialah nama sesuatu kategori.
Fail media yang dipautkan oleh sesuatu jawapan tetapi sudah tiada pada sumber data membalas 200 dengan badan kosong dan X-Media-Missing: true.
Turut diubah pada 20 Oktober 2026 (pengiklan dan iklan Meta):
Capaian pengiklan ialah capaian EU dan UK, mengikut tempoh carian pengiklan sendiri: advertising.reach30d, extra.reach14d, reach90d dan totalReach ialah null bagi halaman tanpa iklan EU atau UK dan tanpa capaian, atau bagi tempoh yang belum dikira oleh sumber data, dan nullReasons menyatakan sebabnya (eu_uk_only, not_measured); halaman yang dicipta dalam sesuatu tempoh mempunyai seluruh capaiannya dalam tempoh itu (sebelum ini 0).
Dalam GET /v1/advertisers/{advertiserId}, capaian ialah yang ditunjukkan senarai pengiklan (sebelum ini dibaca 30 bacaan ke belakang, dan bacaan ada yang melangkau hari), anggaran perbelanjaan ialah null bersama capaian itu, extra.avgSpendUsd14d ialah purata perbelanjaan harian selama 14 hari, extra.avgActiveAds14d ialah purata 14 hari iklan aktifnya (sebelum ini iklan baharunya selama 14 hari), dan jika sumber data belum mengiranya, bagi halaman yang dicipta dalam tempoh 14 hari itu ia dikira daripada iklan aktif yang dibaca sejak hari pertamanya (extra.averagedFrom), jika tidak null, dan kiraan iklan baharu bagi halaman yang dicipta dalam tempoh itu mengira setiap satu iklannya.
advertising.countryDistribution ialah bahagian iklan aktifnya yang menyasarkan setiap negara (satu iklan boleh menyasarkan beberapa negara), extra.reachCountries memuatkan bahagian setiap negara daripada capaian EU, extra.platforms.meta memuatkan iklan milik halaman itu sendiri (sebelum ini milik halaman utama kedai), kiraan TikTok atau Google tanpa angka tidak disertakan, extra.mainLandingPages menggunakan pratonton halaman pendaratan halaman baharu sebagai ganti, dan lastAds bagi halaman yang iklannya belum diambil oleh carian iklan ialah iklan terkini yang disenaraikan baris pengiklannya, bersama meta.indexing, seperti pada GET /v1/advertisers/{advertiser_id}/ads (bersama meta.liveAds).
Baharu: GET /v1/advertisers/{advertiserId}/history, iklan aktif halaman itu dan capaian EU yang diperolehnya, hari demi hari.
Bilangan pengikut Instagram 0 ialah null (sumber data menulis 0 bagi halaman yang tiada akaun yang diketahuinya).
metrics.reach dan perbelanjaan sesuatu iklan Meta ialah null bagi iklan yang tidak dipaparkan di EU atau UK (eu_uk_only; sebelum ini 0 atau null) dan bagi iklan EU yang capaiannya belum dikira (not_measured; sebelum ini 0), dengan baris media menyatakan sebabnya dalam nullReasons.reach, media.type ialah carousel bagi iklan yang mempunyai lebih daripada satu imej atau video, dan extra.startIsFloor menandakan iklan yang bermula pada 1 Januari 2018, hari pertama bagi tarikh iklan Meta pada sumber data.
sortBy=adRank menyenaraikan kedudukan terbaik (1) dahulu, walau apa pun susunannya.
Satu iklan (GET /v1/ads/{adId}) mengambil capaian terkini yang dilaporkan sumber data beserta perbelanjaannya, mengira perubahan capaiannya mengikut tarikh selagi sejarah capaiannya terkini (jika tidak, ia null), menyenaraikan imej dan videonya seperti baris carian, mengisi advertiser.reach30d dan pageAnalytics.instagramFollowersHistory, menambah pageAnalytics.reachHistory (siri yang sama dengan impressionsHistory), dan menamakan kedai yang rekod itu berikan melalui id sahaja (traffic kedai itu ialah null dengan nullReasonsshops.traffic apabila laman web itu belum diukur); audience.gender, ageMin, ageMax dan metrics.aggregatedReach sentiasa null, kerana sumber data tidak melaporkannya bagi satu iklan.
Dalam carian pengiklan, sortBy=reach menyusun mengikut jumlah capaian sejak penjejakan bermula dan newAds mengikut iklan baharu 14 hari.
Sasaran iklan Meta menentukan sebab capaiannya null: eu_uk_only hanya bagi iklan yang tidak menyasarkan mana-mana negara EU atau UK; iklan yang menyasarkan salah satu daripadanya, atau yang sasarannya belum diketahui, ialah not_measured dalam 7 hari pertamanya dan not_reported selepas itu (sebelum ini eu_uk_only), dalam senarai iklan, baris media dan satu iklan.
Satu iklan membaca sejarah capaian dan perbelanjaannya sebagai satu siri, satu bacaan sehari (perubahannya juga), dan mengambil bacaan serta perbelanjaan terakhir siri itu apabila capaian rekod lebih daripada dua kali ganda nilainya dan siri itu berlanjutan hingga hari terakhir iklan; media iklan itu menggunakan fail pertama yang disenaraikan sebagai ganti, dan advertiser.totalReach menggunakan capaian EU daripada butiran halaman.
Rekod pengiklan yang barisnya tidak mempunyai bacaan capaian tetapi butiran halamannya ada, menggunakan capaian butiran itu (extra.totalReach, perbelanjaannya, dan advertising.reach30d yang dikira daripadanya), bahagian dalam extra.reachCountries tidak pernah dibundarkan kepada 0, extra.averagedFrom tidak pernah mendahului hari halaman itu dicipta, dan sejarah hariannya (extra.history, GET /v1/advertisers/{advertiserId}/history) tidak memuatkan bacaan yang terlepas oleh sumber data (urutan sifar sepanjang 14 hari atau kurang antara bacaan melebihi 0).
Satu iklan yang mengambil bacaan siri menyimpan capaian rekod dalam extra.recordReach (angka yang ditunjukkan senarai iklan); dalam carian pengiklan, baris yang tidak mempunyai bacaan capaian EU tetapi butiran halamannya ada, menggunakan capaian butiran itu, seperti yang dilakukan rekodnya; dan GET /v1/advertisers/{advertiserId}/history kini mengekalkan bacaan 0 bagi halaman yang kini tiada iklan EU tetapi pernah memperoleh capaian sebelum hari yang diminta (dalam hari itu ia tidak memperoleh capaian; sebelum ini bacaan itu ditinggalkan sebagai not_measured).
Pada pelan Free, iklan yang capaiannya tidak diketahui menyatakan sebabnya seperti pada pelan berbayar; hanya capaian yang tidak termasuk dalam pelan itu yang tiada sebab.
Turut diubah pada 20 Oktober 2026 (anggaran perbelanjaan):
Anggaran perbelanjaan di bawah 10 USD mengekalkan dua tempat perpuluhan: capaian 140 pada 9 USD bagi setiap 1,000 orang yang dicapai ialah 1.26 (sebelum ini 1), dan purata harian mengekalkan sennya sendiri; dari 10 USD ke atas, anggaran perbelanjaan ialah dalam dolar penuh (capaian 2,000 ialah 18).
Ini terpakai untuk extra.estimatedSpendUsd dan extra.avgSpendUsd14d pada rekod pengiklan, advertising.summary.spend30d dan extra.estimatedSpendUsd pada kedai, metrics.estimatedSpend pada iklan Meta, serta statistics.euData.estimatedSpend30d dan estimatedSpend bagi setiap titik /time-series pada penjejak jenama (kedua-duanya sebelum ini mempunyai dua tempat perpuluhan pada sebarang jumlah), dalam API dan alat MCP. Jika angka sumber data sendiri ialah anggaran itu dalam dolar penuh, ia mengekalkan sennya dengan cara yang sama.
Turut diubah pada 20 Oktober 2026 (capaian pengiklan dan sejarah harian):
GET /v1/advertisers/{advertiserId} menambah extra.reachScope: outside_eu_uk bagi halaman yang kebanyakan capaiannya mengikut negara dilihat di luar EU dan UK (sumber data turut melaporkan capaian sesetengah iklan yang dipaparkan di tempat lain; capaiannya dan anggaran yang dibuat daripadanya ketika itu ialah capaian tersebut, bukan capaian EU), jika tidak eu_uk. extra.avgSpendUsd14d bagi halaman yang dicipta dalam tempoh 14 hari itu ialah perbelanjaannya sepanjang hari penuh sejak ia dicipta (sekurang-kurangnya satu hari; sebelum ini ia dikira daripada capaian 14 harinya merentasi 14 hari jika baris pengiklan mempunyainya).
extra.history pada rekod pengiklan dan GET /v1/advertisers/{advertiserId}/history bermula pada hari halaman itu dicipta; extra.history.newAds tidak memuatkan nilai 0 pada hari yang terlepas oleh sumber data, extra.followersHistory serta suka dan pengikut pageAnalytics sesuatu iklan tidak memuatkan nilai 0 di antara dua bacaan melebihi 0 atau pada hari sedemikian, dan anggaran perbelanjaan harian mengekalkan dua tempat perpuluhan di bawah 10 USD.
Halaman yang iklan aktifnya belum terdapat dalam sebarang senarai mempunyai meta.indexing pada rekodnya, dan halaman pertama GET /v1/advertisers/{advertiser_id}/ads yang kosong dengan meta.indexing dan meta.liveAds.
Satu iklan (GET /v1/ads/{adId}): extra.spendHistory bermula pada hari iklan itu bermula, setiap spendUsd dengan dua tempat perpuluhan di bawah 10 USD; advertiser.totalReach tidak pernah lebih rendah daripada bacaan terakhir pageAnalytics.reachHistory (extra.pageRecordReach ketika itu memuatkan jumlah rekod, iaitu yang ditunjukkan senarai pengiklan); extra.recordSpend ialah perbelanjaan bagi extra.recordReach; extra.reachScope dan extra.pageReachScope menyatakan di mana kebanyakan capaian iklan itu dan halamannya dilihat.
Turut diubah pada 20 Oktober 2026 (penjejak jenama):
Dalam GET /v1/brandtrackers dan GET /v1/brandtrackers/{id}, nilai 0 pada advertising.newAdsLastDay yang disertai pelancaran dalam 7 hari lepas disemak berdasarkan pelancaran kedai semalam: bilangannya, atau null (not_measured) jika tiada bacaan hari itu; satu senarai menyemak paling banyak 20 jenama bagi setiap panggilan, iaitu jenama pada halaman yang diminta.
Dalam /top-ads dan /v1/workspace/top-ads, metrics.totalReach ialah capaian EU iklan itu: null bagi iklan yang dipaparkan di luar EU dan UK (eu_uk_only) atau iklan EU yang belum dikira (not_measured), bersama nullReasons, dan diletakkan paling akhir dalam isihan capaian (sebelum ini 0).
/testing mengira statistik capaiannya daripada iklan yang capaiannya diketahui, dengan nullReasonsstats.reach bagi kumpulan yang tiada satu pun.
Dalam /hooks, /transcripts, /landing-pages serta hook dan halaman pendaratan ruang kerja, totalImpressions bernilai 0 ialah null dengan sebab baharu no_eu_reach (tiada capaian EU atau UK dikira untuk iklannya; not_measured dengan euOnly), diletakkan paling akhir dalam isihannya.
Dalam /ad-rank, /scaling-ads dan /v1/workspace/scaling-ads, apabila sejarah kedudukan sesuatu iklan bermula di dalam tempoh 14 atau 30 hari, metrics.previousRank dan rankDelta dikira daripada bacaan paling lama di situ: metrics.since ialah hari itu dan meta.windowNote menyatakannya, dan angka yang tidak dapat diberikan ialah null dengan nullReasons.
Dalam /partners, isOwnPage ialah true bagi halaman utama kedai, halaman rasminya yang dinamakan seperti jenama dan halaman yang dinamakan sebagai jenama itu (pencipta kandungan juga boleh dikira rasmi), dan capaian atau perbelanjaan null mempunyai nullReasons.
Halaman pertama /ads dengan adCopyHashes mempunyai meta.latestAdDate dan dataFreshnessLagDays, dan dengan status=active mempunyai meta.stoppedCount.
/demography ialah audiens di EU dan UK, dan negara yang kurang daripada satu per sepuluh ribu daripada negara teratas berpindah daripada countryDistribution ke otherCountries.
/ad-copy-evolution dan /headline-evolution mempunyai satu titik bagi setiap hari yang direkodkan (0 apabila teks itu tidak digunakan, null pada hari yang dipotong pada teks yang disimpannya), menyusun teks mengikut hari terbaharu dan tidak memuatkan hari yang dibaca salah oleh sumber data (iklan aktif kurang daripada sepersepuluh hari di sekelilingnya, satu hari atau 2 atau 3 hari berturut-turut, atau teks yang jauh lebih sedikit daripada hari di kedua-dua belah), seperti yang dinyatakan oleh meta.periodNote; meta.recordedDays mengira hari-hari itu. Iklan aktif /time-series mingguan dan bulanan juga tidak memuatkan 2 atau 3 bacaan sedemikian berturut-turut.
Turut diubah pada 20 Oktober 2026 (laporan penjejak jenama, carian id dan capaian Google):
Dalam /ad-rank, /scaling-ads dan /v1/workspace/scaling-ads, setiap kedudukan pada sesuatu baris datang daripada sejarah kedudukan iklan: metrics.currentRank ialah bacaannya pada hari kedudukan pustaka iklan dibaca (kedudukan yang ditunjukkan /top-ads; pustaka itu boleh ketinggalan sehari daripada sejarah), jika tidak bacaan terbaharunya, trajectory berakhir pada hari itu, dan jika tiada bacaan pada hari tempoh bermula, bacaan paling lama dalam tempoh itu yang dikira (perubahan sumber data sendiri sepanjang tempoh itu tidak lagi digunakan).
50 iklan pertama pustaka iklan (10 setiap jenama merentas jenama) disusun semula mengikut angka ini: iklan yang naik kurang daripada minRankDelta, atau berada di bawah maxCurrentRank, mengikut angka itu tidak dimuatkan (iklan yang sejarah kedudukannya tidak menunjukkan kenaikan, mengikut kiraan pustaka iklan sendiri), pagination meliputi iklan yang dikekalkan dan meta.rankNote menyatakan apa yang dibaca dan tidak dimuatkan, merentas jenama juga.
/time-series harian (dan graph pada gambaran keseluruhan) ialah null pada hari yang iklan aktifnya dibaca salah oleh sumber data (kurang daripada sepersepuluh hari di kedua-dua belah; hari terbaharu kekal seperti yang dibaca, dalam evolusi teks juga), begitu juga pelancarannya, dan begitu juga pelancaran pada hari selepasnya apabila hampir semuanya ialah iklan aktif hari itu; minggu dan bulan tidak memuatkan pelancaran tersebut, dan leftOut menyenaraikan hari-hari itu. /landing-page-evolution tidak memuatkan hari-hari itu pada setiap halaman, dan bacaan sesuatu halaman sendiri yang kurang daripada sepersepuluh bacaan di kedua-dua belah, seperti yang dinyatakan oleh meta.periodNote halaman itu, bersama hari yang dicapai sejarah apabila ia ketinggalan.
Kumpulan /testing tanpa capaian yang dikira mempunyai nullReasonsstats.reachno_eu_reach kecuali jika salah satu iklannya belum dikira (not_measured) atau semuanya dipaparkan di luar EU dan UK (eu_uk_only); capaian dan perbelanjaan yang tiada pada baris /partners ialah not_measured hanya dalam 7 hari selepas launchDate baris itu, dan no_eu_reach selepas itu.
/creatives menamakan iklan yang mempunyai beberapa imej atau video sebagai carousel (sebelum ini unknown).
Dalam GET /v1/lookup, signals.monthlyVisits sesebuah kedai ialah null bagi laman web yang belum diukur (nullReasonsnot_measured; sebelum ini 0), iklan aktif pada baris kedai yang tepat (dengan setiap type, shop juga) ialah iklan halaman utamanya seperti yang dibaca oleh gambaran keseluruhan iklannya, iaitu mainPageActiveAds kedai itu, dan baris halaman milik kedai itu dibaca dengan cara yang sama; signals.monthlyVisits sesuatu jenama yang dijejak (dan totalTraffic jenama itu dalam GET /v1/brandtrackers) ialah null bagi laman web yang belum diukur dan menyatakan sebab ia tiada (not_measured, atau no_shop bagi halaman tanpa kedai), dan pada pelan Free, capaian halaman yang tiada dalam mana-mana pelan mengekalkan sebabnya (eu_uk_only, not_measured), dalam senarai pengiklan juga.
reach.value yang null pada iklan Google mempunyai nullReasons (not_reported, eu_only), kecuali bagi capaian yang tidak termasuk dalam pelan itu.
Dalam GET /v1/shops/{shopId}, advertising.mainPageActiveAds ialah iklan aktif halaman utama seperti yang dibaca oleh gambaran keseluruhan iklannya, iaitu kiraan yang ditunjukkan Halaman utama dalam linkedAdvertisers (sebelum ini ia kiraan indeks kedai, yang boleh lewat sehari).
Turut diubah pada 20 Oktober 2026 (TikTok dan e-mel):
metrics.engagementRate pada baris TikTok ialah (suka + komen + perkongsian + simpanan) / tontonan sebagai pecahan (0.0513 ialah 5.13%; carian sebelum ini menghantar peratusan dan GET /v1/tiktok/library/{itemId} metrik lain), dan daysRunning ialah bilangan hari sejak siaran diterbitkan, dalam kedua-duanya.
metrics.rank ialah kedudukan siaran itu dalam kalangan siaran penciptanya (1 ialah yang terbaik).
profile.followers ialah null apabila sumber data belum mengiranya (sebelum ini ia menghantar 0), content.category ialah null bagi kategori menyeluruh All, dan content.hashtags ialah tag siaran itu, sekali sahaja setiap satu, dieja seperti dalam penerangannya dan tanpa tanda baca selepasnya (bagi rekod, ia senarai tag daripada sumber data, bagi baris carian, ia tag daripada penerangan).
Rekod TikTok menambah profile.adsCount, organicCount dan avgPostsPerWeek90d, mengisi profile.pageCreation, dan mempunyai links null bagi baris sumber data yang tiada TikTok di sebaliknya (id kurang daripada 15 digit, atau diterbitkan sebelum 31 Ogos 2016, 22:00 UTC).
sortBy=longestRunning bermula pada TikTok pertama (31 Ogos 2016, 22:00 UTC).
Rekod e-mel menamakan jenis promosi, kategori dan acaranya, dan lawatan bulanan, iklan aktif, produk serta angka 90 hari kedainya ialah yang ditunjukkan senarai e-mel, begitu juga angka last90Days dalam statistik e-mel.
Baris e-mel tidak memuatkan extra.shopActiveAds bagi nilai 0 tanpa jumlah iklan (nullReasons baris itu menyatakan not_measured), dan shop.marketing.activeAds pada rekod e-mel ketika itu ialah null; apabila angka kedai tidak dapat dibaca, rekod mempunyai meta.partial, amaran dan nullReasonsfailed bagi angka itu.
Dalam alat MCP analyze_shop_emails, dominant menyusun jenis kempen, kategori, jenis promosi dan acara masing-masing secara berasingan dan tidak memuatkan No Promotion dan No Event.
Diubah pada 21 Oktober 2026:
metrics.views pada item TikTok, serta likes dan saves yang bernilai 0 bersamanya, ialah null dengan nullReasonsnot_measured (begitu juga engagementRate) apabila sumber data menghantar 0 tontonan bersama suka, komen, perkongsian atau simpanan melebihi 0, dalam carian dan dalam GET /v1/tiktok/library/{itemId}; sortBy=views atau likes dengan order=asc menyenaraikan siaran yang tontonannya dikira (minViews 1).
Carian iklan Meta dengan websiteIds menyenaraikan iklan milik kedai itu sendiri: setiap iklan halaman utama kedai dan halaman rasminya yang dinamakan sepertinya, serta iklan halaman lainnya (pencipta kandungan, penerbit dan rakan kongsi yang menjalankan iklannya) yang memaut ke kedai itu atau ke laman web pada domainnya; sehingga senarai dibaca hingga ke hujung, pagination.total carian itu ialah iklan halaman milik kedai yang dicari, iaitu anggaran (pagination.totalEstimated true), atau null apabila carian tidak menamakan sebarang halaman miliknya.
Apabila sortBy=longestRunning digunakan, setiap kelompok iklan yang dibaca daripada sumber data disusun mengikut daysRunning.
Dalam GET /v1/shops/{shopId}, advertising.activeAds mengira iklan aktif halaman milik kedai itu (linkedAdvertisers[].isOwnPage), dan dalam /products kedai itu, produk terlaris yang diberi kedudukan mempunyai tajuk, harga dan imej daripada catalog.bestSellers (harga produk terlaris boleh jadi harga terendah antara variannya).
traffic.monthlyVisits sesebuah kedai (dan growth30d) ialah null dengan not_measured apabila ia bernilai 0 sejak sejarahnya jatuh kepada 0 sementara anggaran jualan melebihi 0 dan ada unit terjual, dalam rekod, kedai dalam senarai, kedai serupa dan carian id; domain sedemikian masih extra.storeWide.
Dalam GET /v1/ads/{adId}, advertiser.totalReach ialah bacaan terakhir pageAnalytics.reachHistory selagi bacaan itu berumur paling lama 2 hari (extra.pageRecordReach ketika itu memuatkan jumlah rekod), extra.advertiserTotalAds diisi daripada angka senarai halaman itu (not_measured jika tiada), pertambahan capaian 7 hari dan 30 hari bagi iklan yang bermula dalam tempoh itu ialah seluruh capaiannya, dan pertambahan yang lebih rendah daripada tempoh yang lebih pendek ialah null (not_measured).
statistics.ctaCount pada penjejak jenama menamakan setiap seruan tindakan seperti yang dilakukan content.callToAction ("Shop now").
Turut diubah pada 21 Oktober 2026 (kedai):
Dalam GET /v1/shops/{shopId}, advertising.history ialah iklan aktif halaman utama mengikut hari pada setiap pelan (pada pelan Free ia mengira iklan setiap halaman), dan dokumentasi menyatakan bahawa capaian dan perbelanjaan advertising.summary, extra.adsLaunched30d, extra.totalAds dan extra.estimatedSpendUsd meliputi setiap halaman kedai, manakala advertising.activeAds mengira halaman miliknya sendiri.
catalog.productsCount sesebuah kedai yang bernilai 0 tanpa sebarang produk disenaraikan, di samping lawatan, anggaran jualan atau unit terjual, ialah null dengan not_measured, dalam rekod, kedai dalam senarai dan meta.productsCount bagi GET /v1/shops/{shopId}/products; sortBy=productsCount tidak memuatkan kedai tersebut, dan dengan order=asc menghantar minProductsCount 1 kecuali minimum produk diberikan.
Carian iklan Meta bagi sesebuah kedai yang disempitkan kepada halaman yang bukan miliknya (trackedPages) dan berakhir awal menyatakan sebabnya dalam meta.warnings, tanpa meminta supaya ia disempitkan lagi.
GET /v1/filters/shops menyatakan dalam meta.warnings apabila sumber data tidak menyenaraikan sebarang nilai, dan menamakan senarai yang memberikannya.
Turut diubah pada 21 Oktober 2026 (penomboran, e-mel dan senarai iklan):
Penomboran carian pengiklan tidak lagi gagal apabila sumber data tidak mahu menyambungnya (sebelum ini ia membalas 503, dan cuba semula tidak membantu): 100 hasil pertamanya dibaca dalam satu panggilan, dan halaman yang sampai ke penghujung apa yang boleh dibaca membalas hasMore false, dengan meta.partial true dan amaran yang menyatakan setakat mana carian itu dibaca.
Halaman yang bermula melepasi total tepat sesuatu carian adalah kosong, dengan hasMore false.
Carian TikTok yang diisih mengikut views atau likes dengan order=asc bermula pada TikTok pertama (31 Ogos 2016, 22:00 UTC), seperti longestRunning, dan metrics.views (dan engagementRate) pada item TikTok ialah null dengan not_measured apabila tontonannya kurang daripada suka.
content.bodyPreview dan bodyLength pada e-mel, serta content.body pada rekod, ialah null dengan not_measured apabila sumber data menghantar teks ganti bagi isi e-mel yang belum dibacanya.
Tarikh dan masa yang diberikan sumber data dalam UTC ditulis dengan satu cara dalam senarai dan rekod, dengan +00:00 dan tanpa sifar di hujung pada pecahan saat (2026-09-30T00:20:11.507+00:00; masa papan, kegemaran, penjejak jenama dan pautan kongsi anda sendiri dicipta atau diubah berakhir dengan Z, seperti sebelum ini), dan baris e-mel membawa id kategori, jenis promosi dan acara, seperti rekod e-mel.
Setiap senarai berhalaman membalas pagination.hasMore, dan GET /v1/google-ads/facets/countries membalas objek pagination.
Badan permintaan yang bukan JSON sah dibalas dengan 400 validation_failed bersama mesej "The request body is not valid JSON." dan details.position, aksara tempat ia terputus.
Dalam senarai iklan Meta, capaian pada sesuatu baris ialah bacaan indeks iklan, yang boleh ketinggalan sehari daripada rekod iklan, dan pertambahan capaiannya null di samping capaian yang diketahui apabila sumber data tidak menyenaraikan sebarang pertambahan (not_measured), kecuali bagi tempoh iklan itu bermula, yang dalamnya ia memperoleh seluruh capaian yang dibaca barisnya; dalam GET /v1/ads/{adId}, pertambahan yang null di samping capaian yang diketahui juga mempunyai not_measured.
Diubah pada 22 Oktober 2026 (pelan Free):
API dan pelayan MCP dipindahkan ke pelan berbayar: kunci akaun pada pelan Free membalas 403 plan_not_eligible pada setiap endpoint kecuali GET /v1/account, bersama details.upgradeUrl, dan tiada apa yang dikira. Tiada kunci boleh dibuat pada pelan Free.
Pelan Free telah berubah sejak itu: Pelan Free menyatakan apa yang disertakannya kini.
Kunci yang dibuat pada pelan berbayar dikekalkan, dan ia berfungsi semula sebaik sahaja akaun kembali ke pelan berbayar. Pautan kongsi yang dibuat oleh akaun pada pelan Free dijeda dengan cara yang sama.
Turut diubah pada 22 Oktober 2026 (laporan dan rekod kedai):
Dalam GET /v1/shops/{shopId}/ad-ranking/series, rankDelta ialah kedudukan akhir tolak kedudukan awal (negatif apabila iklan naik, seperti pada setiap iklan; sebelum ini ia bilangan tempat yang diperoleh) dan improvementPercent kini improvementPct, iaitu pecahan; setiap baris /ad-ranking membawa dua angka yang sama bagi tempoh kedudukan itu dalam rank.
Dalam /activity/calendar jenama yang dijejak, satu hari kalendar dan /activity/calendar/days, meta.partial ialah true atau false, meta.partialSources menamakan sumber yang dibaca sebahagian sahaja (pada /calendar dan satu hari), dan masa pratonton ialah UTC, termasuk siaran TikTok.
Dalam GET /v1/shops/{shopId}/landing-pages/detail, activeAds menggunakan iklan halaman itu sebagai ganti, shareOfAds ialah linkedAdsTotal daripada shopActiveAds, snapshots mengira hari halaman itu ditangkap, lifetimeAds dan impressions telah dibuang (impresi itu ialah capaian yang sama), capaian 0 ialah null dengan nullReasons.reachno_eu_reach, dan linkedAds mempunyai medan baris carian iklan.
/feed kedai menyenaraikan iklan Meta miliknya sendiri, seperti carian iklannya.
GET /v1/market/q4-overview menerima sebarang from dan to dalam musim itu.
Dalam /q4-season, winners menyenaraikan kunci setiap jualan bersama kreatifnya, dan url halaman pendaratan membawa skemanya.
Pengesan Shopify membaca kedai pada domainnya tanpa www..
GET /v1/advertisers/{advertiserId} serta halaman pendaratan, audiens dan campuran media jenama yang dijejak menggemakan hari lampau dalam meta.snapshotDate.
Apabila statistik iklan Meta sesebuah kedai tidak dapat dibaca pada ketika itu, GET /v1/shops/{shopId} membalas meta.partial true dengan amaran: capaiannya, anggaran perbelanjaan yang dibuat daripadanya serta campuran media dan formatnya ialah null dengan nullReasonsfailed, iklannya mengikut negara dikira seperti yang diberikan barisnya dalam carian, dan jawapan itu tidak disimpan, jadi panggilan seterusnya membacanya semula (taklimat pesaing membawa meta.partial dan amaran yang sama).
Halaman pendaratan pada domain milik kedai itu, atau subdomainnya, ialah toShop true dalam /v1/shops/{shopId}/advertisers dan /advertisers/{advertiserId}/landing-pages; apabila domain kedai tidak menyertakan domain itu, meta.domains menyenaraikannya dahulu daripada halaman pendaratan pada halamannya (fromLandingPages true, had bawah), dan shopAds sesuatu halaman tidak pernah kurang daripada iklan aktif halaman pendaratannya pada kedai itu (shopAdsAtLeast true apabila dinaikkan).
Dalam GET /v1/tiktok/library/{itemId}, profile.latestPosts[].mediaUrl ialah video siaran itu, atau null dengan nullReasonsnot_reported (sebelum ini imej muka depan).
Carian pengiklan membaca 100 hasil pertamanya dan menyatakan ia berakhir pada halaman yang sampai ke hasil ke-100 (hasMore false dan amaran itu), bukan pada halaman kosong selepasnya.
Carian TikTok yang diisih mengikut views atau likes dengan order=asc kini tidak memuatkan siaran yang tontonannya tidak dikira (tontonan kurang daripada suka), dan pagination.total carian itu ialah anggaran (totalEstimated) sehingga senarai dibaca hingga ke hujung; setiap susunan lain menyenaraikannya, dengan tontonan null.
Turut diubah pada 22 Oktober 2026 (item tersimpan dan hook iklan):
Baharu: GET /v1/boards/search mencari apa yang anda simpan, merentas setiap papan dan kegemaran anda, mengikut perkataan yang ditunjukkan setiap salinan tersimpan (setiap perkataan mesti muncul, dalam sebarang susunan; huruf besar dan kecil serta aksen diabaikan), id-nya atau nama papannya, dan menerima sourceType, boardId, savedFrom dan savedTo; ia hanya membaca item tersimpan anda, tidak pernah sumber data (MCP find_saved_items).
Baharu: POST /v1/tools/ad-hooks menulis tiga ayat pembuka pendek untuk iklan produk anda, dan GET /v1/tools/ad-hooks memberikan kuota anda: tiada had bulanan pada pelan berbayar, dan had seminit (429 dengan Retry-After); membaca kuota tidak dikira (MCP write_ad_hooks).
Pelayan MCP mempunyai 64 alat.
Turut diubah pada 23 Oktober 2026 (paparan tersimpan dan penapis kedai):
Baharu: GET /v1/views menyenaraikan carian yang anda simpan pada halaman senarai di laman web, masing-masing dengan carian yang dihasilkannya (request: carian, searchType, sortBy, order dan penapis bernama, seperti yang diterima endpoint carian); POST /v1/views menyimpan satu, PATCH /v1/views/{viewId} menamakan semula, memindahkan atau mengubahnya dan DELETE /v1/views/{viewId} mengalih keluarnya. Ia hanya membaca dan menulis paparan anda sendiri, tidak pernah sumber data (MCP list_saved_views).
Carian kedai menerima excludeCurrencies (kod mata wang seperti EUR), socialNetworks (instagram atau tiktok: kedai dengan mana-mana daripadanya) dan shopifyPlan (headless). trafficGrowth juga membaca 90 hari (min90, max90) dan adsGrowth 7 hari (min7, max7), atau period sesuatu peraturan (last90d, last7d); min dan max kekal 30 hari terakhir.
Pelayan MCP mempunyai 65 alat.
Turut diubah pada 23 Oktober 2026 (pautan produk):
Dalam GET /v1/shops/{shopId}, setiap item catalog.bestSellers membawa handle dan productUrl, iaitu halaman produk pada laman web milik kedai: alamat yang diberikan sumber data apabila ia berada pada domain kedai (atau subdomainnya) atau domain myshopify-nya, jika tidak https://<domain>/products/<handle> apabila handle-nya diketahui, jika tidak null.
Dalam GET /v1/shops/{shopId}/products, productUrl mengikut peraturan yang sama, jadi alamat pada laman web lain tidak lagi diberikan, dan handle ialah null apabila ia bukan satu bahagian tunggal sesuatu alamat.
Turut diubah pada 23 Oktober 2026 (baris kedai, kedai serupa dan produk):
createdAt sesebuah kedai (rekod kedai, baris kedai dan kedai serupa) hanyalah tarikh penciptaan kedai Shopify. Bagi laman web bukan Shopify, sumber data memberikan hari ia mula menjejak laman web itu, bukan tarikh penciptaannya: createdAt kini null (nullReasonstracking_date) dan hari itu ialah trackedSince yang baharu. Tarikh pada atau sebelum 1 Januari 2000 ialah nilai ganti sumber data dan ialah null (not_reported).
catalog.bestSellers pada baris kedai membawa handle, productUrl (mengikut peraturan rekod kedai) dan rank (1 ialah produk terlaris), dan baris membawa profile.isHeadless dan catalog.myShopifyDomain, seperti rekod kedai.
googleAds.reach.value pada baris kedai ialah null: baris kedai tidak membawa capaian Google, yang terdapat pada rekod kedai (extra.googleAds.reach).
Kedai serupa (GET /v1/shops/{shopId}/similar, similarShops pada rekod) mengekalkan extra mereka (logo, Trustpilot, sejarah jualan). Senarai kedai serupa yang dihentikan sumber data sebelum penghujungnya membalas meta.partial dan amaran pada halaman yang sampai ke titik itu.
Dalam GET /v1/shops/{shopId}/products, createdAt dan publishedAt ialah jam kedai itu sendiri yang dihantar sebagai UTC (awal 8 jam bagi kedai pada waktu Pasifik AS). Kini ia UTC, dengan updatedAt yang baharu, berdasarkan ofset kedai daripada UTC (meta.shopUtcOffset, seperti -08:00). Apabila tiada ofset dapat dibaca, ketiga-tiganya null (local_time) dan createdAtLocal, publishedAtLocal dan updatedAtLocal memberikan jam kedai, tanpa zon.
Produk yang disenaraikan hanya dalam produk terlaris pada butiran kedai mempunyai publishedAt dan updatedAt null (not_reported): nilai sumber data ialah salinan masa penciptaannya.
Setiap produk menyatakan senarai yang memuatkannya (lists: bestSellers, newest) dan tempatnya antara yang terlaris (listPosition, 1 hingga 100).
Turut diubah pada 23 Oktober 2026 (rekod kedai):
Dalam GET /v1/shops/{shopId}, extra.googleAds.reach.value sentiasa null: kini ia ialah capaian EU Google kedai itu, dengan lowerBound dan upperBound, dan extra.googleAds menambah reachHistory, history (iklan Google kedai itu yang ditandakan aktif mengikut minggu), updatedAt dan latestAds.
growth30d sesuatu rangkaian sosial kini ialah perubahan 30 hari pada gambaran keseluruhan pengikut (sebelum ini tempoh lain bagi sesetengah halaman Facebook: 0.3636 sedangkan perubahannya 0.2898). GET /v1/shops/{shopId}/socials memberikannya sebagai growth30d juga.
Profil X kedai ialah socials.x. socials.twitter dinamakan semula kepada socials.x dan kekal, objek yang sama, selama satu keluaran. Setiap rangkaian mempunyai url, dan socials.others menyenaraikan pautan lain kedai itu.
tiktok.profileMetrics.percentAds ialah peratusan (0 hingga 100); adsShare yang baharu ialah nilai yang sama sebagai pecahan. tiktok menambah avatarUrl, history, postsChange30d, postsChange30dPct dan latestAds, dan tiktok.activity.avgActiveAds7d serta avgActiveAds30d, yang sebelum ini null, memberikan purata iklan TikTok kedai itu mengikut hari.
Baharu pada pelan berbayar: advertising.summary.firstAdSeenAt, longestRunningDays, medianRunningDays, landingPagesCount dan perubahan 30 hari bagi iklan aktif, iklan yang dilancarkan dan capaian EU (activeAdsChange30d, launchedChange30d, reachChange30d, masing-masing juga sebagai pecahan, …Pct), dan advertising.runningDaysMix, reachCountries, reachHistory, topLandingPages, adsByAgeRange dan adsByGender. Pada setiap pelan: advertising.allPagesHistory dan advertising.topCountries[].ads.
Baharu: catalog.bestSellers[].rank, sales.hasSubscription, technology.apps[].appStoreUrl dan categories, profile.isHeadless, extra.updatedAt, serta createdAt dan trackedSince bagi tarikh kedai di atas.
GET /v1/shops/{shopId}/advertisers menambah logoUrl dan moreLandingPages bagi setiap halaman, profileUrl jika gambaran keseluruhan iklan tiada, serta landingPagesCount dan moreLandingPages bagi setiap domain.
Turut diubah pada 23 Oktober 2026 (produk):
Baharu: GET /v1/products dan POST /v1/products/query mencari dan melayari produk kedai, masing-masing dengan harga, anggaran jualan, unit terjual, ulasan, kedudukan produk terlaris, iklan Meta, capaian dan perbelanjaan EU, negara jualan, tarikh pelancaran dan kedai, diisih mengikut relevance, newest (tarikh pelancaran), activeAds atau spend (perbelanjaan iklan EU dalam 30 hari lepas) (MCP search_products). searchType memadankan teks dengan nama produk atau domain kedainya, dan penapis bernama menghadkan harga dalam USD, iklan aktif, bahagian iklan, bilangan ulasan dan hari pelancaran, serta menerima mata wang dan langganan; GET /v1/filters/products menyenaraikan mata wang yang diterimanya.
shop (domain atau id satu kedai) hanya menyenaraikan produk kedai itu, tanpa teks carian di sebelahnya, pada carian produk dan dalam search_products. Papan menyimpan produk (sourceTypeproduct) seperti yang ditunjukkan carian kali terakhir, dan carian semua yang disimpan menemuinya melalui tajuk dan kedainya.
Pelayan MCP mempunyai 73 alat.
Turut diubah pada 23 Oktober 2026 (penapis produk):
Carian produk menerima lebih banyak penapis bernama: anggaran jualan sebulan atau sehari (minEstMonthlySales, minEstDailySales dan nilai maksimumnya; had sehari ialah 30 hari daripada nilai itu), unit terjual sebulan atau sehari (minUnitsSoldMonthly, minUnitsSoldDaily), sellingCountries (produk yang dijual ke mana-mana daripadanya), shopCountries, skor ulasan (minRating, maxRating), minAdsLaunched (iklan Meta yang dilancarkan dalam 30 hari lepas), minSpendShare, minEuReach (capaian EU dalam 30 hari), hasPartnershipAds, promoTypes (percent-off) dan minShopProductsCount, masing-masing dengan nilai maksimumnya jika ada; GET /v1/filters/products turut menyenaraikan negara kedai.
sortBy menerima estSales (anggaran jualan), adPressure (bahagian iklan) dan bestSelling (kedudukan produk terlaris dalam kedainya, kedudukan 1 dahulu), dan searchType menerima productDescription dan url.
Setiap produk mempunyai iklan terkininya (advertising.latestAds, dengan gambarnya dalam advertising.previewUrls) dan minggunya (weeks: iklan aktif, bahagian iklan, perbelanjaan dan capaian EU sehari), dan bestSeller.rankPercent ialah kedudukannya sebagai peratusan produk kedai (lebih rendah lebih baik).
Diubah pada 24 Oktober 2026 (parameter, bacaan yang gagal dan halaman yang jauh):
Parameter pertanyaan yang tidak dibaca oleh sesuatu endpoint ditolak dengan 400 validation_failed, yang mesejnya menamakannya dan menyenaraikan parameter yang diterima endpoint itu, sedangkan sebelum ini ia diabaikan tanpa sebarang makluman (nama yang tersalah eja, atau penapis yang dihantar ke endpoint yang tiada penapis itu, dijawab seolah-olah tidak pernah dihantar). Carian menolak penapis bernama yang tidak dikenali seperti sebelum ini. Parameter biasa (country, mediaType, active, type) yang menetapkan penapis yang turut ditetapkan oleh penapis bernama, kepada nilai lain, juga ditolak.
Penjejak jenama: /ads dan /timeline/metadata menolak snapshotDate yang lalu (kedua-duanya membaca pustaka iklan seperti sekarang), /partnership-ads menolak sortBy yang tidak dikenali, /v1/workspace/scaling-ads menolak period yang tidak dikenali, dan senarai penjejak menolak hasNewAdsSince lebih daripada 30 hari ke belakang (pembilang iklan baharu meliputi 30 hari). /v1/workspace/hooks, /ad-copies dan /landing-pages membaca baris setiap jenama dalam sortBy dan order yang diminta sebelum menggabungkannya. Laporan merentas jenama di laman web menghantar euOnly hanya kepada laporan yang membacanya.
Kedai serupa menolak displayInTrending dalam filters (senarai itu tiada bendera indeks kedai) dan membaca had pertumbuhannya sebagai peratusan, seperti carian kedai; offset melebihi apa yang boleh dibaca satu permintaan (600 kedai selepas yang sudah dibaca) ditolak dengan 400 yang menyatakan sejauh mana ia boleh pergi, dan halaman tempat bacaan terhenti mempunyai meta.partial dengan amaran. Pustaka TikTok sesebuah kedai menolak penapis profil dan laman web (skop kedai itu sendiri menggantikannya).
Bahagian jawapan yang tidak dapat dibaca sumber data kali ini menetapkan meta.partial dengan amaran (dan jawapan itu tidak disimpan dalam cache), bukan ruang kosong yang tidak dimaklumkan atau senarai kosong; jawapan sumber data yang bukan JSON ialah 503 upstream_error, dan kedai tersimpan, penjejak baharu atau senarai pilihan e-mel yang bacaannya gagal membalas ralat itu, bukan not_found. Halaman yang lebih dalam daripada satu bacaan senarai yang tidak memuatkan sesetengah baris mempunyai meta.partial dan hasMore true, dan teks iklan, rakan kongsi dan ujian kreatif sesuatu jenama menyatakannya dengan meta.partial apabila satu bacaan tidak meliputi jenama itu.
GET /v1/google-ads/facets/networks menerima search, limit dan offset, seperti senarai pilihan yang lain. metric bagi /v1/shops/compare adalah wajib (rujukan menyatakan ia tidak wajib).
MCP: alat menolak argumen yang tidak dibaca oleh jenis yang dipilihnya (shop_report, lookup_filter_ids, market_overview, scan_advertiser) dan argumen yang bercanggah (trend_signal dengan sort_by, active_only dengan status, argumen bernama dengan filters); creative_inspiration_pack menyusun iklan semua kata kunci bersama-sama.
Turut diubah pada 24 Oktober 2026 (cari mengikut imej):
Baharu: POST /v1/products/image-search mencari produk kedai yang menyerupai sesuatu gambar, masing-masing dengan kedainya, yang paling hampir dahulu. Hantar gambar sebagai multipart/form-data: fail PNG, JPG atau WEBP yang tidak melebihi 10 MB (image), atau URL imej terus (imageUrl), yang kami muat turun sendiri. Setiap baris ialah baris produk seperti yang dibalas carian produk, dengan similarity (0.7 hingga 1) dan matchOnly (padanan yang tiada rekodnya dalam indeks produk: hanya tajuk, gambar, harga, tarikh pelancaran dan kedainya).
Carian ini menerima penapis bernama carian produk, sortBy (relevance, estSales, activeAds, adPressure, newest, spend, spend14d) dan maxPerShop (1, 3, 5, 10 atau 20 padanan terdekat bagi setiap kedai), dalam halaman sehingga 32. GET /v1/products/image-search/{searchId} membaca halaman lain, isihan, penapis dan hasil setiap kedai tanpa menghantar gambar sekali lagi, dan GET /v1/products/image-search/history menyenaraikan carian imej terbaharu anda sendiri.
Gambar ditulis semula sebelum dicari, sebagai JPEG tanpa metadatanya (EXIF, lokasi, komen), dan URL imej tidak pernah keluar daripada pelayan kami. Ralat baharu: 400 invalid_image, 400 unsupported_url dan 422 unreadable_image.
Pada pelan Free, carian imej disusun mengikut perkaitan, tanpa penapis. Pelayan MCP mempunyai 67 alat: search_products_by_image ialah yang baharu.
Diubah pada 25 Oktober 2026 (kredit):
API dan pelayan MCP diukur dalam kredit dan bukan permintaan: 1 kredit = 1 hasil yang dikembalikan: butiran satu jenama, satu iklan, atau satu baris senarai. Hasil kosong adalah percuma. Satu panggilan berharga seberapa banyak hasil yang dipulangkannya, dan peruntukan bulanan pelan ialah dalam kredit.
Jawapan yang diukur menghantar X-Usage-Cost, X-Credits-Used, X-Credits-Remaining dan X-Credits-Source; GET /v1/usage melaporkan kredit tambah nilai di bawah credits.topup.balance.
402 insufficient_credits muncul apabila kredit bulan itu dan kredit tambah nilai kedua-duanya telah habis digunakan, dengan details.upgradeUrl dan details.topUpUrl.
Had kadar dikongsi oleh seluruh ruang kerja.
Pautan kongsi (shareUrl) membuka halaman web pada https://sellwinners.com yang boleh dilihat oleh sesiapa sahaja. Rekod yang sama tersedia sebagai JSON daripada /v1/shared/ads/{token} dan /v1/shared/boards/{token}. Pautan yang pemiliknya berada pada pelan Free membalas 403 forbidden sehingga pemilik kembali ke pelan berbayar.
Endpoint identiti /v1/me, /v1/usage dan /v1/workspace mengembalikan objeknya pada peringkat teratas, di sebelah requestId. Endpoint sistem /v1, /v1/health dan /v1/system/freshness tidak membawa requestId, dan /v1 serta /v1/health membalas objek biasa tanpa data. ID permintaan juga dihantar dalam pengepala X-Request-Id. Nyatakannya apabila anda menghubungi sokongan.
Papan, kegemaran dan penjejak jenama juga mempunyai endpoint POST, PATCH dan DELETE. Ia menerima badan JSON, yang dihantar dengan Content-Type: application/json.
Penomboran halaman
Endpoint senarai menerima limit (sehingga 100 pada carian; senarai facet menerima sehingga 500 dan /snapshots sesuatu jenama sehingga 365) dan sama ada page (1, 2, 3…) atau offset. Apabila kedua-duanya dihantar, offset yang digunakan. Saiz halaman lalai disenaraikan bersama setiap endpoint. Senarai iklan, iklan Google, TikTok, e-mel dan media membalas dengan:
Untuk mendapatkan halaman seterusnya, ulang permintaan yang sama dengan page tambah satu, atau dengan offset tambah limit. Dalam badan POST …/query, hantar "page" atau "offset" sebagai medan. hasMore ialah false pada halaman terakhir. Apabila sumber data tidak mahu menyambung carian melepasi sesuatu titik, halaman yang sampai ke titik itu membalas hasMore false dengan meta.partial true dan amaran yang menyatakan berapa banyak hasil boleh dibaca. Penomboran sampai ke 5,000 hasil pertama sesuatu carian (carian pengiklan, 100 yang pertama). Sempitkan carian dengan penapis atau tukar isihan untuk melihat hasil lain.
Senarai iklan Google mengembalikan total yang tepat, kecuali senarai yang disempitkan oleh peraturan status atau hari berjalan (lihat carian iklan Google). "totalEstimated": true menandakan total (dan totalPages miliknya) yang merupakan anggaran sehingga senarai dibaca hingga ke hujung, seperti pada kedai serupa sesebuah kedai dan carian iklan Meta bagi sesebuah kedai (websiteIds).
Papan, kegemaran dan laporan penjejak jenama menerima page dan limit serta membalas dengan page, limit, total, totalPages dan hasMore. Senarai facet, /products sesebuah kedai dan kedai serupa /similar bagi kedai itu menerima limit dan offset serta membalas dengan limit, offset, total dan hasMore.
Isihan & penapis
Endpoint carian menerima sortBy dan order (desc secara lalai). Apabila anda menghantar istilah carian, hasil diisih mengikut relevance melainkan anda memilih isihan lain; tanpa istilah carian, lalainya ialah newest (kedai dan produk: relevance, media: reach). Carian iklan Google dan TikTok sentiasa disusun mengikut perkaitan; di situ, sortBy terpakai apabila anda melayari tanpa istilah carian.
Setiap jenis data mempunyai endpoint POST …/query yang menerima badan JSON dengan query, filters, sortBy, order, limit dan page (atau offset) untuk penapisan lanjutan. Gunakan endpoint facet untuk melihat nilai dan id yang diterima penapis.
Penapis boleh dihantar mengikut nama: sebagai parameter pertanyaan tambahan pada carian GET (?status=active&minDaysRunning=30&mainCountries=US,GB) atau sebagai medan peringkat teratas badan POST …/query ({"status": "active", "minDaysRunning": 30}). Setiap endpoint di bawah menyenaraikan nama yang diterimanya. Pada endpoint carian, nama penapis yang tidak disokong oleh endpoint itu mengembalikan 400 validation_failed yang menyenaraikan nama yang disokong, jadi salah taip tidak akan mengembalikan hasil tanpa penapis secara senyap; laporan penjejak jenama mengabaikan nama yang tidak dikenali. Senarai menerima nilai yang dipisahkan koma atau tatasusunan JSON, tarikh menggunakan 2026-01-31, dan objek filters mentah masih berfungsi bersama penapis bernama.
Penapis pertumbuhan (trafficGrowth, adsGrowth, pageReachGrowth, adReachGrowth) menerima peraturan yang ditulis sebagai {"comparison": "greater" | "lower", "value": 50} atau {"operator": "gte" | "lte", "value": 50}. Nilai ialah peratusan dalam 30 hari terakhir; tempoh lain tidak tersedia. minRankDelta ialah bilangan kedudukan minimum yang dinaiki sesuatu iklan sepanjang rankDeltaWindow (7d melainkan anda menghantar 14d atau 30d). hideSavedAds tidak memuatkan iklan yang telah anda simpan. Id kategori bagi setiap penapis categoryIds datang daripada /v1/facets/categories.
Had kadar & kredit
Pelan
Kredit / bulan
Had kadar
Starter
5,000
60 / minit
Pro
15,000
120 / minit
Business
20,000
300 / minit
1 kredit = 1 hasil yang dikembalikan: butiran satu jenama, satu iklan, atau satu baris senarai. Hasil kosong adalah percuma. Setiap pelan menyertakan kredit untuk sebulan, diperbaharui pada 00:00 UTC pada hari pertama bulan. Satu panggilan berharga seberapa banyak hasil yang dipulangkannya, jadi limit yang lebih kecil lebih murah, dan panggilan alat MCP juga berharga seberapa banyak hasil yang dipulangkannya, seperti API. Kredit dan had kadar adalah bagi setiap ruang kerja: semua orang di dalamnya, semua kuncinya, API dan pelayan MCP berkongsi satu kumpulan kredit dan satu had kadar. Pada pelan berbayar, pemilik ruang kerja boleh membeli kredit tambah nilai pada halaman pengebilan (€1 membeli 120, bermula daripada €10): ia digunakan selepas kredit bulan itu, dibawa ke hadapan dan tidak pernah tamat tempoh.
Panggilan
Kredit
Carian atau senarai
1 bagi setiap hasil yang dipulangkan
Satu rekod (kedai, iklan, e-mel)
1
Hasil kosong
0
Satu perubahan (simpan, pindah, kongsi, padam)
1 (item yang sudah ada pada papan: 0)
Carian mengikut imej
4 bagi setiap hasil yang dipulangkan
Sejarah jualan sesebuah kedai
4
Carian id, nilai penapis (facet), GET /v1/account dan GET /v1/usage
0
Ralat atau penolakan
0
Setiap jawapan yang diukur menyertakan:
X-RateLimit-Limit requests allowed per minute
X-RateLimit-Remaining requests left this minute
X-Usage-Cost credits this request cost
X-Credits-Used credits this request cost (the same number)
X-Credits-Remaining credits left after this request (monthly and top-up)
X-Credits-Source recurring, topup or hybrid (when it cost credits)
X-Quota-Limit credits included this month
X-Quota-Remaining monthly credits left
X-Quota-Reset when the monthly credits renew (UTC)
X-Request-Id the id of this request
Apabila melebihi had kadar seminit, anda mendapat 429 rate_limited dengan pengepala Retry-After (dalam saat). Apabila kredit bulan itu dan kredit tambah nilai kedua-duanya telah habis digunakan, anda mendapat 402 insufficient_credits, dengan details.upgradeUrl dan details.topUpUrl, sehingga kredit bulanan diperbaharui. Semak kredit anda pada bila-bila masa dengan GET /v1/account atau GET /v1/usage. Panggilan ini tidak mengenakan sebarang kos, tetap menghantar X-Usage-Cost: 0, X-Credits-Used: 0 dan X-Credits-Remaining, dan berfungsi walaupun kredit telah habis.
Had ini terpakai untuk API dan pelayan MCP, pada pelan berbayar dan pada pelan Free. Apl web di laman web tidak diukur: ia tanpa had pada pelan berbayar, dalam lingkungan penggunaan saksama.
Pelan Free
Pelan Free menyertakan apl web dan pelayan MCP (150 kredit sebulan), tanpa API. Akaun Free boleh membuat kunci untuk pelayan MCP (ejen AI) dalam papan pemukanya, dalam lingkungan 150 kredit sebulan dan 10 permintaan seminit; REST API terdapat pada pelan berbayar: dengan kunci Free, ia membalas 403 plan_not_eligible, dengan details.feature, details.requiredPlan dan details.upgradeUrl, pada setiap endpoint kecuali GET /v1/account, dan tiada apa yang dikira. Kunci yang dibuat pada pelan berbayar dijeda pada pelan Free, dan ia berfungsi semula sebaik sahaja akaun kembali ke pelan berbayar. Pada pelan Free, carian membalas hasil pertamanya dan alat atau endpoint yang datanya tidak termasuk dalam Free membalas dengan mesej pelan berbayar. Perbandingan pelan menunjukkan apa yang termasuk dalam Free. Jenama demo terbuka sepenuhnya di laman web.
Ralat
Ralat menggunakan kod status HTTP standard dan badan JSON:
{
"error": {
"code": "invalid_api_key",
"message": "This API key is invalid or has been revoked.",
"requestId": "req_8f2c1a9b4d7e6f3a2b1c0d9e",
"details": null
}
}
code stabil dan selamat untuk dijadikan asas logik anda, message ditulis untuk manusia, dan details membawa data tambahan apabila ada (medan yang ditolak bagi 400; kredit bulanan, tarikh pembaharuannya, upgradeUrl dan topUpUrl bagi 402).
Status
code
Maksud
400
validation_failed
Parameter, penapis atau medan badan tidak sah. message menerangkan yang mana satu.
400
invalid_image / unsupported_url
Gambar carian imej bukan fail PNG, JPG atau WEBP yang tidak melebihi 10 MB, atau URL-nya bukan alamat http atau https yang awam.
401
missing_api_key / invalid_api_key
Tiada kunci dihantar, atau kunci itu salah atau telah dibatalkan.
402
insufficient_credits
Kredit bulan itu dan kredit tambah nilai telah habis. Kredit bulanan diperbaharui pada hari pertama setiap bulan; anda boleh membeli kredit tambah nilai atau menaik taraf pelan anda (details.topUpUrl, details.upgradeUrl).
403
plan_not_eligible
Pelan anda tidak termasuk ini. Pada pelan Free, itu ialah setiap permintaan kecuali GET /v1/account. details menamakan feature, requiredPlan dan upgradeUrl.
403
workspace_public_api_suspended
Akaun telah dinyahaktifkan. Hubungi sokongan.
403
forbidden
Kunci ini tidak boleh melakukan ini.
404
not_found
Sumber atau id tidak wujud.
409
conflict
Perubahan itu bercanggah dengan apa yang sudah disimpan, seperti item yang sudah ada pada papan sasaran.
422
unreadable_image
Gambar carian imej tidak dapat dibaca, atau URL-nya tidak dapat dimuat turun. Cuba fail atau URL lain.
429
rate_limited
Terlalu banyak permintaan seminit ini. Tunggu selama Retry-After saat.
500
internal_error
Berlaku masalah di pihak kami. Selamat untuk dicuba semula.
Masalah sementara di pihak kami. Selamat untuk dicuba semula dengan jeda yang semakin panjang (Retry-After).
503
upstream_timeout
Carian mengambil masa terlalu lama. Sempitkannya dengan penapis yang lebih sedikit atau lebih ketat, atau cuba semula. (502 dan 504 sebelum 27 Oktober 2026.)
URL media
Imej dan video dalam respons disajikan daripada CDN kami di https://api.sellwinners.com/v1/media/file/…. URL ini tidak memerlukan kunci API dan tidak menggunakan kredit, jadi anda boleh menyematkannya terus dalam teg <img> dan <video>. Fail yang sudah tiada pada sumber data dihantar sebagai null selama sehari, dan fail yang tiada membalas 404 kosong dengan jenis medianya. Imej produk dan ikon apl yang dihoskan pada CDN Shopify turut disajikan daripada CDN kami. Untuk memaparkan imej dalam saiz kecil, tambah ?w=96 (imej kecil) atau ?w=480 (kad): imej JPEG, PNG, WebP atau GIF kemudian dihantar sebagai WebP pada lebar itu paling besar, tidak pernah dibesarkan; animasi, imej yang lebih kecil atau video dihantar seperti sedia ada. Untuk senarai kreatif yang rata dan sedia dipaparkan, gunakan /v1/media.
Untuk memaparkan imej pada saiznya sendiri tetapi lebih ringan, tambah ?w=full: imej JPEG, PNG, WebP atau GIF kemudian dihantar sebagai WebP pada lebar dan tinggi asalnya, dengan kualiti yang kelihatan sama, apabila itu menjimatkan sekurang-kurangnya satu persepuluh daripada fail; jika tidak, dan bagi animasi atau video, fail asal dihantar seperti sedia ada. Tanpa w, fail asal dihantar.
Penemuan
Tukar nama, domain atau id halaman kepada id yang diterima oleh endpoint lain.
GET/v1/lookup
Cari jenama, pengiklan atau kedai. Results are ranked best first (score). A domain: the site with exactly that domain (exact, also outside the shop index), its subdomains, the same name under another suffix, then the sites whose domain only contains it (fuzzy); the shop's own Facebook pages (its main page exact, then its official pages, those named like the shop first), then the pages named like it, exact when they link to the domain. A name: the brand's own site (the website of its page of that name) first, then its own pages as a domain lists them, then the shops and pages found by the name; with the brand's site found, a shop or page that only contains the name is left out, and a site of that name is exact only when it runs ads (else with traffic or ads). Official pages of another name with no live ad come after the pages found by name, and pages that never advertised last. A shop's signals.activeAds are its main page's live ads: read now on the shop's own row when its pages were read (signals.activeAdsSource page: its ad overview's reading, the shop record's mainPageActiveAds; the shop's own pages read theirs the same way), else the shop index's count, which can be older (index); a tracked brand has its page's live ads and its shop's monthlyVisits (null with nullReasons not_measured, also for a site not measured yet, which reads 0, or no_shop for a tracked page with no shop). A shop's signals.monthlyVisits is null for a site the data source has not measured yet (nullReasons not_measured: it reads 0), or one at 0 since its history went to 0 next to a sales estimate and units sold. signals.reach30d and signals.totalReach are EU reach: when one is null, nullReasons says why (eu_uk_only for a page with no EU ads and no reach, not_measured for a window the data source has not counted). To tell rows of one name apart, each carries its picture (logoUrl: a shop's, a page's, on every plan, and a tracked brand's page's), a shop its countryCode and mainMarket and signals.growth30d (its 30-day traffic growth, a fraction; null with nullReasons not_measured when the month before had no visits), a page the shop it links to (advertiser.domain), its mainCountry and signals.facebookLikes, and a tracked brand its shop's id (brandtracker.shopId).
Parameter
Penerangan
qwajib
Brand name, domain (allbirds.com) or Facebook page id.
type
What to look for (default auto: all of them). Salah satu daripada: auto, brandtracker, advertiser, shop.
Halaman Facebook sesebuah kedai, atau kedai bagi sesebuah halaman. Send exactly one of shopId or facebookPageId. primaryShop.monthlyVisits is the shop's monthly visits, null for a site the data source has not measured yet (nullReasons primaryShop.monthlyVisits not_measured); trafficNumber, its old name, keeps the same value for one release. primaryShop.logoUrl is the shop's picture (profilePhotoUrl, its old name, kept one release). With a facebookPageId, primaryShop.adCounts gives the shop's live and total ads on meta, google and tiktok. Each Facebook page has runningAds, totalAds, likes, createdAt and profileUrl.
Cari kedai Shopify dan dapatkan produk, trafik, jualan, akaun sosial dan iklan.
GET/v1/shops
Cari atau semak imbas kedai (sedang menaik jika kosong). Searches keep to the shop index, not every website the data source tracks. A domain search (searchType=domain) lists the site with exactly that domain first, with extra.exactDomainMatch true, also when the shop index leaves it out (extra.inShopIndex is false then); not with other filters or another sort. languages takes two-letter codes (fr; names such as french are converted); themeIds, pixelIds and shopifyAppIds take ids from /v1/facets/themes, /pixels and /shopify-apps, not names. Growth ranges are percentages over 30 days (trafficGrowth also takes min90 and max90, over 90 days, and adsGrowth min7 and max7, over 7 days; a rule's period may be last90d or last7d the same way); excludeCurrencies takes currency codes such as EUR, socialNetworks instagram or tiktok (a shop with any of them) and shopifyPlan headless. A listed shop's advertising.activeAds are its main page's live ads as the shop index counts them, which can be a day or more behind its shop record (GET /v1/shops/{shopId} reads them now). A shop row's createdAt is a Shopify store's creation date: a site off Shopify has the day the data source began tracking it in trackedSince instead (createdAt null, nullReasons tracking_date), and a date on or before 2000-01-01, the data source's placeholder, is null (not_reported). Its catalog.bestSellers carry handle, productUrl (its page on the shop's own site, as on the shop record) and rank (1 is the best seller); profile.isHeadless and catalog.myShopifyDomain are as on the shop record. A row's googleAds.reach.value is null: the Google EU reach is on the shop record only (extra.googleAds.reach). A sales sort (estMonthlySales, unitsSold) lists one row per Shopify store: the domains of one myshopify domain read together share the store's sales, so they are one row, the most visited, naming the others in extra.sharedSalesWith (a store's domains further down the list are left out too), and its pagination.total is null until the list is read to its end; sortBy=estMonthlySales with order=asc leaves out the shops with no sales estimate or one under 100 USD (minMonthlySales 100) unless a sales bound is given, and those whose estimate is null; sortBy=growth30d leaves out the shops with no traffic growth or no visits in the latest month (with order=asc, minMonthlyVisits 1 unless a visits minimum is given); sortBy=productsCount leaves out the shops whose count is raised to the best sellers they list (catalog.productsCountAtLeast: the data source ranks by its own count) and those whose count is null (with order=asc, minProductsCount 1 unless a products minimum is given); these have a null pagination.total until the list is read to its end. A sales estimate of 0 next to units sold is null (no_estimate), and so is one too low for its units sold at the shop's own prices: under a hundredth of the median price of its listed best sellers a unit sold (0.50 USD for a shop that lists none), or under a tenth of that price a unit sold while worth under five of its median-priced products: too_low, the data source's floor, not a figure; extra.storeWide marks a domain with 0 visits that carries its Shopify store's sales (a measured 0 or one since its history went to 0, its visits null then, or its store's other domains are named); nullReasons says why an estimate is null (no_estimate, too_low, or not_shopify: sales are estimated for Shopify stores only), and why monthlyVisits (not_measured: a site the data source has not measured yet, or one at 0 since its history went to 0 next to a sales estimate and units sold, its growth30d null too), growth30d (not_measured: no visits the month before; -1, every visit lost, when the latest month has none after a month with visits), unitsSold or productsCount is null (productsCount not_measured also for a count of 0 with no product listed next to visits, a sales estimate or units sold: a count the data source has not made). catalog.productsCountCapped marks the data source's products ceiling (25,001: 25,000 or more), and catalog.productsCountAtLeast a count raised to the best sellers the row lists (the data source's count is behind them).
Cari kedai dengan penapis lanjutan. Searches keep to the shop index, not every website the data source tracks. A domain search (searchType=domain) lists the site with exactly that domain first, with extra.exactDomainMatch true, also when the shop index leaves it out (extra.inShopIndex is false then); not with other filters or another sort. languages takes two-letter codes (fr; names such as french are converted); themeIds, pixelIds and shopifyAppIds take ids from /v1/facets/themes, /pixels and /shopify-apps, not names. Growth ranges are percentages over 30 days (trafficGrowth also takes min90 and max90, over 90 days, and adsGrowth min7 and max7, over 7 days; a rule's period may be last90d or last7d the same way); excludeCurrencies takes currency codes such as EUR, socialNetworks instagram or tiktok (a shop with any of them) and shopifyPlan headless. A listed shop's advertising.activeAds are its main page's live ads as the shop index counts them, which can be a day or more behind its shop record (GET /v1/shops/{shopId} reads them now). A shop row's createdAt is a Shopify store's creation date: a site off Shopify has the day the data source began tracking it in trackedSince instead (createdAt null, nullReasons tracking_date), and a date on or before 2000-01-01, the data source's placeholder, is null (not_reported). Its catalog.bestSellers carry handle, productUrl (its page on the shop's own site, as on the shop record) and rank (1 is the best seller); profile.isHeadless and catalog.myShopifyDomain are as on the shop record. A row's googleAds.reach.value is null: the Google EU reach is on the shop record only (extra.googleAds.reach). A sales sort (estMonthlySales, unitsSold) lists one row per Shopify store: the domains of one myshopify domain read together share the store's sales, so they are one row, the most visited, naming the others in extra.sharedSalesWith (a store's domains further down the list are left out too), and its pagination.total is null until the list is read to its end; sortBy=estMonthlySales with order=asc leaves out the shops with no sales estimate or one under 100 USD (minMonthlySales 100) unless a sales bound is given, and those whose estimate is null; sortBy=growth30d leaves out the shops with no traffic growth or no visits in the latest month (with order=asc, minMonthlyVisits 1 unless a visits minimum is given); sortBy=productsCount leaves out the shops whose count is raised to the best sellers they list (catalog.productsCountAtLeast: the data source ranks by its own count) and those whose count is null (with order=asc, minProductsCount 1 unless a products minimum is given); these have a null pagination.total until the list is read to its end. A sales estimate of 0 next to units sold is null (no_estimate), and so is one too low for its units sold at the shop's own prices: under a hundredth of the median price of its listed best sellers a unit sold (0.50 USD for a shop that lists none), or under a tenth of that price a unit sold while worth under five of its median-priced products: too_low, the data source's floor, not a figure; extra.storeWide marks a domain with 0 visits that carries its Shopify store's sales (a measured 0 or one since its history went to 0, its visits null then, or its store's other domains are named); nullReasons says why an estimate is null (no_estimate, too_low, or not_shopify: sales are estimated for Shopify stores only), and why monthlyVisits (not_measured: a site the data source has not measured yet, or one at 0 since its history went to 0 next to a sales estimate and units sold, its growth30d null too), growth30d (not_measured: no visits the month before; -1, every visit lost, when the latest month has none after a month with visits), unitsSold or productsCount is null (productsCount not_measured also for a count of 0 with no product listed next to visits, a sales estimate or units sold: a count the data source has not made). catalog.productsCountCapped marks the data source's products ceiling (25,001: 25,000 or more), and catalog.productsCountAtLeast a count raised to the best sellers the row lists (the data source's count is behind them).
Satu kedai mengikut id atau domain. Profile, traffic, sales, advertising, technology, TikTok, latest ads and similar shops in one call. A domain is the site with exactly that domain (www. and a path aside), looked up among every website the data source tracks; one it does not reach answers 404 not_found. meta.partial and a warning mean the shop's listing figures (its sales estimate, ad counts and latest ads) could not be read: those stay null. extra.googleAds.liveAds counts the shop's Google ads the data source marks active (some Google no longer shows; GET /v1/google-ads with status=active lists those it shows now), from a Google ad search on the shop when the shop data has none; liveAdsExact is false for a lower bound. advertising.summary.reach30d is the EU reach of the last 30 days, summed by date; totalReach the EU reach since tracking began and extra.adsLaunched30d the ads launched in the last 30 days, summed the same way; these, extra.totalAds and the USD estimates made from the reach are the data source's ad overview's, which covers every page of the shop (linkedAdvertisers, those not its own too), where advertising.activeAds counts its own pages; the reach figures and the estimates made from them are null for a shop with no EU or UK reach (nullReasons eu_uk_only; no_ads for a shop with no Meta ad at all). The USD estimates made from the reach (9 USD per 1,000 people reached) keep two decimals under 10 USD (1.26) and are in whole dollars from 10 USD up. advertising.activeAds counts the live ads of the shop's own pages (its main page and its official pages named like it, linkedAdvertisers[].isOwnPage true: the creators, publishers and partners among its pages run other brands' ads too and are left out), mainPageActiveAds its main page's (its ad overview's reading, as its Main page in linkedAdvertisers shows it; null without one), indexActiveAds the shop index's count of its live ads, the figure shop lists show as advertising.activeAds and the activeAds sort and filter follow (null for a past day or with no search row); linkedAdvertisers[].rank is Main, Official or Whitelisting. advertising.history is the shop's live ads by day as the shop details chart them (the shop index's series, which indexActiveAds ends on; on the Free plan its main page's). nullReasons maps a null field's path to why it is null: not_shopify (sales and products are estimated for Shopify stores only), no_estimate, too_low (the data source's floor, not a figure), not_measured, eu_uk_only, no_ads (a shop with no Meta ad at all), rounded (a follower growth under the rounding of its counts), not_linked (no TikTok profile), not_on_tp (not_measured where the shop's profile carries neither a followers total nor a products count: it does not say), no_reviews, failed (not read this time: its Meta ad statistics when its ad overview could not be read, with meta.partial and a warning, its ads by country then counted as its search row gives them; such an answer is never served again from the cache). A sales estimate of 0 next to units sold is null (no_estimate), and so is one too low for its units sold at the shop's own prices (too_low): under a hundredth of the median price of its listed best sellers a unit sold (0.50 USD for a shop that lists none), or under a tenth of that price a unit sold while worth under five of its median-priced products, in the record and its sales history; extra.storeWide marks a domain with 0 visits that carries its Shopify store's sales (a measured 0 or one since its history went to 0, its visits null then, or a brand store of the same myshopify domain has the visits), extra.sharedSalesWith that brand store. traffic.growth30d is a fraction (-0.1543 is -15.4%) and traffic.history starts at the first month with visits. traffic.monthlyVisits is null for a site the data source has not measured yet (0 visits and no month with visits, not_measured) or no longer measures (0 since its history went to 0, next to a sales estimate and units sold: not_measured, its growth30d null too), traffic.growth30d when the month before had no visits (not_measured), and -1 (every visit lost) when the latest month has none after a month with visits. A social network's growth30d comes from its follower history when the data source gives 0 or none (null with less than 28 days of history, not_measured; null when two readings 30 days apart are equal and the counts are rounded coarser than 0.05%, rounded), and a network's 0 followers is null (not_measured); a network's followers and extra.followersTotal missing from the shop's profile are the followers overview's latest counts (the networks it counts, added up); extra.followersTotal is null when no network is counted (not_measured). catalog.mainCategory is the most specific category of the shop's category ids (the data source's own label only without them, and only when it is a category's name), catalog.categoryLeaves lists its categories as Parent > Leaf, and productsCountCapped marks the data source's ceiling (25,001: 25,000 or more); productsCountAtLeast marks a count raised to the best sellers it lists (the data source's count is behind them, or it has none); productsCount is null (not_measured) for a count of 0 with no product listed next to visits, a sales estimate or units sold, a count the data source has not made. A Trustpilot page with no review has a null rating. tiktok.matchedBy is null for the TikTok profile linked to the shop, socials for the followers of its own social profiles, handle for a profile found by its TikTok or Instagram handle (a match, not a link of the data source). Social networks with neither a handle nor followers are left out; socials.facebook.page is the main page when there is no handle, and a YouTube channel stored by its id has no handle: socials.youtube.channelId and url. similarShops leave out the shop itself and its own sites (the same name under another suffix or subdomain, the same myshopify domain, or one of its brand stores); extra.similarIndexed is false for a shop the similarity index does not hold yet. snapshotDate gives the profile, traffic and Meta ad figures of a past day (meta.snapshotDate); the sales estimate, products, apps and latest ads stay today's. advertising.launchedHistory is the ads launched each day on all the shop's pages, as extra.adsLaunched30d counts them. extra.googleAds carries the Google ads by country (ads and reach), network, targeting and format, with totalAds and newAds; extra.tabCounts counts its products and ads by kind and extra.trafficCountriesCount the countries its visits come from. linkedAdvertisers carry each page's totalAds, facebookLikes, profileUrl, createdAt and adLibraryUrl. catalog.bestSellers lists the shop's best sellers, each with imageUrl, title, price, currency, handle (the last part of its address on the shop, null when not known) and productUrl: its page on the shop's own site, the address the data source gives when it is on the shop's domain (or a subdomain of it) or its myshopify domain, else https://<domain>/products/<handle> when its handle is known, else null. Each best seller also has rank (1 is the best seller, as the shop details rank them). createdAt is a Shopify store's creation date: a site off Shopify has the day the data source began tracking it in trackedSince (createdAt null, nullReasons tracking_date), and a date on or before 2000-01-01, the data source's placeholder, is null (not_reported); profile.isHeadless marks a headless store and extra.updatedAt is the day the data source last read the shop. socials.x is the shop's X profile (socials.twitter is the same, its name before October 23, 2026); each network has url, its profile's address, and socials.others lists the other links (platform is the site's name, such as snapchat); a network's growth30d is the followers overview's 30-day change (a fraction). sales.hasSubscription says whether the shop sells subscriptions (null when not read). technology.apps carry appStoreUrl (the app's page on the Shopify App Store) and categories. extra.googleAds.reach is the shop's Google EU reach now, with lowerBound and upperBound (reported for ads shown in the EU only; null with not_reported when the data source reports none), reachHistory the same by week, history its Google ads marked active by week, updatedAt the day its Google figures were read and latestAds its latest Google ads. On paid plans advertising.summary has firstAdSeenAt, longestRunningDays, medianRunningDays, landingPagesCount and the changes over 30 days of its live ads, launched ads and EU reach (activeAdsChange30d, launchedChange30d, reachChange30d, and each as a fraction, ...Pct), every page's as the ad overview counts them (advertising.allPagesHistory), not its own pages' alone; advertising has runningDaysMix (its ads by days running), reachCountries (its EU reach by country, share a fraction), reachHistory (its EU reach by day), topLandingPages (with share and screenshotUrl), adsByAgeRange and adsByGender (in ads, shares as fractions); these are null on the Free plan, and failed when the ad statistics could not be read. advertising.allPagesHistory is every page's live ads by day, and advertising.topCountries[].ads its ads targeting each country. tiktok.profileMetrics.adsShare is percentAds as a fraction (percentAds is a percent, 0 to 100); tiktok.avatarUrl, history (the profile's posts, views and likes by day), postsChange30d and postsChange30dPct (a fraction) describe the linked profile; tiktok.activity.avgActiveAds7d and avgActiveAds30d average the shop's TikTok ads by day and tiktok.latestAds lists its latest TikTok ads.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
snapshotDate
A past day (YYYY-MM-DD): the profile, traffic and Meta ad figures as they were then.
Produk kedai. sortBy=popularity lists the best sellers the shop's details rank first (rank 1 is the best seller), then its other listed products, unranked (meta.order bestSellers); without that ranking the products are in the data source's order, unranked (meta.order listed). When the product lists are empty, the best sellers are the list (meta.source bestSellers). Every order lists the same products (the ranked best sellers, the other best sellers, then the newest products), each with its rank, once: a ranked best seller has the title, price and image of the shop record's catalog.bestSellers, and a best seller listed among the newest products too keeps its best seller's price and image. A best seller's price is the one the shop's best sellers list, which can be the lowest of its variants' prices; the other products have the price the products list reads, at times another variant's. meta.productsCountCapped marks the data source's ceiling (25,001: 25,000 or more), and meta.productsCountAtLeast a meta.productsCount raised to the products listed (the data source counts fewer). meta.productsCount is null for a count of 0 with no product listed next to visits, a sales estimate or units sold, a count the data source has not made, as on the shop record (meta.nullReasons.productsCount not_measured; not_shopify off Shopify). productUrl is the product's page on the shop's own site, as in the shop record's catalog.bestSellers: the address the data source gives when it is on the shop's domain (or a subdomain of it) or its myshopify domain, else https://<domain>/products/<handle> when its handle is known, else null (never an address on another site); handle is null when it is no single part of an address. When the shop's own domains could not be read this time, every productUrl is null, with meta.partial true. createdAt, publishedAt and updatedAt are UTC: the data source writes the shop's own clock, put in UTC with the shop's offset from UTC (meta.shopUtcOffset, such as -08:00, read from a product its shop details list too); when no offset can be read, the three are null (nullReasons local_time) and createdAtLocal, publishedAtLocal and updatedAtLocal give the shop's clock, without a zone. A best seller listed by the shop details only has their createdAt; its publishedAt and updatedAt are null (not_reported: the data source's are copies of the creation time). lists names the lists a product is in (bestSellers, newest) and listPosition its place among the best-selling products (1 to 100).
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
limit
Results per page, 1-100 (default 32).
offset
Results to skip.
sortBy
Defaults to popularity (best sellers first). Salah satu daripada: popularity, price, createdAt.
order
Sort direction: asc by default for popularity (best sellers first), desc for price and createdAt. Salah satu daripada: asc, desc.
snapshotDate
A past day (YYYY-MM-DD): the products as the shop listed them then, unranked.
Kedai serupa dengan id atau domain kedai. The shop itself and its own sites (the same name under another suffix or subdomain, the same myshopify domain, or one of its brand stores) are left out, and the page is filled from further down the list: offset and limit count the list without them, so pages never repeat or skip a shop. pagination.total is one total for every order and page: until the list is read to its end in some order, an estimate (pagination.totalEstimated true), the data source's count less the own sites the first read met; then the exact count. When the reads stop before the page fills (a list made mostly of the shop's own sites), the page holds what was found and meta.partial is true, with pagination.hasMore true: the next page reads on. similarityScore is null when the data source gives none. season, or seasonFrom and seasonTo, list the shops similar over a season (meta.season); filters, market and excludeShopIds narrow the full list. Each row's shop is the shop's search row with its extra (logo, Trustpilot, sales history; on the Free plan without its ad averages and TikTok and Google ad history), its createdAt a Shopify store's creation date (trackedSince for a site off Shopify), its catalog.bestSellers with handle, productUrl and rank. When the data source stops the list before its end, the page that reaches that point has meta.partial true and a warning.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
sortBy
Defaults to relevance. Salah satu daripada: relevance, monthlyVisits, activeAds, growth30d, productsCount, createdAt.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
offset
Results to skip.
limit
Results per page, 1-100 (default 32).
season
bfcm-YYYY: the shops similar over that Q4 season (November 1 to December 4).
seasonFrom
First day of a season (YYYY-MM-DD).
seasonTo
Last day of a season (YYYY-MM-DD).
filters
Shop filters of the full list, as a JSON object, such as {"minMonthlyVisits": 1000000}.
Halaman pengiklan yang dipaut pada kedai. Each page's live and total ads, likes, profile, creation date and ad library link. With the shop's page selector each page also carries shopAds and landingPages, and meta.domains lists the shop's domains with their ads, pages and landing pages. A landing page on the shop's own domain (or a subdomain of it) is toShop true, and when the data source's domains leave that domain out, it comes first with its pages' landing pages on it (fromLandingPages true: its counts are those of the landing pages listed, a lower bound; isShopify null). A page's shopAds is never fewer than the live ads of its landing pages that are toShop: a count of the data source's raised to them is marked shopAdsAtLeast true (a lower bound). With the selector each page also carries logoUrl (its picture), profileUrl (the ad overview's, else the selector's) and moreLandingPages (count and ads of its landing pages past those listed), and each domain landingPagesCount and moreLandingPages. The selector's further pages are read too, five reads at most.
Sejarah anggaran jualan. The data source estimates sales daily: period=week has one point per week (its Monday), period=month one per month, each the bucket's last daily estimate. An estimate of zero next to units sold is null.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
period
One point per day, week or month. Salah satu daripada: day, week, month.
Satu angka bagi beberapa kedai secara bersebelahan. The brand tracker's compare chart: each shop's value (googleLiveAds: the Google ads it runs, as the data source counts them; tiktokPosts: its TikTok posts; metaReach: its Meta reach) with its change (delta) when the data source gives one, in the order asked.
Parameter
Penerangan
shopIdswajib
1 to 10 shop ids or domains, comma-separated.
metricwajib
The figure compared. Salah satu daripada: googleLiveAds, tiktokPosts, metaReach.
Apl Shopify yang digunakan sesebuah kedai, mengikut alamatnya. Any store, tracked or not: each app's name, icon and a link to find it on the Shopify App Store. The store is read at its domain without www. (meta.url).
Sama ada kedai berjalan di Shopify, dan temanya. isShopify, theme and isHeadless (a storefront built apart from Shopify's themes). Any store, tracked or not, read at its domain without www. (url).
Iklan dan e-mel terkini sesebuah kedai. The newest Meta ads, Google ads, TikTok ads and emails of the shop (metaAds, googleAds, tiktok, emails), each with its total (totalExact false for a lower bound), as their searches show them. metaAds are the shop's own, as its ad searches list them: every ad of its own pages, and the ads of its other pages (creators, publishers and partners, who run other brands' ads too) that link to the shop or to a site on its domain; when such another ad is left out, metaAds.total counts the shop's own ads listed.
Musim Q4 sesebuah kedai, hari demi hari. November 1 to December 4 of the year, for the shop's main Facebook page (or advertiserIds): the Meta ads live and launched each day (those about Black Friday too), their reach, the creatives, landing pages and products launched, the season's sales (operations) and its best creatives, winners (each sale's key and its creatives), landing pages (url as the season's landing pages write it) and products as the data source lists them, empty when it lists none (the season's creatives lists every creative).
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
year
The season's year (default the latest begun).
euOnly
Only the ads shown in the EU and the UK. Salah satu daripada: true, false.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Halaman pendaratan musim Q4 sesebuah kedai. The season's landing pages by the date each appeared: url, ads, screenshotUrl, isBlackFriday and blackFridayStartedAt. meta.total counts them all.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
year
The season's year (default the latest begun).
euOnly
Only the ads shown in the EU and the UK. Salah satu daripada: true, false.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Kreatif musim Q4 sesebuah kedai. The season's creatives by the date each was launched: adId, hook, thumbnailUrl, mediaType, reach and isActive. meta.total counts them all.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
year
The season's year (default the latest begun).
euOnly
Only the ads shown in the EU and the UK. Salah satu daripada: true, false.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Cangkuk, transkrip, tajuk atau teks iklan kedai. The texts the ads of the shop's own pages use, or of those of its pages advertiserIds names. A hook, a headline and a transcript (fullText, with its hook) have usageCount, longestRunning, euReach, firstUsedAt, lastUsedAt and sampleAd; an ad copy has adCopy, usageCount, longestRunning and hash (the adCopyHashes filter of an ad search takes it).
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
kindwajib
The texts to list. Salah satu daripada: hook, transcript, headline, ad-copy.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
euOnly
Over the ads shown in the EU or the UK only.
sortBy
The order (default usageCount); an ad copy takes usageCount. Salah satu daripada: usageCount, longestRunning, totalImpressions, firstUsedAt, lastUsedAt.
order
Descending by default. Salah satu daripada: desc, asc.
timePeriod
The ads counted (default live); not with ad-copy. Salah satu daripada: live, last24h, last3d, last7d, last30d, last3m, last6m, last1y.
Halaman pendaratan kedai. The landing pages of the shop's Meta ads, the most used first, of all its pages or of those advertiserIds names: url, displayUrl, path, status, activeAds, ads (recorded), longestRunningDays, activeSince, screenshotUrl, reach (the EU and UK reach of its ads, null with nullReasons.reach), shareOfAds (a fraction), targetedCountries, snapshots (the days it was captured) and trend (its live ads day by day, its latest 30 days). meta.total counts them all.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Satu halaman pendaratan bagi iklan sesebuah kedai. landingPage (its ads, live ads, shareOfAds, best rank, reach, countries, technologies and snapshots, the days it was captured), linkedAds (the newest ads linking to it, as ad searches show them), linkedAdsTotal, shopActiveAds, linkedProducts, screenshots and snapshotDates. shareOfAds is linkedAdsTotal out of shopActiveAds (a fraction), null when the shop counts fewer. reach is the EU and UK reach of its ads, null when none is counted (nullReasons.reach no_eu_reach). meta.partial, with a warning, when some linked ads could not be read in full.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
urlwajib
The landing page's address.
limit
Linked ads, 1-50 (default 12).
snapshotDate
One of its snapshotDates (YYYY-MM-DD): its screenshots as they were then.
euOnly
Its figures over the ads shown in the EU or the UK only.
Halaman pendaratan bagi satu halaman Facebook sesebuah kedai. The pages the advertiser's ads send people to, the most used first: url, ads, activeAds and toShop (the shop's own site: one of the sites the data source counts as the shop's, or on the shop's own domain or a subdomain of it).
Iklan Meta sesebuah kedai disusun mengikut kedudukan dalam satu tempoh. The shop's ads as ad searches show them, ranked over the window (meta.from, meta.to): those of its own pages (its main page and its official pages named like it: the creators, publishers and partners among its pages run other brands' ads too), or of those of its pages advertiserIds names (meta.advertiserIds). Each row's rank.rankDelta and rank.improvementPct are its change over the window, as the rank series gives them: its end rank minus its start rank in the window, the series' start and end (negative when it moved up, as in every ad), and the fraction of its start rank gained.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
mode
best-rank (default): the best rank each reached; rank-delta: the places each gained. Salah satu daripada: best-rank, rank-delta.
days
The window, up to yesterday (default 7). Salah satu daripada: 7, 14, 30.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Iklan Meta kedai mengikut kedudukan, dengan penapis. As GET /v1/shops/{shopId}/ad-ranking: mode, days, advertiserIds, page and limit in the body, with euOnly (the ads shown in the EU or the UK, ranked among those) and the filters of POST /v1/ads/query.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
curl -X POST "https://api.sellwinners.com/v1/shops/allbirds.com/ad-ranking/query" \
-H "X-API-Key: YOUR_API_KEY"
GET/v1/shops/{shopId}/ad-ranking/series
Kedudukan harian beberapa iklan sesebuah kedai. Each ad's rank among the live ads of the ranking's pages (the shop's own pages, or those advertiserIds names) on the first and last day (start, end), observedDays, rankDelta (end.rank minus start.rank: negative when the ad moved up, as in its ranking row and every ad), improvementPct (the fraction of start.rank gained) and every day's rank (points).
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
adIdswajib
Up to 24 ad ids, comma-separated.
days
The window, up to yesterday (default 7). Salah satu daripada: 7, 14, 30.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Ujian kreatif sesebuah kedai, hari demi hari. The shop's Meta ads grouped by launch day, newest first: totalAds, activeAds, longRunningActiveAds (running a week or more after launch), isWinner, wasWinner, daysRunning and reach (min, avg, max, total), and asOf, to pass to the day's ads; the ads of its own pages (its main page and its official pages named like it), or of those of its pages advertiserIds names.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
mediaType
Defaults to all. Salah satu daripada: all, image, video.
status
Salah satu daripada: all, active, inactive.
keywords
Words in the ads, comma-separated.
keywordMode
Salah satu daripada: any, all.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Iklan bagi satu ujian kreatif sesebuah kedai. batch (the day's figures) and ads (the ads launched that day, as ad searches show them), of the shop's own pages or those advertiserIds names.
Parameter
Penerangan
shopIdwajib
Shop id or domain, such as allbirds.com.
datewajib
A day, as YYYY-MM-DD.
mediaType
Defaults to all. Salah satu daripada: all, image, video.
status
Salah satu daripada: all, active, inactive.
keywords
Words in the ads, comma-separated.
keywordMode
Salah satu daripada: any, all.
advertiserIds
Only these Facebook pages of the shop, comma-separated.
asOf
The asOf of the day's creative-test row (default the latest).
Seluruh pasaran, hari demi hari. Each day: metaActiveAds, metaNewAds, metaReach (the EU and UK reach the day's Meta ads gained) and emails. 366 days at most. The totals run a few weeks behind: meta.latestDate is the last day with totals.
Parameter
Penerangan
from
First day (YYYY-MM-DD; default 365 days before to).
Seluruh pasaran sepanjang musim Q4, hari demi hari. November 1 to December 4 (from and to may be any days inside it): bfcmContentIndex, shopsFirstBfcmMention, metaNewAds, metaNewBfcmAds, metaActiveBfcmAds, metaBfcmAdvertisers, metaBfcmReach, emails and bfcmEmails, day by day.
Kreatif iklan Facebook dan Instagram dengan media, capaian dan kedudukan.
GET/v1/ads
Cari iklan Meta. A search returns one ad per brand unless maxAdsPerBrand is raised (0: no cap); trackedPages (Facebook page ids) and websiteIds (shop ids) narrow it to those brands, with all their ads: a shop's are its own (every ad of its main page and of its official pages named like it, and the ads of its other pages, creators, publishers and partners who ran its ads, that link to the shop or to a site on its domain; trackedPages narrows the search to the pages it names; until the list is read to its end, its pagination.total is then the ads of the shop's own pages searched, an estimate, pagination.totalEstimated true, as the ads of its other pages that link to it add to them, or null when the search names none of its own pages). sortBy=longestRunning takes order=desc only; each batch of ads read from the data source is put in order of daysRunning (its own order can be a day off); sortBy=adRank lists the best rank (1) first, whatever the order. metrics.reach is EU reach: null for an ad not shown in the EU or the UK, with its spend (nullReasons eu_uk_only), and for an EU ad whose reach is not counted yet (not_measured). The ad's targeting decides: an ad that targets no EU or UK country is eu_uk_only, one that targets one, or whose targeting is not known yet, not_measured in its first 7 days and not_reported after. media.type is carousel for an ad of more than one image or video (the thumbnails of its videos aside). advertiser.instagramFollowers is null for a page with no Instagram account or none the data source knows. extra.startIsFloor marks an ad started on January 1, 2018, the first day of the data source's Meta ad dates: it may be older. metrics.estimatedSpend keeps two decimals under 10 USD (1.26) and is in whole dollars from 10 USD up. A row's reach is the ad index's reading, which can be a day behind the ad's record (GET /v1/ads/{adId}). A row's metrics.reachDelta1d, reachDelta7d and reachDelta30d are null beside a known reach when the data source lists none (nullReasons not_measured), except over a window the ad started in, where it gained all the reach its row reads; the ad's record reads them from its reach history. A row's rank.lastRank is the last rank of an ad not ranked now (rank.currentTotal and rank.lastRankedAt are null on rows: the ad's record has them); metrics.reachGrowth7d, the EU reach growth over 7 days as a fraction, is null beside a known reach when the data source lists none (nullReasons not_measured); advertiser.countryShares is where the page's ads run, each country with its share of the page's ads as a fraction (an ad targets several countries, so the shares can add up to more than 1). growthRank takes rising, stable or falling; ageRanges and excludeAgeRanges 13-17, 18-24, 25-34, 35-44, 45-54, 55-64 and 65+; minPageAdsLaunched and maxPageAdsLaunched count the ads the page launched over pageAdsLaunchedPeriod (yesterday, last7d, last14d, last30d, last90d); adsTimePeriod takes last7d, last14d or last30d; reachPeriod, spendPeriod, reachPerPagePeriod and spendPerPagePeriod last24h, last7d or last30d (no period: all time); shopifyStoresOnly keeps the ads of Shopify stores. Growth ranges are percentages over 30 days; adReachGrowth also takes min7 and max7 (7 days) and adsGrowth min90 and max90 (90 days).
Cari iklan Meta dengan penapis lanjutan. A search returns one ad per brand unless maxAdsPerBrand is raised (0: no cap); trackedPages (Facebook page ids) and websiteIds (shop ids) narrow it to those brands, with all their ads: a shop's are its own (every ad of its main page and of its official pages named like it, and the ads of its other pages, creators, publishers and partners who ran its ads, that link to the shop or to a site on its domain; trackedPages narrows the search to the pages it names; until the list is read to its end, its pagination.total is then the ads of the shop's own pages searched, an estimate, pagination.totalEstimated true, as the ads of its other pages that link to it add to them, or null when the search names none of its own pages). sortBy=longestRunning takes order=desc only; each batch of ads read from the data source is put in order of daysRunning (its own order can be a day off); sortBy=adRank lists the best rank (1) first, whatever the order. metrics.reach is EU reach: null for an ad not shown in the EU or the UK, with its spend (nullReasons eu_uk_only), and for an EU ad whose reach is not counted yet (not_measured). The ad's targeting decides: an ad that targets no EU or UK country is eu_uk_only, one that targets one, or whose targeting is not known yet, not_measured in its first 7 days and not_reported after. media.type is carousel for an ad of more than one image or video (the thumbnails of its videos aside). advertiser.instagramFollowers is null for a page with no Instagram account or none the data source knows. extra.startIsFloor marks an ad started on January 1, 2018, the first day of the data source's Meta ad dates: it may be older. metrics.estimatedSpend keeps two decimals under 10 USD (1.26) and is in whole dollars from 10 USD up. A row's reach is the ad index's reading, which can be a day behind the ad's record (GET /v1/ads/{adId}). A row's metrics.reachDelta1d, reachDelta7d and reachDelta30d are null beside a known reach when the data source lists none (nullReasons not_measured), except over a window the ad started in, where it gained all the reach its row reads; the ad's record reads them from its reach history. A row's rank.lastRank is the last rank of an ad not ranked now (rank.currentTotal and rank.lastRankedAt are null on rows: the ad's record has them); metrics.reachGrowth7d, the EU reach growth over 7 days as a fraction, is null beside a known reach when the data source lists none (nullReasons not_measured); advertiser.countryShares is where the page's ads run, each country with its share of the page's ads as a fraction (an ad targets several countries, so the shares can add up to more than 1). growthRank takes rising, stable or falling; ageRanges and excludeAgeRanges 13-17, 18-24, 25-34, 35-44, 45-54, 55-64 and 65+; minPageAdsLaunched and maxPageAdsLaunched count the ads the page launched over pageAdsLaunchedPeriod (yesterday, last7d, last14d, last30d, last90d); adsTimePeriod takes last7d, last14d or last30d; reachPeriod, spendPeriod, reachPerPagePeriod and spendPerPagePeriod last24h, last7d or last30d (no period: all time); shopifyStoresOnly keeps the ads of Shopify stores. Growth ranges are percentages over 30 days; adReachGrowth also takes min7 and max7 (7 days) and adsGrowth min90 and max90 (90 days).
Satu iklan Meta mengikut id. The full record: creative, copy, transcript and hook, spend, rank, linked shop and page history. metrics.reach is the ad's EU reach, the latest the data source reports (the record, its reach and spend figures, its reach and spend histories), and metrics.estimatedSpend the spend of that reach (two decimals under 10 USD, whole dollars from 10 USD up); both are null for an ad not shown in the EU or the UK (nullReasons eu_uk_only: reach is reported for those only), and for an EU ad whose reach is not counted yet (not_measured). The ad's targeting decides: an ad that targets no EU or UK country is eu_uk_only, one that targets one, or whose targeting is not known yet, not_measured in its first 7 days and not_reported after. metrics.reachDelta1d, reachDelta7d and reachDelta30d are the reach gained over those days, by date, while the ad's reach history is current (its last reading at most 2 days old), else null; an ad started inside the window gained all its reach in it, and a gain below that of fewer days is null; a gain that is null beside a known reach has nullReasons not_measured. Its reach and spend histories are read as one series, one reading a day (the higher on a day both read), the deltas and the reach chart too; a record's reach more than twice the last reading of a series that runs to the ad's last day is not this ad's alone, so that reading and its spend are taken, and extra.recordReach holds the record's (the figure ad listings show) and extra.recordSpend the spend of it. media and extra.medias are the ad's images and videos as its search row lists them: media.type is carousel for an ad of more than one; media.mediaUrl and thumbnailUrl fall back on its first listed file when the record has none. advertiser.reach30d is the page's EU reach over 30 days, as advertiser lists show it, and advertiser.totalReach is the page details' EU reach when the record has none, never below the last reading of pageAnalytics.reachHistory (extra.pageRecordReach then holds the record's total, the one advertiser lists show), and that reading while it is current (at most 2 days old), so the figure and the chart agree; null for a page with no reach reported. extra.advertiserTotalAds is the page's total ads (the record's, else its search row's or its advertiser row's; null with nullReasons not_measured when none counts them). pageAnalytics holds the page's EU reach so far (reachHistory; impressionsHistory is the same series), its Facebook likes and Instagram followers, day by day, from the day the page was created, without the readings the data source missed (a 0 of likes or followers between two readings above 0, or of a day it missed the page's other readings); it is null with meta.partial when the page's history could not be read. extra.spendHistory starts on the day the ad started, its spendUsd with two decimals under 10 USD as metrics.estimatedSpend. extra.reachScope and extra.pageReachScope say where most of the ad's reach (by extra.reachByCountry) and of its page's was seen: eu_uk, or outside_eu_uk (the data source reports the reach of some ads shown elsewhere too). shops holds the ad's shop when the record names it, by id or by domain; its traffic is null when the traffic data has not measured the site (nullReasons shops.traffic not_measured). extra.startIsFloor marks an ad started on January 1, 2018, the first day of the data source's Meta ad dates: it may be older. audience.gender, ageMin and ageMax and metrics.aggregatedReach are always null: the data source does not report them for one ad. For an ad whose website is not a shop (a messaging or social site, an app store, a redirect), shops is empty and extra.nonShopSite names the site; in ad listings extra.shop is left out then. rank.currentRank is the ad's rank in its rank history and rank.currentTotal the number of ads it is ranked among there (null with nullReasons not_reported when the data source gives none); extra.rankPopulation is the page's live ads the data source counts, not the ranked pool. rank.rankDelta and rank.improvementPct are the move over 7 days, as on list rows: the current rank minus the rank the history read 7 days before its last day (or the day before that), else the record's own 7-day figure, else null (nullReasons not_reported); negative means it moved up. rank.rankDelta14d is the move since rank.rankDelta14dSince (14 days back, later for an ad ranked for less) and rank.rankDelta3d the move since rank.rankDelta3dSince. An ad not ranked now has rank.lastRank, the last rank it held, and rank.lastRankedAt, the day of it (null when not known). metrics.reachGrowth7d is the EU reach growth over 7 days as a fraction (0.0075 is 0.75%), null while the reach history is not current (as the reach gained) and null beside a known reach with nullReasons not_measured. advertiser.estimatedSpend is the page's estimated spend so far and advertiser.avgDailySpend14d its average daily spend over 14 days (USD), both null with the reason of advertiser.totalReach when that one has one (eu_uk_only). advertiser.countryShares is where the page's ads run: each country with its share of the page's ads, a fraction (an ad targets several countries, so the shares can add up to more than 1), from the ad's search row when the record lists none. shops also holds the shop's logoUrl, trafficGrowth30d (a fraction, only beside monthly visits above 0, else null with nullReasons shops.trafficGrowth30d not_measured), trustpilot (rating and reviewCount, no rating beside 0 reviews; null when the data source has neither), productsCount (productsCountCapped at the data source's ceiling of 25,001: 25,000 or more) and linkedAds (the ads linking to the shop).
Halaman pendaratan yang digunakan oleh iklan sesebuah kedai atau halaman. Send exactly one of scopeDomain or scopeTrackedPages. With scopeTrackedPages a landing page's activeAdsCount is null (only a shop counts its live ads), so status must be all or left out (active or inactive is a 400); a page that could not be read sets meta.partial and meta.warnings.
Parameter
Penerangan
scopeDomain
A shop domain.
scopeTrackedPages
Up to 20 Facebook page ids, comma-separated.
status
Pages with running ads, without, or all (default all). Salah satu daripada: active, inactive, all.
limit
Results, 1-100 (default 100).
snapshotDate
A past day (YYYY-MM-DD), with scopeDomain: the shop's landing pages as they were then.
Teks iklan kedai. The ad texts of the shop's own pages, or of those advertiserIds names, the most used first, for the adCopyHashes filter of an ad search: id (the text's hash), name (its first characters), adCopy (all of it) and usageCount. meta.total counts them all.
Parameter
Penerangan
scopeDomainwajib
The shop's domain or id.
limit
Results, 1-100 (default 100).
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Rakan kongsi iklan kedai. The pages that run partnership ads with the shop's own pages, or with those advertiserIds names, those with the most live ads first, for the partnerIds filter of an ad search: id (the Facebook page id), name and usageCount (its live ads). meta.total counts them all.
Parameter
Penerangan
scopeDomainwajib
The shop's domain or id.
limit
Results, 1-100 (default 100).
advertiserIds
Only these Facebook pages of the shop, comma-separated.
Tulis hook iklan untuk produk. Three short opening lines for an ad of your product. niche (2 to 80 characters) and product (2 to 100) are required; angle is pain (the default), curiosity, social_proof, transformation or urgency; platform meta (Facebook and Instagram), tiktok or both (the default); language en (the default) or fr. regenerate, the text of one hook to write again, answers one new hook. Each call is one generation, a regenerate too: there is no monthly limit, and a few a minute at most (429 rate_limited with Retry-After). meta.allowance is what is left. Answers are never cached; idempotencyKey (8 to 64 letters, digits, - or _) makes a request sent again within 2 minutes get the first answer without being counted again. Nothing you send and no hook is stored.
Kuota hook iklan anda bulan ini. allowance: limit (null: no monthly limit, as on paid plans), used, remaining, resetsAt, perMinute and perDay (null on paid plans); enabled, and the angles, platforms and languages the writer takes. Not counted toward your monthly requests.
Cari iklan Google. Searches are ranked by relevance; sortBy applies when browsing without a search term. formats are text, image and video; networks are Search, YouTube, Shopping, Maps and Other. Each ad has media.type and media.format (text, image or video) and media.url, the ad's image (for a video ad, its thumbnail: there is no video file). transparencyUrl is the ad on Google's Ads Transparency Center, where a video ad plays (null without Google's ids for the ad). Excluded audience countries (excludeCountryCodes, audienceCountries.exclude) work only without included ones. hideNonEuUkAds keeps the ads shown in the EU or the UK. Growth ranges are percentages over 30 days. status is active only while Google shows the ad (unknown once it has not for more than 7 days), and status=active keeps the ads Google showed in those 7 days; status=inactive keeps the ads the data source marks stopped, so an unknown ad is under neither. daysRunning counts the days from firstSeenAt to lastSeenAt, both included, and minDaysRunning and maxDaysRunning keep the ads whose daysRunning is in range; extra.servedDays is the data source's own count, which goes on after an ad stops, so longestRunning is not a Google sort; sortBy=relevance with no search term lists the newest; sortBy=reach takes order=desc only. With status=active or a days-running bound, pagination.total is null, and a list where few ads match ends early (meta.partial). With status=active, sortBy=reach lists few ads: in reach order the first ads are mostly ones Google stopped showing, so sort by newest for the ads Google shows now (its warning says so). extra.startIsFloor marks an ad first seen on May 31, 2018, the first day of Google's ad data. audience.countries lists every country (a percentage only for one country). Google reports a reach for some of the ads shown in the EU only, often only as 10,000,000, the top of its scale (10 million or more): most ads have none, and nullReasons says why reach.value is null (not_reported: an ad shown in the EU that Google reports none for; eu_only: an ad shown elsewhere), except for a reach the plan leaves out. extra.networks is the data source's list of the ad's platforms. extra.shop.google holds the Google totals of the advertiser's website, without a 0 reach (never reported) and, when it counts no ad, without its 0 counts; extra.shop has no monthlyVisits for a site with no traffic data, and a trafficGrowth30d only beside visits above 0. network and extra.networks name a network search, youtube, shopping, maps, display or other (display since October 23, 2026: it read other before); network, the ad's main network, is never display, so networks=display is refused with a 400 that says so (the data source answers none for it). advertiser.transparencyUrl is the advertiser's page on Google's Ads Transparency Center (null without Google's id for it) and advertiser.totalAds.all the website's ads on every platform. extra.categories names extra.categoryIds (id and name). extra.shop adds the website's countryCode, productsCount, followersBy (facebook, instagram, tiktok), metaTotalAds and metaNewAds, and extra.shop.google the time its totals were read (recordedAt, UTC) and the bounds of each reach it keeps (totalReachLow, totalReachUp, weeklyReachLow, weeklyReachUp). meta.breakdown, read with the list's total (on the first page of a search; the pages after it reuse that total and carry none), gives the search's ads by status (the data source's active flag, as liveAds counts, not status), by format (text, image, video), by servedDays bucket (the days served, which go on after an ad stops), by country (the first 10) and by network. remarketing and interestTargeting keep the ads that target it (true) or do not (false); minAdvertiserReach and maxAdvertiserReach bound the EU reach of the advertiser behind the ad; websiteIds narrows to one brand's shop; marketCountries, mainMarketCountries, excludeMarketCountries, creationCountries, excludeCreationCountries, the products count, best seller price and shop creation bounds, and shopifyAppIds, themeIds and pixelIds (with their exclude names, ids from /v1/facets/*) filter the shop behind the ad.
Cari iklan Google dengan penapis. formats are text, image and video; networks are Search, YouTube, Shopping, Maps and Other. Each ad has media.type and media.format (text, image or video) and media.url, the ad's image (for a video ad, its thumbnail: there is no video file). transparencyUrl is the ad on Google's Ads Transparency Center, where a video ad plays (null without Google's ids for the ad). Excluded audience countries (excludeCountryCodes, audienceCountries.exclude) work only without included ones. hideNonEuUkAds keeps the ads shown in the EU or the UK. Growth ranges are percentages over 30 days. status is active only while Google shows the ad (unknown once it has not for more than 7 days), and status=active keeps the ads Google showed in those 7 days; status=inactive keeps the ads the data source marks stopped, so an unknown ad is under neither. daysRunning counts the days from firstSeenAt to lastSeenAt, both included, and minDaysRunning and maxDaysRunning keep the ads whose daysRunning is in range; extra.servedDays is the data source's own count, which goes on after an ad stops, so longestRunning is not a Google sort; sortBy=relevance with no search term lists the newest; sortBy=reach takes order=desc only. With status=active or a days-running bound, pagination.total is null, and a list where few ads match ends early (meta.partial). With status=active, sortBy=reach lists few ads: in reach order the first ads are mostly ones Google stopped showing, so sort by newest for the ads Google shows now (its warning says so). extra.startIsFloor marks an ad first seen on May 31, 2018, the first day of Google's ad data. audience.countries lists every country (a percentage only for one country). Google reports a reach for some of the ads shown in the EU only, often only as 10,000,000, the top of its scale (10 million or more): most ads have none, and nullReasons says why reach.value is null (not_reported: an ad shown in the EU that Google reports none for; eu_only: an ad shown elsewhere), except for a reach the plan leaves out. extra.networks is the data source's list of the ad's platforms. extra.shop.google holds the Google totals of the advertiser's website, without a 0 reach (never reported) and, when it counts no ad, without its 0 counts; extra.shop has no monthlyVisits for a site with no traffic data, and a trafficGrowth30d only beside visits above 0. network and extra.networks name a network search, youtube, shopping, maps, display or other (display since October 23, 2026: it read other before); network, the ad's main network, is never display, so networks=display is refused with a 400 that says so (the data source answers none for it). advertiser.transparencyUrl is the advertiser's page on Google's Ads Transparency Center (null without Google's id for it) and advertiser.totalAds.all the website's ads on every platform. extra.categories names extra.categoryIds (id and name). extra.shop adds the website's countryCode, productsCount, followersBy (facebook, instagram, tiktok), metaTotalAds and metaNewAds, and extra.shop.google the time its totals were read (recordedAt, UTC) and the bounds of each reach it keeps (totalReachLow, totalReachUp, weeklyReachLow, weeklyReachUp). meta.breakdown, read with the list's total (on the first page of a search; the pages after it reuse that total and carry none), gives the search's ads by status (the data source's active flag, as liveAds counts, not status), by format (text, image, video), by servedDays bucket (the days served, which go on after an ad stops), by country (the first 10) and by network. remarketing and interestTargeting keep the ads that target it (true) or do not (false); minAdvertiserReach and maxAdvertiserReach bound the EU reach of the advertiser behind the ad; websiteIds narrows to one brand's shop; marketCountries, mainMarketCountries, excludeMarketCountries, creationCountries, excludeCreationCountries, the products count, best seller price and shop creation bounds, and shopifyAppIds, themeIds and pixelIds (with their exclude names, ids from /v1/facets/*) filter the shop behind the ad.
Satu iklan Google mengikut id. The fields of a search row, with reachHistory (its reach, day by day), estimatedSpend, platformMix and advertiserDetails (Google's advertiser account behind the ad: its ads live, new and in total, its reach week by week, its top countries by ads and by reach, its networks). reachHistory joins the readings of the ad's details and of its reach history by date (the reach history's on a day both read). platformMix lists the networks the ad ran on: platform (named as network is: search, youtube, shopping, maps, display or other), label (Google's name), share (a fraction) and percentage (0 to 100, as before). audience.countries gives each country's reachLowerBound and reachUpperBound beside its reach when the data source reads them. advertiserDetails.transparencyUrl is the advertiser's page on Google's Ads Transparency Center; advertiserDetails.snapshot holds its totals as a website's Google totals are read (a 0 reach and, with no ad counted, the 0 counts left out; recordedAt in UTC; the bounds of each reach kept), with estimatedSpend (USD) and cpm, the CPM it was made at (spendUsd and cpmUsd, their earlier names, stay for one release); advertiserDetails.platformMix names each network as platformMix does, with its label, ads, adsEu, share and percentage.
Parameter
Penerangan
adIdwajib
Google ad id from a Google ad search (google_CR...).
Cari iklan dan siaran TikTok. Searches are ranked by relevance; sortBy applies when browsing without a search term. websiteId (a shop id) and domain narrow to one shop: its TikTok profiles, or for a shop with none, the posts linking to the shop or its stores on its domain. websiteIds in filters means the posts linking to those websites. mediaType is video or carousel; categories are the data source's category names, in any case; hashtags are taken with or without the #. Growth ranges are percentages over 30 days. In each row, metrics.engagementRate is (likes + comments + shares + saves) / views as a fraction (0.0513 is 5.13%), daysRunning the days since the post was published, and metrics.rank its rank among its creator's posts (1 is the best; rankPercent the same rank as a percent of the creator's posts). profile.followers is null when the data source has not counted them, and content.category is null for its catch-all All. metrics.views, and the likes and saves that read 0 beside them, are null with nullReasons not_measured (engagementRate too) when the data source sent 0 views next to likes, comments, shares or saves above 0, or fewer views than likes: it has not counted the post; sortBy=views or likes with order=asc lists the posts whose views are counted, from the first TikToks on: a view or more (minViews 1) and no fewer views than likes (the posts not counted are left out of these two orders only; pagination.total is an estimate, totalEstimated, until the list is read to its end). A row the data source sends with no views or likes (and no reason) takes the post's counts from its own record (GET /v1/tiktok/library/{itemId}) once that was read, all of one reading (metrics.countsFromPost true). sortBy=longestRunning starts at the first TikToks (August 31, 2016, 22:00 UTC): the data source's older rows are not real posts. publishedAt is UTC. The filters agree with it: publishedAfter and publishedBefore are UTC (a date alone is the start of its day, and publishedBefore lists the posts before it), and minDaysRunning and maxDaysRunning count from the UTC day, as daysRunning does. media.mediaUrl of a video post is its cover image (the same file as media.thumbnailUrl in most rows), never its video: media.videoUrl is the video. media.durationSec is null when the data source reads 0 (every carousel). profile.adsShare is the share of the profile's posts that are ads, a fraction (profile.percentAds is the same share as the data source's percent, 0 to 100). shop.monthlyVisits is null with nullReasons not_measured for a linked shop the data source reads 0 visits (and 0 growth) for, and shop.trafficGrowth30d is kept only beside visits above 0 (else null with nullReasons not_measured); shop.categories names shop.googleCategoryIds (id and name). sortBy=rank lists the best rank (1) first, whatever the order. GET /v1/tiktok/facets/categories lists the categories the categories filter takes. profileCreatedAfter and profileCreatedBefore bound the profile's creation, minProfileAdsShare and maxProfileAdsShare the percent of its posts that are ads (0 to 100), minProfilePosts and maxProfilePosts its posts; marketCountries, mainMarketCountries, excludeMarketCountries, creationCountries, excludeCreationCountries, minTraffic, maxTraffic, the products count, best seller price and shop creation bounds, and shopifyAppIds, themeIds and pixelIds (with their exclude names, ids from /v1/facets/*) filter the shop the post links to.
Cari iklan dan siaran TikTok dengan penapis. websiteId (a shop id) and domain narrow to one shop: its TikTok profiles, or for a shop with none, the posts linking to the shop or its stores on its domain. websiteIds in filters means the posts linking to those websites. mediaType is video or carousel; categories are the data source's category names, in any case; hashtags are taken with or without the #. Growth ranges are percentages over 30 days. In each row, metrics.engagementRate is (likes + comments + shares + saves) / views as a fraction (0.0513 is 5.13%), daysRunning the days since the post was published, and metrics.rank its rank among its creator's posts (1 is the best; rankPercent the same rank as a percent of the creator's posts). profile.followers is null when the data source has not counted them, and content.category is null for its catch-all All. metrics.views, and the likes and saves that read 0 beside them, are null with nullReasons not_measured (engagementRate too) when the data source sent 0 views next to likes, comments, shares or saves above 0, or fewer views than likes: it has not counted the post; sortBy=views or likes with order=asc lists the posts whose views are counted, from the first TikToks on: a view or more (minViews 1) and no fewer views than likes (the posts not counted are left out of these two orders only; pagination.total is an estimate, totalEstimated, until the list is read to its end). A row the data source sends with no views or likes (and no reason) takes the post's counts from its own record (GET /v1/tiktok/library/{itemId}) once that was read, all of one reading (metrics.countsFromPost true). sortBy=longestRunning starts at the first TikToks (August 31, 2016, 22:00 UTC): the data source's older rows are not real posts. publishedAt is UTC. The filters agree with it: publishedAfter and publishedBefore are UTC (a date alone is the start of its day, and publishedBefore lists the posts before it), and minDaysRunning and maxDaysRunning count from the UTC day, as daysRunning does. media.mediaUrl of a video post is its cover image (the same file as media.thumbnailUrl in most rows), never its video: media.videoUrl is the video. media.durationSec is null when the data source reads 0 (every carousel). profile.adsShare is the share of the profile's posts that are ads, a fraction (profile.percentAds is the same share as the data source's percent, 0 to 100). shop.monthlyVisits is null with nullReasons not_measured for a linked shop the data source reads 0 visits (and 0 growth) for, and shop.trafficGrowth30d is kept only beside visits above 0 (else null with nullReasons not_measured); shop.categories names shop.googleCategoryIds (id and name). sortBy=rank lists the best rank (1) first, whatever the order. GET /v1/tiktok/facets/categories lists the categories the categories filter takes. profileCreatedAfter and profileCreatedBefore bound the profile's creation, minProfileAdsShare and maxProfileAdsShare the percent of its posts that are ads (0 to 100), minProfilePosts and maxProfilePosts its posts; marketCountries, mainMarketCountries, excludeMarketCountries, creationCountries, excludeCreationCountries, minTraffic, maxTraffic, the products count, best seller price and shop creation bounds, and shopifyAppIds, themeIds and pixelIds (with their exclude names, ids from /v1/facets/*) filter the shop the post links to.
Satu item TikTok mengikut id. profile.latestAds are the creator's latest ads by their cover (thumbnailUrl): a post's mediaUrl is its video when the data source lists one, else null (nullReasons mediaUrl not_reported; the post's own record carries its video). profile.latestAds are the profile's latest ads, as the data source lists them (profile.latestPosts, their earlier name, holds the same rows for one release). profile.followersDelta is null with nullReasons not_measured when profile.followers is null (the data source's change is from its 0). metrics.deltaRank3d, deltaRank7d, deltaRank14d, deltaRank30d and deltaRankPercent7d come from the post's search row when its record has none (the latest row a search showed, kept 30 days); deltaRank7d is null with nullReasons not_reported when neither has it. The fields of a search row read as GET /v1/tiktok/library describes them (media, profile.adsShare, the linked shop).
Item TikTok bagi satu kedai. The posts of the shop's TikTok profiles, or for a shop with none, the posts linking to the shop or its stores on its domain.
Kreatif sedia dipaparkan: URL imej dan video pada CDN kami.
GET/v1/media
Kreatif iklan sebagai media sedia dipaparkan. images are the ad's images and videos its videos, each with its posterUrl: the thumbnail of the same creative (its itemOrder), else the ad's thumbnailUrl; a video's thumbnail is never listed under images. A search returns one ad per brand unless maxAdsPerBrand is raised (0: no cap); trackedPages (Facebook page ids) and websiteIds (shop ids) narrow it to those brands, with all their ads: a shop's are its own (every ad of its main page and of its official pages named like it, and the ads of its other pages, creators, publishers and partners who ran its ads, that link to the shop or to a site on its domain; trackedPages narrows the search to the pages it names; until the list is read to its end, its pagination.total is then the ads of the shop's own pages searched, an estimate, pagination.totalEstimated true, as the ads of its other pages that link to it add to them, or null when the search names none of its own pages). sortBy=longestRunning takes order=desc only; each batch of ads read from the data source is put in order of daysRunning (its own order can be a day off); sortBy=adRank lists the best rank (1) first, whatever the order. metrics.reach is EU reach: null for an ad not shown in the EU or the UK, with its spend (nullReasons eu_uk_only), and for an EU ad whose reach is not counted yet (not_measured). The ad's targeting decides: an ad that targets no EU or UK country is eu_uk_only, one that targets one, or whose targeting is not known yet, not_measured in its first 7 days and not_reported after. media.type is carousel for an ad of more than one image or video (the thumbnails of its videos aside). advertiser.instagramFollowers is null for a page with no Instagram account or none the data source knows. extra.startIsFloor marks an ad started on January 1, 2018, the first day of the data source's Meta ad dates: it may be older. metrics.estimatedSpend keeps two decimals under 10 USD (1.26) and is in whole dollars from 10 USD up. A row's reach is the ad index's reading, which can be a day behind the ad's record (GET /v1/ads/{adId}). A row's metrics.reachDelta1d, reachDelta7d and reachDelta30d are null beside a known reach when the data source lists none (nullReasons not_measured), except over a window the ad started in, where it gained all the reach its row reads; the ad's record reads them from its reach history. A row's rank.lastRank is the last rank of an ad not ranked now (rank.currentTotal and rank.lastRankedAt are null on rows: the ad's record has them); metrics.reachGrowth7d, the EU reach growth over 7 days as a fraction, is null beside a known reach when the data source lists none (nullReasons not_measured); advertiser.countryShares is where the page's ads run, each country with its share of the page's ads as a fraction (an ad targets several countries, so the shares can add up to more than 1). growthRank takes rising, stable or falling; ageRanges and excludeAgeRanges 13-17, 18-24, 25-34, 35-44, 45-54, 55-64 and 65+; minPageAdsLaunched and maxPageAdsLaunched count the ads the page launched over pageAdsLaunchedPeriod (yesterday, last7d, last14d, last30d, last90d); adsTimePeriod takes last7d, last14d or last30d; reachPeriod, spendPeriod, reachPerPagePeriod and spendPerPagePeriod last24h, last7d or last30d (no period: all time); shopifyStoresOnly keeps the ads of Shopify stores. Growth ranges are percentages over 30 days; adReachGrowth also takes min7 and max7 (7 days) and adsGrowth min90 and max90 (90 days).
Media sedia dipaparkan dengan penapis lanjutan. images are the ad's images and videos its videos, each with its posterUrl: the thumbnail of the same creative (its itemOrder), else the ad's thumbnailUrl; a video's thumbnail is never listed under images.
A media file (public, no key needed). Serves an image or video. These URLs appear in API responses and can be used directly in web pages. Add ?w=96 or ?w=480 for a smaller WebP copy of a JPEG, PNG, WebP or GIF image (never made larger, without the original's metadata); an animation, a smaller image or a video is sent as it is. Add ?w=full for the image at its own size as WebP, sent when it saves at least a tenth of the file (otherwise the original is sent).
Parameter
Penerangan
keywajib
File key, as found in a media URL.
w
96 or 480: an image is sent at that width at most, as WebP, its aspect kept (96 for thumbnails, 480 for cards). full: at its own width and height, as WebP, when that is lighter (a record's own creative). Without it, the original file. Salah satu daripada: 96, 480, full.
Cari pengiklan. searchType domain is the same as urlContains: URLs containing the text, so gymshark.com also finds pages linking to it. sex (men, women, unknown) is the audience of the page's ads; technologies takes a slug, a name or an id from /v1/facets/technologies. Growth ranges (adsGrowth, pageReachGrowth, trafficGrowth) are percentages over 30 days (adsGrowth also takes min14 and max14, over 14 days, and trafficGrowth min90 and max90, over 90 days; a rule's period may be last14d or last90d the same way). excludeAgeRanges leaves out age buckets of the page's ads (13-17 to 65+, as ageRanges takes them). shopCreatedAfter, shopCreatedBefore, creationCountries, excludeCreationCountries, marketCountries, mainMarketCountries, excludeMarketCountries, minProductsCount, maxProductsCount, and themeIds and shopifyAppIds (with their exclude names, ids from /v1/facets/*) filter the shop the page advertises. extra.domain is null when the page's website is not a shop (an app store, a social site, a link shortener). sortBy=reach ranks by the total reach since tracking began (extra.totalReach), newAds by the new ads of 14 days (extra.newAds14d) and followers by the Facebook likes and Instagram followers together; minReach and maxReach bound the total reach. Reach is EU and UK reach: advertising.reach30d, extra.reach14d, reach90d and totalReach are null for a page with no EU or UK ads and no reach (nullReasons eu_uk_only), or for a window the data source has not counted (not_measured); a page created inside a window has all its reach in it, and a row that reads no EU reach next to page details that read some has their reach, as its record does. The new-ads counts of a page created inside the window count every one of its ads, and where the data source has not computed the average live ads, those of a page created inside the window are the mean of its live ads read since its first day (extra.averagedFrom: the first day read), those of an older page null (extra.adsGrowth30d is null then). profile.instagramFollowers is null for a page with no Instagram account or none the data source knows. Shares are fractions: extra.euAdsShare is the share of the page's live ads shown in the EU or UK (0.0831 for 8.31%), extra.reachGrowth30d the growth of its EU reach over 30 days; extra.adCountries lists its live ads by target country ({countryCode, ads, share}) and extra.reachCountries its reach by country ({countryCode, impressions, share}), as its record has them. extra.newAds1d counts the ads it launched yesterday. mainLandingPages is empty on rows: the record has them (extra.mainLandingPages).
Words to match: every field unless searchType narrows it (brand is the page name).
searchType
What the search text is matched against: brand is the page name. Without it, the text is matched like all. Salah satu daripada: brand, adCopy, websiteCopy, urlContains, domain, all.
country
2-letter ISO country code.
sortBy
Defaults to relevance when searching, otherwise newest. Salah satu daripada: relevance, newest, activeAds, newAds, reach, reach14d, growth30d, followers, euAdsShare.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
Cari pengiklan dengan penapis. searchType domain is the same as urlContains: URLs containing the text, so gymshark.com also finds pages linking to it. sex (men, women, unknown) is the audience of the page's ads; technologies takes a slug, a name or an id from /v1/facets/technologies. Growth ranges (adsGrowth, pageReachGrowth, trafficGrowth) are percentages over 30 days (adsGrowth also takes min14 and max14, over 14 days, and trafficGrowth min90 and max90, over 90 days; a rule's period may be last14d or last90d the same way). excludeAgeRanges leaves out age buckets of the page's ads (13-17 to 65+, as ageRanges takes them). shopCreatedAfter, shopCreatedBefore, creationCountries, excludeCreationCountries, marketCountries, mainMarketCountries, excludeMarketCountries, minProductsCount, maxProductsCount, and themeIds and shopifyAppIds (with their exclude names, ids from /v1/facets/*) filter the shop the page advertises. extra.domain is null when the page's website is not a shop (an app store, a social site, a link shortener). sortBy=reach ranks by the total reach since tracking began (extra.totalReach), newAds by the new ads of 14 days (extra.newAds14d) and followers by the Facebook likes and Instagram followers together; minReach and maxReach bound the total reach. Reach is EU and UK reach: advertising.reach30d, extra.reach14d, reach90d and totalReach are null for a page with no EU or UK ads and no reach (nullReasons eu_uk_only), or for a window the data source has not counted (not_measured); a page created inside a window has all its reach in it, and a row that reads no EU reach next to page details that read some has their reach, as its record does. The new-ads counts of a page created inside the window count every one of its ads, and where the data source has not computed the average live ads, those of a page created inside the window are the mean of its live ads read since its first day (extra.averagedFrom: the first day read), those of an older page null (extra.adsGrowth30d is null then). profile.instagramFollowers is null for a page with no Instagram account or none the data source knows. Shares are fractions: extra.euAdsShare is the share of the page's live ads shown in the EU or UK (0.0831 for 8.31%), extra.reachGrowth30d the growth of its EU reach over 30 days; extra.adCountries lists its live ads by target country ({countryCode, ads, share}) and extra.reachCountries its reach by country ({countryCode, impressions, share}), as its record has them. extra.newAds1d counts the ads it launched yesterday. mainLandingPages is empty on rows: the record has them (extra.mainLandingPages).
Satu pengiklan mengikut id. Its reach is EU and UK reach, the advertiser search's own (the numbers advertiser lists show): advertising.reach30d, extra.reach14d and extra.totalReach (since tracking began); a page created inside a window has all its reach in it. A row's 0 next to page details that read EU reach is not a page with none: extra.totalReach is their reach so far. For a page with no EU or UK ads and no reach these and the estimates made from them are null, and nullReasons says why (eu_uk_only; not_measured for a window the data source has not counted). Its USD estimates are its reach at 9 USD per 1,000 people reached, with two decimals under 10 USD (1.26 for a reach of 140) and in whole dollars from 10 USD up. Its 14-day daily average, for a page created inside the 14 days, is its estimate so far over the whole days since it was created (one at least). extra.newAds7d, newAds14d and newAds30d count every ad of a page created inside the window. extra.avgActiveAds14d is the average of its live ads over 14 days: where the data source has not computed it, for a page created inside the 14 days the mean of its live ads read since its first day, from extra.averagedFrom.avgActiveAds14d (never before the day the page was created), else null (not_measured). advertising.countryDistribution is the page's live ads that target each country (ads) and their share of its live ads (an ad targets several, so the shares add up to more than 1), and extra.reachCountries the countries with reach, each with its share of it (one too small for 4 decimals unrounded, never 0); extra.reachScope says where most of that reach was seen: eu_uk, or outside_eu_uk for a page the data source reports the reach of from elsewhere too (its reach and the estimates made from it are then that reach, not EU reach). extra.history starts on the day the page was created and leaves out the readings the data source missed (a run of zeros of 14 days or fewer between two readings above 0; for the daily estimates, on days the page ran ads), and the new ads of 0 of the days it missed; extra.followersHistory leaves out a 0 between two readings above 0 or of such a day. The daily USD estimates of extra.history keep two decimals under 10 USD, read against the reach the page gained that day. extra.platforms.meta holds this page's own live (active) and total ads; extra.platforms.google and tiktok count the ads of the advertiser's website (all its pages), and extra.platforms.metaSite its Meta ads, each left out when the data source has no count. extra.bannerUrl, newAds1d (the new ads of yesterday), reach90d, newAds90d, avgActiveAds7d and avgActiveAds30d, linkedDomains, hasPartnershipAds and languages are those of the page's advertiser row, as advertiser lists show them. A page whose live ads are fewer than the live ads among its 24 newest ads (copies grouped) has a stale summary: advertising.activeAds and the new ads of yesterday, 7, 14, 30 and 90 days under what those ads show are raised to that floor, and extra.atLeast names the counters raised (none for a past day). For a page whose website is not a shop (an app store, a social or messaging site, a link shortener or a tracking redirect), extra.nonShopSite names that site and extra.platforms is left out (its counts are the site's), and linkedShops holds the shop most of its ads link to, from its landing pages (fromLandingPages true), or nothing. extra.mainLandingPages are the preview of its landing pages for a page the library has just seen. lastAds are its newest ads; for a page whose ads the ad search has not taken in yet, the latest ones its advertiser row lists (their id and media only), with meta.indexing true (also when it lists none yet); lastAds is empty, with meta.partial and a warning, when its newest ads could not be read. profile.instagramFollowers is null for a page with no Instagram account or none the data source knows. snapshotDate (a past day) gives the page's details as they were then (meta.snapshotDate).
Parameter
Penerangan
advertiserIdwajib
Facebook page id of an advertiser or ad.
snapshotDate
A past day (YYYY-MM-DD): the page's details as they were then.
Iklan aktif harian dan capaian EU bagi satu pengiklan. The page's live ads and the EU reach it gained, one reading a day, over the days asked (days: 7-3650, default 90; all: every reading the data source has), from the day the page was created. reach is empty when the data source reports none: nullReasons.reach is eu_uk_only for a page with no EU or UK ads (reach is reported for those only), not_measured for a page whose reach is not counted yet. The readings of 0 of a page with no EU ad now that gained reach before the days asked are kept (it gained none). Readings the data source missed are left out: a run of zeros of 14 days or fewer between two readings above 0 (for reach, on days the page ran ads).
Parameter
Penerangan
advertiserIdwajib
Facebook page id of an advertiser or ad.
days
How many days back, 7-3650 (default 90), or all for every reading.
Iklan Meta bagi satu pengiklan. All of its ads, the copies of one ad grouped in one row (metrics.duplicates counts them), so pagination.total counts the unique ads. sortBy=longestRunning takes order=desc only; sortBy=adRank lists the best rank (1) first, whatever the order. For a page whose ads the ad search has not taken in yet (a page the library has just seen), the first page is the latest ads its advertiser row lists (their id and media only), with meta.indexing true and meta.liveAds its live ads; with none listed yet the first page is empty, meta.indexing true all the same (meta.liveAds the live ads its page details count, for a page with no advertiser row yet).
Parameter
Penerangan
advertiser_idwajib
Facebook page id of an advertiser or ad.
sortBy
Defaults to relevance when searching, otherwise newest. Salah satu daripada: relevance, newest, reach, reachGrowth7d, reachDelta7d, longestRunning, duplicates, spend, adRank, rankDelta7d, rankDelta14d, rankDelta30d, createdAt, relevanceScore, mostDuplicates, adOrder.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
Cari e-mel jenama. Without a campaign type (type, campaignTypes), Newsletter and Marketing emails are listed. Campaign types, categories, promotion types and events are the data source's names, in any case. Market countries (country, countries, amongMarketCountries) are any of the shop's: emails have no main market. shopIds takes shop ids or domains. A sentBefore date means before that day. A row's extra.shopMonthlyVisits and shopTrafficGrowth30d are left out for a site the traffic data has not measured yet (0 visits with a growth of 0 or none: nullReasons not_measured); extra.shopProductsCountCapped marks the data source's products ceiling (25,001: 25,000 or more); extra.shopAvgActiveAds7d, shopAvgActiveAds14d, shopAvgActiveAds30d, shopTotalAds, shopMarketCountries and shopMainMarket are the shop's figures. Growth ranges are percentages over 30 days (adsGrowth also takes min7 and max7, over 7 days). GET /v1/emails/facets/{facet} lists the values of the languages, countries, creationCountries, promotionTypes, eventNames, categories and campaignTypes filters with their emails.
Campaign type, in any case (default: Newsletter and Marketing). Salah satu daripada: Marketing, Newsletter, Welcome, Abandoned Cart.
country
2-letter ISO code of a country the shop sells to (any of its market countries).
sortBy
Defaults to relevance when searching, otherwise newest. Salah satu daripada: relevance, newest, event, promotionType, activeAds, emails90d, avgEmailsPerWeek, oldest, shopEmailFrequency.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
Cari e-mel jenama dengan penapis. Without a campaign type (type, campaignTypes), Newsletter and Marketing emails are listed. Campaign types, categories, promotion types and events are the data source's names, in any case. Market countries (country, countries, amongMarketCountries) are any of the shop's: emails have no main market. shopIds takes shop ids or domains. A sentBefore date means before that day. A row's extra.shopMonthlyVisits and shopTrafficGrowth30d are left out for a site the traffic data has not measured yet (0 visits with a growth of 0 or none: nullReasons not_measured); extra.shopProductsCountCapped marks the data source's products ceiling (25,001: 25,000 or more); extra.shopAvgActiveAds7d, shopAvgActiveAds14d, shopAvgActiveAds30d, shopTotalAds, shopMarketCountries and shopMainMarket are the shop's figures. Growth ranges are percentages over 30 days (adsGrowth also takes min7 and max7, over 7 days). GET /v1/emails/facets/{facet} lists the values of the languages, countries, creationCountries, promotionTypes, eventNames, categories and campaignTypes filters with their emails.
Satu e-mel mengikut id. classification names the email's promotion type, category and event. The shop's monthly visits, live ads, products and 90-day figures are those the email lists show (shopEmails90d, shopAvgEmailsPerWeek), the same as the shop's email stats; marketing.activeAds is null for a 0 with no ad total (nullReasons not_measured), and marketing.avgActiveAds7d, avgActiveAds14d and avgActiveAds30d are the shop's average live ads the lists show. traffic.monthlyVisits and growth30d are null for a site the traffic data has not measured yet (0 visits with a growth of 0 or none: nullReasons not_measured). catalog.productsCountCapped marks the data source's products ceiling (25,001: 25,000 or more). shop.logoUrl is the shop's picture. extra.sender and content.preheader are those of the email's own row in the email lists (its details send neither): with no row for it, the sender is null with nullReasons not_reported. When the shop's figures could not be read they are null with nullReasons failed, meta.partial and a warning; so is the sender when the email's row could not be read.
Statistik penghantaran e-mel sesebuah kedai. The figures count the shop's emails of every campaign type (Marketing, Newsletter, Welcome and Abandoned Cart). last90Days.emailsByDayOfWeek is keyed by the day's number as the data source counts the days: 0 is Sunday, 1 Monday, up to 6, Saturday. last90Days.totalEmails and avgEmailsPerWeek are the figures the email lists show (shopEmails90d, shopAvgEmailsPerWeek), null when no email of the shop is tracked (nullReasons none_found) or the figures could not be read (meta.partial); calendar.partial marks a month cut at 500 emails.
Produk kedai bersama harga, jualan, ulasan, iklan dan capaian EU.
GET/v1/products
Cari atau semak imbas produk. Each product has its price in the store's currency (`pricing.price`, `pricing.currency`) and in US dollars (`pricing.priceUsd`), `pricing.basePrice`, `discountPercent`, `onSale` and `isSubscription`; its sales estimates in whole US dollars (`sales.estDailySales`, and `sales.estMonthlySales`, 30 times the day) and its units sold a day (`sales.unitsSoldDaily`; `unitsSoldMonthly`, 30 times the day); its reviews (`reviews.rating`, null with no review, and `reviews.count`) and best-seller rank (`bestSeller.rank`, its place among its shop's products, 1 the best, and `rankPercent`, that place as a percent of the shop's products: 100 times the rank over `shop.productsCount`, so a low figure is a better rank); its Meta ads (`advertising.activeAds`, `totalAds`, `adsLaunched30d`, `adShare` and `spendShare` (percents, 0 to 100, as the minAdShare and minSpendShare filters take them, unlike the fractions of the other share fields), `advertisersCount`, and its latest ads, `advertising.latestAds`, each with its `id`, `platform`, `mediaType`, `mediaUrl` and `thumbnailUrl`, and their pictures, `advertising.previewUrls`), its EU reach (`eu.reach14d`, `reach30d`) and its EU spend in US dollars (`eu.spend30d`, `spendDaily`); its weeks (`weeks`, oldest first, up to 26: each with its `from` and `to` days, `activeAds`, `adShare` (a percent), and the EU spend a day in US dollars and reach a day, `euSpendDaily` and `euReachDaily`); the countries it sells to (`sellingCountries`), its launch date (`publishedAt`, UTC) and its shop (`shop.id`, `domain`, `name`, `logoUrl`, `estMonthlySales`, `monthlyVisits`, `productsCount`). `nullReasons` says why a figure is null: not_measured, or not_available for EU figures the index does not give on a product. `searchType` matches the text against the product's name (productName), its description (productDescription), its shop's domain (shop) or its address (url); without it, the index's own match. Named filters: minPriceUsd and maxPriceUsd (the price in USD); minEstMonthlySales and maxEstMonthlySales (the sales estimate of a month in USD, 30 times the day), or minEstDailySales and maxEstDailySales (a day's, sent as 30 days of it); minUnitsSoldMonthly and maxUnitsSoldMonthly (units sold in a month), or minUnitsSoldDaily and maxUnitsSoldDaily (a day's, sent as 30 days of it); sellingCountries (country codes: a product that sells to any of them); minActiveAds and maxActiveAds; minAdsLaunched and maxAdsLaunched (Meta ads launched in the last 30 days); minAdShare and maxAdShare, minSpendShare and maxSpendShare (percents); minEuReach and maxEuReach (the EU reach over 30 days); hasPartnershipAds (true or false); minReviews and maxReviews (the number of reviews), minRating and maxRating (the review score, 0 to 5); publishedAfter and publishedBefore (the launch day, YYYY-MM-DD); promoTypes (percent-off); currencies (the store's currency codes); subscription (subscription or one-time); shopCountries (the shop's country codes); minShopProductsCount and maxShopProductsCount (the shop's products). `shop` (one shop's domain or id) lists that shop's products only, with no search text. Also: excludeSellingCountries and mainSellingCountries (country codes); shopVisitorCountries (the countries its shop's visitors come from); minShopMonthlyVisits and maxShopMonthlyVisits; minShopTrafficGrowth30d and maxShopTrafficGrowth30d (a percent, which may be negative); adsLaunchedPeriod (the window of minAdsLaunched and maxAdsLaunched: 7d, 14d, 30d, the default, or all); minEuAdSpend and maxEuAdSpend (US dollars over 30 days); shopCreatedAfter and shopCreatedBefore (YYYY-MM-DD); shopifyAppIds, themeIds and pixelIds (ids from the filter lists). Other names of the same filters: minPrice, maxPrice, minMonthlyRevenue, maxMonthlyRevenue, minMonthlyUnitsSold, maxMonthlyUnitsSold, minReviewCount, maxReviewCount, partnership, shopId.
Words to match: the product's name unless searchType says otherwise.
searchType
What the text is matched against (shop: the shop's domain; url: the product's address). Without it, the index's own match. Salah satu daripada: productName, productDescription, shop, url.
sortBy
Defaults to relevance. newest ranks by the launch date (createdAt is the same), activeAds by live Meta ads, spend by EU ad spend over the last 30 days, estSales by the sales estimate, adPressure by the ad share, and bestSelling by the best seller rank in its shop (rank 1 first whatever the order). Salah satu daripada: relevance, newest, activeAds, spend, estSales, bestSelling, adPressure, createdAt.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
Cari produk dengan penapis. Body: query (or search), searchType, sortBy, order, page or offset, limit, and the named filters at the top level or inside filters, as on GET /v1/products. Each product has its price in the store's currency (`pricing.price`, `pricing.currency`) and in US dollars (`pricing.priceUsd`), `pricing.basePrice`, `discountPercent`, `onSale` and `isSubscription`; its sales estimates in whole US dollars (`sales.estDailySales`, and `sales.estMonthlySales`, 30 times the day) and its units sold a day (`sales.unitsSoldDaily`; `unitsSoldMonthly`, 30 times the day); its reviews (`reviews.rating`, null with no review, and `reviews.count`) and best-seller rank (`bestSeller.rank`, its place among its shop's products, 1 the best, and `rankPercent`, that place as a percent of the shop's products: 100 times the rank over `shop.productsCount`, so a low figure is a better rank); its Meta ads (`advertising.activeAds`, `totalAds`, `adsLaunched30d`, `adShare` and `spendShare` (percents, 0 to 100, as the minAdShare and minSpendShare filters take them, unlike the fractions of the other share fields), `advertisersCount`, and its latest ads, `advertising.latestAds`, each with its `id`, `platform`, `mediaType`, `mediaUrl` and `thumbnailUrl`, and their pictures, `advertising.previewUrls`), its EU reach (`eu.reach14d`, `reach30d`) and its EU spend in US dollars (`eu.spend30d`, `spendDaily`); its weeks (`weeks`, oldest first, up to 26: each with its `from` and `to` days, `activeAds`, `adShare` (a percent), and the EU spend a day in US dollars and reach a day, `euSpendDaily` and `euReachDaily`); the countries it sells to (`sellingCountries`), its launch date (`publishedAt`, UTC) and its shop (`shop.id`, `domain`, `name`, `logoUrl`, `estMonthlySales`, `monthlyVisits`, `productsCount`). `nullReasons` says why a figure is null: not_measured, or not_available for EU figures the index does not give on a product. `searchType` matches the text against the product's name (productName), its description (productDescription), its shop's domain (shop) or its address (url); without it, the index's own match. Named filters: minPriceUsd and maxPriceUsd (the price in USD); minEstMonthlySales and maxEstMonthlySales (the sales estimate of a month in USD, 30 times the day), or minEstDailySales and maxEstDailySales (a day's, sent as 30 days of it); minUnitsSoldMonthly and maxUnitsSoldMonthly (units sold in a month), or minUnitsSoldDaily and maxUnitsSoldDaily (a day's, sent as 30 days of it); sellingCountries (country codes: a product that sells to any of them); minActiveAds and maxActiveAds; minAdsLaunched and maxAdsLaunched (Meta ads launched in the last 30 days); minAdShare and maxAdShare, minSpendShare and maxSpendShare (percents); minEuReach and maxEuReach (the EU reach over 30 days); hasPartnershipAds (true or false); minReviews and maxReviews (the number of reviews), minRating and maxRating (the review score, 0 to 5); publishedAfter and publishedBefore (the launch day, YYYY-MM-DD); promoTypes (percent-off); currencies (the store's currency codes); subscription (subscription or one-time); shopCountries (the shop's country codes); minShopProductsCount and maxShopProductsCount (the shop's products). `shop` (one shop's domain or id) lists that shop's products only, with no search text. Also: excludeSellingCountries and mainSellingCountries (country codes); shopVisitorCountries (the countries its shop's visitors come from); minShopMonthlyVisits and maxShopMonthlyVisits; minShopTrafficGrowth30d and maxShopTrafficGrowth30d (a percent, which may be negative); adsLaunchedPeriod (the window of minAdsLaunched and maxAdsLaunched: 7d, 14d, 30d, the default, or all); minEuAdSpend and maxEuAdSpend (US dollars over 30 days); shopCreatedAfter and shopCreatedBefore (YYYY-MM-DD); shopifyAppIds, themeIds and pixelIds (ids from the filter lists). Other names of the same filters: minPrice, maxPrice, minMonthlyRevenue, maxMonthlyRevenue, minMonthlyUnitsSold, maxMonthlyUnitsSold, minReviewCount, maxReviewCount, partnership, shopId.
Dapatkan produk. One product as a search returns it, with `detail`: its photos, options and variants from the store's own page. `productId` is a row's `ref`.
Parameter
Penerangan
productIdwajib
The product's `ref`, as a product search returns it.
Search shops by image. The shops selling what a picture shows, the most active advertisers first, each with its closest products; a brand's storefronts come back as one row with `otherStorefronts`. Costs 4 credits per shop returned.
Parameter
Penerangan
image
The picture: a PNG, JPG or WEBP file of 10 MB at most.
imageUrl
Or a direct image URL (http or https).
searchId
Reads the next shops of an earlier search, without sending the picture again.
groupBrands
One row per brand, with its other storefronts (true by default).
productsPerShop
The closest products on each row (1-10, default 3).
Cari produk mengikut imej. Body: multipart/form-data. Store products that look like the picture, each with its shop, the closest first: a product row as the product search answers it (GET /v1/products), with `similarity` (0.7 to 1, how close it is to the picture) and `matchOnly` (true for a match the product index has no record of: its title, picture, price, launch date and shop only, its figures null). `maxPerShop` keeps the closest 1, 3, 5, 10 or 20 matches of each shop (0, the default: all). Pages of 32 at most (`limit`), by `page` or `offset`. `meta.searchId` is the search's id: GET /v1/products/image-search/{searchId} reads its other pages, sorts, filters and results per shop without sending the picture again (the same matches: `meta.total` does not change with the sort). `meta.queryImage` is a small copy of the picture (a data URI), `meta.depthCapped` marks a list that ends before its total (narrow it with filters), `meta.similarityThreshold` the lowest similarity answered. The picture is written again before it is searched (as a JPEG without its metadata) and a URL is downloaded by us, never passed on. Errors: 400 invalid_image (not a PNG, JPG or WEBP file, or over 10 MB), 400 unsupported_url (not an http or https URL, or a private or local address), 422 unreadable_image (a file that does not decode, or a URL that does not download), 504 upstream_timeout. Each search is counted as one request, a replay too; answers are never cached. On Free, image search is ranked by relevance with no filters, as the plan's policy says.
Parameter
Penerangan
image
The picture: a PNG, JPG or WEBP file of 10 MB at most (or send imageUrl).
imageUrl
A direct image URL (http or https), downloaded by us (or send image).
filters
A JSON object of the product search's named filters (each may also be a field of its own).
sortBy
Defaults to relevance (the closest matches first). Salah satu daripada: relevance, estSales, activeAds, adPressure, newest, spend, spend14d.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
maxPerShop
The closest matches of each shop: 0 (all, the default), 1, 3, 5, 10 or 20.
Carian imej terbaharu anda. Your own image searches, newest first: searchId (to read it again), kind (upload or url), label (the file's name or the URL's host and file), total (the matches it found), createdAt and queryImage (a small copy of the picture, a data URI). Only the searches of your account are listed.
Baca semula carian imej. Another page, sort, filter or results per shop of one of your image searches, without sending the picture again; a search of another account, or one that has expired, answers 404 not_found. Store products that look like the picture, each with its shop, the closest first: a product row as the product search answers it (GET /v1/products), with `similarity` (0.7 to 1, how close it is to the picture) and `matchOnly` (true for a match the product index has no record of: its title, picture, price, launch date and shop only, its figures null). `maxPerShop` keeps the closest 1, 3, 5, 10 or 20 matches of each shop (0, the default: all). Pages of 32 at most (`limit`), by `page` or `offset`. `meta.searchId` is the search's id: GET /v1/products/image-search/{searchId} reads its other pages, sorts, filters and results per shop without sending the picture again (the same matches: `meta.total` does not change with the sort). `meta.queryImage` is a small copy of the picture (a data URI), `meta.depthCapped` marks a list that ends before its total (narrow it with filters), `meta.similarityThreshold` the lowest similarity answered. The picture is written again before it is searched (as a JPEG without its metadata) and a URL is downloaded by us, never passed on. Errors: 400 invalid_image (not a PNG, JPG or WEBP file, or over 10 MB), 400 unsupported_url (not an http or https URL, or a private or local address), 422 unreadable_image (a file that does not decode, or a URL that does not download), 504 upstream_timeout. Each search is counted as one request, a replay too; answers are never cached. On Free, image search is ranked by relevance with no filters, as the plan's policy says.
Parameter
Penerangan
searchIdwajib
The searchId an image search answered (meta.searchId).
filters
A JSON object of the product search's named filters.
sortBy
Defaults to relevance. Salah satu daripada: relevance, estSales, activeAds, adPressure, newest, spend, spend14d.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
Kategori e-mel, jenis promosi dan acara. The ids taken by emailCategoryIds, promotionTypeIds and eventIds, and the event categories taken by eventCategories, in email searches.
Format iklan Google. The values the formats filter of a Google search takes (text, image, video), each with the ads it counts (adsCount), most first. On paid plans, as Google ads are.
Status iklan Google. The values the status filter of a Google search takes (active, inactive), each with the ads the data source counts for it (adsCount): an ad it still marks active that Google has not shown for more than 7 days counts as active here, though status=active leaves it out. On paid plans, as Google ads are.
Kategori TikTok. The names the categories filter of a TikTok search takes, as the data source spells them. Each row has value, label and postsCount (the posts the category counts), most first. On paid plans, as TikTok is.
Bahasa TikTok. The names the languages filter of a TikTok search takes (english). Each row has value, label and postsCount (the posts it counts), most first. On paid plans, as TikTok is.
Negara TikTok. The two-letter codes the countries filter of a TikTok search takes. Each row has value, label and postsCount (the posts it counts), most first. On paid plans, as TikTok is.
Jenis kandungan TikTok. The content types of TikTok posts (ad, organic: the type filter). Each row has value, label and postsCount (the posts it counts), most first. On paid plans, as TikTok is.
Jenis media TikTok. The media types of TikTok posts (video, carousel: the mediaType filter). Each row has value, label and postsCount (the posts it counts), most first. On paid plans, as TikTok is.
Nilai penapis e-mel. The values an email filter takes, each with the emails it counts (emails), most first: languages (the names the languages filters take), countries (the shop's market countries), creationCountries (the country the shop was created in), promotionTypes, eventNames, categories and campaignTypes (the data source's names). On paid plans, as emails are.
Parameter
Penerangan
facetwajib
The list: languages, countries, creationCountries, promotionTypes, eventNames, categories or campaignTypes.
Nilai penapis untuk carian kedai. The values the shop search's raw filters take (countryCodes, visitorCountryCodes, activeAdsRanges, productRanges, shopifyApps, shopifyThemes), each {value, label, count}, read once an hour; meta.shopsTracked is the number of shops the data source tracks. On paid plans.
Nilai penapis untuk carian pengiklan. The values the advertiser search's audience filters take: ageRanges, sexes, languages and countryCodes, each {value, label, count} (the pages counted), most first. On paid plans, as advertisers are.
Cari semua yang anda simpan. Searches your boards and favorites (a favorite is kept on a board) in what each saved copy shows on every plan: a shop's name, domain and category; a Meta ad's page name, title, text, landing page domain and call to action lines; a Google ad's advertiser, shop and domain; an email's subject, preview line, shop name and domain; a product's title and its shop's name and domain. Every item also matches its own id and the name of its board, a favorites board by the name the website shows (Favorites: Ads, Favorites: Shops, Favorites: Emails). A TikTok post or an advertiser is saved by its id, so it matches on that and on its board. q may be left out when sourceType, boardId, savedFrom or savedTo is given. Each row is the board item with its board (id, name, displayName, surface, visibility, isSystem, archivedAt) and a label (the shop's name, the ad's page and title, the Google advertiser, the email's subject). include=item adds the saved copy as it is stored, and copySavedOnFree: true for a copy saved on the Free plan that you now see on a paid plan; it lacks what Free hides (an ad's reach and spend, for one) until the board's items are read with include=item, which reads it again. The matches come from your 10,000 most recently saved items that pass the filters; meta.scanned is how many it looked at and meta.capped is true when there were more. It only reads what you saved and is never cached.
Parameter
Penerangan
q
Words to find, 2 to 120 characters. Every word must appear, in any order; case and accents are ignored.
sourceType
Only these kinds, comma-separated: meta_ad, google_ad, tiktok, shop, email, advertiser, product.
boardId
Only the items of this board (a folder board: of every board inside it).
scope
Defaults to all. Salah satu daripada: all, workspace, personal.
state
The state of the item's board. Defaults to active. Salah satu daripada: active, archived, all.
savedFrom
Saved on or after this day (YYYY-MM-DD).
savedTo
Saved on or before this day (YYYY-MM-DD).
sortBy
Defaults to savedAt. Salah satu daripada: savedAt, name.
order
Defaults to desc for savedAt and asc for name. Salah satu daripada: desc, asc.
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 25).
include
item adds the saved copy of each record. Salah satu daripada: item.
Tambah item pada papan. sourceType is meta_ad, google_ad, tiktok, shop, email, advertiser or product (a product is saved as a search last showed it). Adding an item twice returns the existing one with created: false.
Simpan iklan kegemaran. Body: scope, adId and optionally folderId and sourceType (meta_ad by default; google_ad or tiktok saves a Google ad or a TikTok post by its id). Each saved ad names its adId and sourceType. Saving the same ad twice returns the saved one with created: false.
Semak susunan folder iklan kegemaran. Folders have no stored order: the list is checked and echoed back sorted by order. The answer carries reordered: true.
Parameter
Penerangan
scopewajib
Which favorites: shared with the workspace or personal. Salah satu daripada: workspace, personal.
Semak susunan folder kedai kegemaran. Folders have no stored order: the list is checked and echoed back sorted by order. The answer carries reordered: true.
Parameter
Penerangan
scopewajib
Which favorites: shared with the workspace or personal. Salah satu daripada: workspace, personal.
Semak susunan folder e-mel kegemaran. Folders have no stored order: the list is checked and echoed back sorted by order. The answer carries reordered: true.
Parameter
Penerangan
scopewajib
Which favorites: shared with the workspace or personal. Salah satu daripada: workspace, personal.
Carian yang anda simpan pada halaman senarai laman web, mengikut halaman.
GET/v1/views
Senaraikan paparan tersimpan anda. Each view has its name, its state (the page's query string, as the website writes it), request (the search it makes: search, searchType, sortBy, order and the named filters, as the search endpoints take them) and ui (the page's own choices: a date preset such as last30 is worked out from today on the page, while the filters hold the days it had when the view was saved), in the order you gave them. On the Free plan, listed where the plan includes reading or saving saved items. Our own data: the data source is never asked.
Parameter
Penerangan
context
Only this list page's views. Defaults to every page. Salah satu daripada: shops, meta, tiktok, google, advertisers, emails, products.
Simpan paparan. Body: context (shops, meta, tiktok, google, advertisers, emails, products), name (1 to 60 characters, one per name on a page) and state (the page's query string: search, searchType, sortBy, order, view, the named filters as f.<name> or f.<name>.<key>, and the page's choices as v.<id>; 16,000 characters at most). Every filter is checked as the page's search checks it. 50 views per page. On the Free plan, open where it includes saving to boards and favorites, and on a page whose search it has in full (Meta ads).
Jejaki jenama dan baca laporan tentang iklan, kreatif dan halaman pendaratan mereka.
GET/v1/brandtrackers
Senaraikan jenama yang dijejak. A counter the source could not give is null, with nullReasons (failed, not_measured; totalTraffic: not_measured, also for a site not measured yet, which reads 0, or no_shop for a page with no shop) and, when a read failed, meta.partial. Sorting puts unknown values last. totalTraffic is read again once a day. advertising.activeAds here is the page's daily count; one tracked brand with a shop reads its shop's newest count (the one its charts end on), so the two can differ. A 0 of advertising.newAdsLastDay beside launches in the last 7 days is checked against the shop's launches of yesterday: their count, or null (not_measured) when there is no reading of that day. At most 20 brands are checked a call, those of the page asked for (sorted by newAdsLastDay or with hasNewAdsSince of yesterday, the first 20 in tracked order, newest first); the others are null (not_measured).
Parameter
Penerangan
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 20).
name
Only brands whose name or domain contains this text, or with this page id.
hasNewAdsSince
Only brands with new ads since this date, such as 2026-09-30.
sortBy
Salah satu daripada: newAdsLastDay, newAdsLast7Days, newAdsLast30Days, activeAds, totalTraffic, name, createdAt.
folderIds
Only these folders, comma-separated; none: the brands in no folder.
Jejak jenama. Body: exactly one of facebookPageId, websiteId, shopId or domain, and optionally folderId. Tracking a brand twice returns the existing tracker with created: false (a shop tracked before through another of its pages too). A shop is followed through its own Facebook page running the most ads (its main page on a tie; never a partner's Whitelisting page).
Satu jenama yang dijejak. statistics.euData.reach30d and estimatedSpend30d cover the last 30 days (reach and estimatedSpend are the lifetime totals; a spend keeps two decimals under 10 USD and is in whole dollars from 10 USD up); a count the source does not send is null and nullReasons says why (eu_uk_only, not_measured, failed, no_shop). liveAdCount.activeCount and advertising.activeAds are one count, the one the brand's charts end on; pageProfile.runningAds is the page details' own count. advertising.newAdsLastDay is checked as on the list. statistics.urlCounts lists the landing pages of statistics.urlCount with their live ads ({url, ads, activeAds}); statistics.changes30d holds the changes over 30 days of its live ads, the ads it launched and its EU reach, each with its change as a fraction (activeAdsChange30d, activeAdsChange30dPct, launchedChange30d, launchedChange30dPct, reachChange30d, reachChange30dPct); statistics.firstAdSeenAt, longestRunningDays and medianRunningDays say how long its ads run, and statistics.targetCountries lists the countries its live ads target ({countryCode, ads, share}); these are null (or empty) for a brand with no shop.
Paparan papan pemuka bagi sesuatu jenama. Graph, media mix, top landing pages, top ads and the newest ads of a brand in one answer. A part that could not be read is null, with meta.partial and meta.warnings; meta.dataFreshnessLagDays is the age in days of the newest ad, given when the brand launched ads after it (0 otherwise: a brand that stopped launching is not a lag).
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Iklan sesuatu jenama. Newest first by default; then, with no filter (status and EU ads only included), meta.latestAdDate is the start of the brand's newest ad in the library and meta.dataFreshnessLagDays its age in days when the brand launched ads after it (the library can be a day or two behind the live counters), 0 otherwise. The first page of the ads of one ad text (adCopyHashes) has both too, since a text's count in ad-copies is of today's live ads; with status active, meta.stoppedCount is the number of its stopped ads.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 20).
sortBy
Defaults to newest. Salah satu daripada: newest, longestRunning, reach, duplicates, relevance, reachDelta7d, currentRank, rankDelta7d, rankDelta14d, rankDelta30d, spend.
status
Running or stopped ads. Salah satu daripada: active, inactive, all.
mediaType
Creative type. Salah satu daripada: image, video, dco, carousel, dpa.
keywords
Words in the ad copy.
createdAfter
Launched on or after this date, such as 2026-09-01.
createdBefore
Launched on or before this date.
minDaysRunning
Running for at least this many days.
maxDaysRunning
Running for at most this many days.
minDuplicates
At least this many copies of the ad.
maxDuplicates
At most this many copies of the ad.
adLanguage
Language of the ad.
cta
Call to action.
adCopyHashes
Ad text ids from the ad-copies report, comma-separated.
adCountries
Countries the ads run in, comma-separated.
mainCountries
Main country of the ads, comma-separated.
partners
true: only partnership ads. Salah satu daripada: true, false.
partnerIds
Only ads with these partner pages (Facebook page ids), comma-separated.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Bilangan dan julat tarikh garis masa sesuatu jenama. totalIsExact is false when totalCount is a lower bound; totalCount is null when the source sends no total.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
status
Running or stopped ads. Salah satu daripada: active, inactive, all.
mediaType
Creative type. Salah satu daripada: image, video, dco, carousel, dpa.
keywords
Words in the ad copy.
createdAfter
Launched on or after this date, such as 2026-09-01.
createdBefore
Launched on or before this date.
minDaysRunning
Running for at least this many days.
maxDaysRunning
Running for at most this many days.
minDuplicates
At least this many copies of the ad.
maxDuplicates
At most this many copies of the ad.
adLanguage
Language of the ad.
cta
Call to action.
adCopyHashes
Ad text ids from the ad-copies report, comma-separated.
adCountries
Countries the ads run in, comma-separated.
mainCountries
Main country of the ads, comma-separated.
partners
true: only partnership ads. Salah satu daripada: true, false.
partnerIds
Only ads with these partner pages (Facebook page ids), comma-separated.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Iklan sesuatu jenama, mengikut kedudukan. metrics.totalReach is the ad's EU reach: null for an ad shown outside the EU and the UK (nullReasons metrics.totalReach eu_uk_only) or an EU ad not counted yet (not_measured), and last in a reach sort.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
sortBy
Defaults to currentRank. Salah satu daripada: currentRank, rankDelta, rankDelta7d, rankDelta14d, rankDelta30d, reach, reachDelta7d, daysRunning, duplicates.
status
Defaults to active. Salah satu daripada: active, inactive, all.
includeInactive
Also rank stopped ads. Salah satu daripada: true, false.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Iklan sesuatu jenama yang naik kedudukan. Ads that gained rank over a window, with their rank history. Each row's ranks come from that history: metrics.currentRank is its reading of the day the ad library's rank was read (the rank Top ads shows; the library can be a day behind the history), else its newest reading, the trajectory ends on that day, metrics.previousRank is the reading of the day the window starts, metrics.rankDelta the previous rank minus the current one (positive: places gained) and metrics.improvementPct the fraction of the previous rank gained (0.875 is 87.5%). With no reading that day (an ad's rank history can start after a 14 or 30-day window does), previousRank is the rank of the oldest reading inside the window and metrics.since its day, and meta.windowNote says so; a figure that cannot be given is null with nullReasons not_measured. The ad library's first 50 ads (by its own count of rank gained, or by rank) are ranked again by these figures: an ad that gained less than minRankDelta, or ranks below maxCurrentRank, by them is left out (an ad whose rank history gives no gain, by the ad library's own count), pagination covers the ads kept, and meta.rankNote says what was read and left out (across brands too, for every brand read).
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
timeWindow
Defaults to last7d. Salah satu daripada: last7d, last14d, last30d.
sortBy
Defaults to rankDelta. Salah satu daripada: rankDelta, currentRank.
Ujian kreatif sesuatu jenama. Ads grouped by the day they were launched, from the 400 newest ads. A batch is a winner when one of its ads is still running a week or more after launch. Its reach and days stats cover the ads whose value is known (null when none is, and then bestPerformerId is null too, with nullReasons stats.reach: eu_uk_only when every ad of the batch was shown outside the EU and the UK, not_measured when one of its ads is not counted yet, else no_eu_reach: none of its ads has an EU or UK reach reported); partial is true on the oldest batch when the 400-ad read stopped inside it.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
status
Running or stopped ads. Salah satu daripada: active, inactive, all.
mediaType
Creative type. Salah satu daripada: image, video, dco, carousel, dpa.
keywords
Words in the ad copy.
createdAfter
Launched on or after this date, such as 2026-09-01.
createdBefore
Launched on or before this date.
minDaysRunning
Running for at least this many days.
maxDaysRunning
Running for at most this many days.
minDuplicates
At least this many copies of the ad.
maxDuplicates
At most this many copies of the ad.
adLanguage
Language of the ad.
cta
Call to action.
adCopyHashes
Ad text ids from the ad-copies report, comma-separated.
adCountries
Countries the ads run in, comma-separated.
mainCountries
Main country of the ads, comma-separated.
partners
true: only partnership ads. Salah satu daripada: true, false.
partnerIds
Only ads with these partner pages (Facebook page ids), comma-separated.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Hook yang digunakan sesuatu jenama untuk membuka videonya. totalImpressions is the EU and UK reach of the ads using it (people reached, not impressions: the old name, kept), and euReach the same figure under its name: both null when none of them has any counted (nullReasons no_eu_reach; not_measured with euOnly or when it is not sent), and last in its sort. firstUsedAt and lastUsedAt are the launch days of the first and the newest ad using it (a text still live has its newest launch there, not a day it stopped). pagination.total is the data source's count of the texts; a brand with more than 1,000 lists its first 1,000 (read 200 at a time), with meta.partial and a warning.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
timePeriod
Which ads to read (default live). Salah satu daripada: live, last24h, last3d, last7d, last30d, last3m, last6m, last1y.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
sortBy
Defaults to usageCount. Salah satu daripada: usageCount, longestRunning, totalImpressions, firstUsedAt, lastUsedAt.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Skrip video sesuatu jenama. totalImpressions is the EU and UK reach of the ads using it (people reached, not impressions: the old name, kept), and euReach the same figure under its name: both null when none of them has any counted (nullReasons no_eu_reach; not_measured with euOnly or when it is not sent), and last in its sort. firstUsedAt and lastUsedAt are the launch days of the first and the newest ad using it (a text still live has its newest launch there, not a day it stopped). pagination.total is the data source's count of the texts; a brand with more than 1,000 lists its first 1,000 (read 200 at a time), with meta.partial and a warning. Each transcript has its hook: the opening line the data source reads in it (null without one).
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
timePeriod
Which ads to read (default live). Salah satu daripada: live, last24h, last3d, last7d, last30d, last3m, last6m, last1y.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
sortBy
Defaults to usageCount. Salah satu daripada: usageCount, longestRunning, totalImpressions, firstUsedAt, lastUsedAt.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Tajuk utama iklan sesuatu jenama. totalImpressions is the EU and UK reach of the ads using it (people reached, not impressions: the old name, kept), and euReach the same figure under its name: both null when none of them has any counted (nullReasons no_eu_reach; not_measured with euOnly or when it is not sent), and last in its sort. firstUsedAt and lastUsedAt are the launch days of the first and the newest ad using it (a text still live has its newest launch there, not a day it stopped). pagination.total is the data source's count of the texts; a brand with more than 1,000 lists its first 1,000 (read 200 at a time), with meta.partial and a warning. Headlines carry what hooks do: firstUsedAt, lastUsedAt, sampleAd and the reach of their ads.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
timePeriod
Which ads to read (default live). Salah satu daripada: live, last24h, last3d, last7d, last30d, last3m, last6m, last1y.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
sortBy
Defaults to usageCount. Salah satu daripada: usageCount, longestRunning, totalImpressions, firstUsedAt, lastUsedAt.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Halaman pendaratan sesuatu jenama. Every Facebook page of the brand's shop counts. totalImpressions is the EU and UK reach of the ads using it (people reached, not impressions: the old name, kept), and euReach the same figure under its name: both null when none of them has any counted (nullReasons no_eu_reach; not_measured with euOnly or when it is not sent), and last in its sort. Each page has its live ads (activeAds), its first live day (activeSince), its status, shareOfAds (the share of the brand's live ads linking to it, a fraction), reachByCountry ({countryCode, reach}) and targetedCountries. On a past day (snapshotDate) the pages as they were then, the day in meta.snapshotDate.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
sortBy
Defaults to usageCount. Salah satu daripada: usageCount, longestRunning, totalImpressions.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
Halaman pendaratan sesuatu jenama, dikumpulkan mengikut halaman. Query strings, fragments, trailing slashes and a leading www. are ignored when grouping.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
sortBy
Defaults to usageCount. Salah satu daripada: usageCount, activeAdsCount.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
Teks iklan sesuatu jenama dari semasa ke semasa. Ads using each ad text, day by day. Built from a daily record that starts the day the brand is tracked. A series has a point for every recorded day of the range: 0 on a day the text was not used, null on a day that kept only its most used texts. A day whose live ads read under a tenth of the days on both sides of it (2 or 3 such days in a row too; the newest day stays as read), or that recorded far fewer texts than the days on both sides of it (or none, beside live ads), is left out (meta.periodNote says so); meta.recordedDays counts the days.
Tajuk utama sesuatu jenama dari semasa ke semasa. Ads using each headline, day by day. Built from a daily record that starts the day the brand is tracked. A series has a point for every recorded day of the range: 0 on a day the text was not used, null on a day that kept only its most used texts. A day whose live ads read under a tenth of the days on both sides of it (2 or 3 such days in a row too; the newest day stays as read), or that recorded far fewer texts than the days on both sides of it (or none, beside live ads), is left out (meta.periodNote says so); meta.recordedDays counts the days.
Halaman pendaratan sesuatu jenama dari semasa ke semasa. Each page's readings by day. The days the data source read the brand's live ads wrong (under a tenth of the days on both sides of them) are left out of every page, and so is a page's own reading under a tenth of its readings on both sides; meta.periodNote counts them and, when the history is behind (meta.dataFreshnessLagDays), says up to which day it reaches.
Rakan kongsi yang menjalankan iklan untuk sesuatu jenama. Each partner page once. isOwnPage is true for a page of the brand's own shop (its main page, or an official page named like the brand: creators who run its partnership ads can be ranked official too) and for a page named as the brand. reach and estimatedSpend are null when the source has not measured them, with nullReasons not_measured in the 7 days after the partner's launchDate and no_eu_reach after (no EU or UK reach counted for its ads).
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
page
Page number, starting at 1.
limit
Results per page, 1-50 (default 20).
sortBy
Defaults to activeAds. Salah satu daripada: activeAds, launchDate, reach, estimatedSpend.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
cpm
Cost per 1,000 impressions used for the spend estimate (default 9).
Audiens iklan sesuatu jenama. Audience in the EU and the UK: the people reached, by country, by age range and by gender (each breakdown has its own base). A count the source does not send is null; hasData is true when one count is above 0. A country whose count is under a ten-thousandth of the top country's is left out of countryDistribution and listed in otherCountries. On a past day (snapshotDate) the audience as it was then, the day in meta.snapshotDate.
Item terbaharu jenama yang dijejak daripada satu sumber. Each item in its source's search-row shape (Meta ads, TikTok posts, Google ads, emails), newest first, over 90 days at most. meta.partial is true when the data source read the window only in part, and meta.partialSources names the source then. The feed covers a few sample brands only: another tracked brand answers 404.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
source
Defaults to meta. Salah satu daripada: meta, tiktok, google, email.
since
First day (YYYY-MM-DD; default 6 days before until: 7 days).
Peristiwa jenama yang dijejak. Each event: type, date, occurredAt, itemId (the ad, post or email), title, imageUrl, url and details. meta.partial is true when the data source read the window only in part, and meta.partialSources names the sources the types asked for name (meta for new_meta_ads). The feed covers a few sample brands only: another tracked brand answers 404.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
since
First day (YYYY-MM-DD; default 6 days before until: 7 days).
Kalendar jenama yang dijejak merentasi Meta, TikTok, Google dan e-mel. The items of each source (meta, tiktok, google, email) over 31 days at most, a preview each; with day, that day's items in their search-row shape; both read on while the data source has more, 10 calls at most (meta.isTruncated when more were left); times in UTC. meta.partial is true when the data source read some sources only in part, and meta.partialSources names them. The feed covers a few sample brands only: another tracked brand answers 404.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
since
First day (YYYY-MM-DD; default 6 days before until: 7 days).
Jumlah yang dilancarkan jenama yang dijejak setiap hari, mengikut sumber. days: the count of each day and source (meta, tiktok, google, email), over 31 days at most; previews: a preview of each item, its times in UTC. meta.partial is true when the data source read the window only in part. The feed covers a few sample brands only: another tracked brand answers 404.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
since
First day (YYYY-MM-DD; default 6 days before until: 7 days).
Iklan dilancarkan, iklan aktif dan capaian dari semasa ke semasa. Weekly and monthly points carry startDate, endDate and partial (a bucket the range holds only part of); a period starts on the first day of its first week or month. Live ads of a bucket are the median of its daily readings, leaving out a reading (or 2 or 3 in a row) under a tenth of the readings around it. Such a day, with days on both sides of it, is null in a daily series (a drop on the newest day stays as read: a brand can stop its ads), its launches too, and so are the launches of the day after it when they are nearly all its live ads (the ads read again); weeks and months leave those launches out, and leftOut lists the days (days, launchDays), also in the overview's graph. A value the source does not send is null; impressions is the EU and UK reach of the brand's ads (people reached; the old name, kept) and euReach the same figure; when the range has no EU reach at all, impressions, euReach and estimatedSpend are null and nullReasons.euImpressionsSpend says why (eu_uk_only, not_measured). estimatedSpend keeps two decimals under 10 USD (1.26) and is in whole dollars from 10 USD up.
Parameter
Penerangan
brandtrackerIdwajib
Tracker id, from the list of tracked brands.
granularity
Defaults to daily. Salah satu daripada: daily, weekly, monthly.
period
Use it instead of startDate / endDate. Salah satu daripada: today, yesterday, 1d, 7d, 14d, 30d, 90d, 365d.
startDate
First day, such as 2026-09-01.
endDate
Last day.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
cpm
Cost per 1,000 impressions used for the spend estimate.
Iklan teratas merentasi jenama yang dijejak. Runs over your 100 most recent tracked brands (top-ads and scaling-ads also over those with no shop). Narrow it with brandtrackerIds or folderIds. meta.perBrandCap is the rows a brand gives at most; a brand whose report fails or that your plan leaves out is in meta.skippedBrands (reason failed, plan or unavailable), with meta.partial; when every brand fails the call fails. The shop reports (hooks, ad-copies, landing-pages, media-mix) count the brands with no shop in meta.brandsWithoutShop.
Parameter
Penerangan
brandtrackerIds
Only these trackers, comma-separated.
folderIds
Only trackers in these folders, comma-separated.
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 20).
sortBy
Defaults to currentRank. Salah satu daripada: currentRank, rankDelta, rankDelta7d, reach, reachDelta7d, daysRunning, duplicates.
includeInactive
Also rank stopped ads. Salah satu daripada: true, false.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Iklan yang sedang diskalakan merentasi jenama yang dijejak. Runs over your 100 most recent tracked brands (top-ads and scaling-ads also over those with no shop). Narrow it with brandtrackerIds or folderIds. meta.perBrandCap is the rows a brand gives at most; a brand whose report fails or that your plan leaves out is in meta.skippedBrands (reason failed, plan or unavailable), with meta.partial; when every brand fails the call fails. The shop reports (hooks, ad-copies, landing-pages, media-mix) count the brands with no shop in meta.brandsWithoutShop.
Parameter
Penerangan
brandtrackerIds
Only these trackers, comma-separated.
folderIds
Only trackers in these folders, comma-separated.
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 20).
sortBy
Defaults to rankDelta. Salah satu daripada: rankDelta, currentRank.
period
Window of the rank change (default last7d). Where an ad's rank history starts inside it, metrics.since is the day previousRank and rankDelta count from, and meta.windowNote says so. Each brand's ranks come from its ads' rank histories, as in its own /ad-rank: its first 10 ads in the ad library's ranking, ranked again, those that gained less than asked left out, as meta.rankNote says for all the brands read. Salah satu daripada: last7d, last14d, last30d.
Hook merentasi jenama yang dijejak. Runs over your 100 most recent tracked brands (top-ads and scaling-ads also over those with no shop). Narrow it with brandtrackerIds or folderIds. meta.perBrandCap is the rows a brand gives at most; a brand whose report fails or that your plan leaves out is in meta.skippedBrands (reason failed, plan or unavailable), with meta.partial; when every brand fails the call fails. The shop reports (hooks, ad-copies, landing-pages, media-mix) count the brands with no shop in meta.brandsWithoutShop.
Parameter
Penerangan
brandtrackerIds
Only these trackers, comma-separated.
folderIds
Only trackers in these folders, comma-separated.
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 20).
sortBy
Defaults to usageCount. Salah satu daripada: usageCount, longestRunning, totalImpressions, firstUsedAt, lastUsedAt.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Teks iklan merentasi jenama yang dijejak. Runs over your 100 most recent tracked brands (top-ads and scaling-ads also over those with no shop). Narrow it with brandtrackerIds or folderIds. meta.perBrandCap is the rows a brand gives at most; a brand whose report fails or that your plan leaves out is in meta.skippedBrands (reason failed, plan or unavailable), with meta.partial; when every brand fails the call fails. The shop reports (hooks, ad-copies, landing-pages, media-mix) count the brands with no shop in meta.brandsWithoutShop.
Parameter
Penerangan
brandtrackerIds
Only these trackers, comma-separated.
folderIds
Only trackers in these folders, comma-separated.
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 20).
sortBy
Defaults to usageCount. Salah satu daripada: usageCount.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Halaman pendaratan merentasi jenama yang dijejak. Runs over your 100 most recent tracked brands (top-ads and scaling-ads also over those with no shop). Narrow it with brandtrackerIds or folderIds. meta.perBrandCap is the rows a brand gives at most; a brand whose report fails or that your plan leaves out is in meta.skippedBrands (reason failed, plan or unavailable), with meta.partial; when every brand fails the call fails. The shop reports (hooks, ad-copies, landing-pages, media-mix) count the brands with no shop in meta.brandsWithoutShop.
Parameter
Penerangan
brandtrackerIds
Only these trackers, comma-separated.
folderIds
Only trackers in these folders, comma-separated.
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 20).
sortBy
Defaults to usageCount. Salah satu daripada: usageCount, longestRunning, totalImpressions.
order
Sort direction (default desc). Salah satu daripada: desc, asc.
Campuran format merentasi jenama yang dijejak. Runs over your 100 most recent tracked brands (top-ads and scaling-ads also over those with no shop). Narrow it with brandtrackerIds or folderIds. meta.perBrandCap is the rows a brand gives at most; a brand whose report fails or that your plan leaves out is in meta.skippedBrands (reason failed, plan or unavailable), with meta.partial; when every brand fails the call fails. The shop reports (hooks, ad-copies, landing-pages, media-mix) count the brands with no shop in meta.brandsWithoutShop.
Parameter
Penerangan
brandtrackerIds
Only these trackers, comma-separated.
folderIds
Only trackers in these folders, comma-separated.
page
Page number, starting at 1.
limit
Results per page, 1-100 (default 20).
sortBy
Defaults to activeAds. Salah satu daripada: activeAds, image, video, dco, other.
euOnly
Only ads shown in the EU and UK. Salah satu daripada: true, false.
Ruang kerja anda, ahli dan kerusi mereka, serta jemputan yang dihantar dan diterima. Panggilan ini tidak pernah dikira.
GET/v1/workspaces
Senaraikan ruang kerja anda. Each with its id, name, slug, your role (owner, admin, member or readonly), its plan, its seats (limit, used, remaining, activeMembers, activeInvitations, included, extra: a pending invitation holds a seat) and isDefault (opened on sign-in). Your own workspace comes first.
Alih keluar ruang kerja. The owner only. Refused while other members remain (409 workspace_has_members), while its subscription renews (409 subscription_renews) and for your last workspace (409 last_workspace).
Parameter
Penerangan
workspaceIdwajib
id of one of your workspaces (ws_...), from the list of your workspaces.
Jemput seseorang. role: member (the default), readonly, or admin (the owner only). It takes a seat until accepted, declined, revoked or expired (7 days). Refused: 409 already_member, invitation_exists or seat_limit_reached. emailSent false: send it again with resend.
Parameter
Penerangan
workspaceIdwajib
id of one of your workspaces (ws_...), from the list of your workspaces.
Pelayan MCP yang kami hoskan mendedahkan data yang sama sebagai alat untuk ejen AI. Gunakan kunci API yang sama dengan REST API; panggilan alat berharga seberapa banyak hasil yang dipulangkannya, seperti API, dan jawapannya menyatakan hal itu dalam meta.credits (used, remaining, source). Ia juga mendedahkan tiga sumber: sellwinners://me, sellwinners://usage dan sellwinners://openapi.
Pelan Free turut menyertakan pelayan MCP: 150 kredit sebulan, 10 permintaan seminit, 10 hasil pertama bagi setiap carian. Pada pelan Free, senarai alat menamakan alat yang termasuk dalam Free; alat lain membalas ralat alat yang berakhir dengan [plan_not_eligible], yang tidak dikira. Pada pelan berbayar, panggilan alat yang tidak termasuk dalam pelan itu mengembalikan ralat alat yang berakhir dengan [plan_not_eligible], yang tidak dikira.
URL https://mcp.sellwinners.com/mcp
Transport streamable HTTP
Header X-API-Key: YOUR_API_KEY
The list tools (search_shops, find_similar_shops, search_products, search_ads, search_google_ads_library, search_tiktok_library, search_advertisers, search_emails) answer compact rows by default, small enough for an assistant to read inline: each row keeps its ids, names and domains, its key figures and dates, its links, one picture, text cut to 200 characters and the last points of its histories, under the same field names as the full row, with the answer's pagination as it is. Pass detail="full" for every field of each row, or open one record with scan_ad, scan_advertiser, brief_competitor or shop_report.
Persediaan klien
No API key: these sign in with your SellWinners account.
Pelan Free turut menyertakan pelayan MCP: 150 kredit sebulan, 10
permintaan seminit, 10 hasil pertama bagi setiap carian.
1. In ChatGPT (an app or a connector in developer mode) or in
Claude (Customize → Connectors → Add custom connector; on Team or
Enterprise an Owner adds it and you select Connect),
add this server URL: https://mcp.sellwinners.com/mcp
2. Choose OAuth if asked. A SellWinners window opens:
log in, then select Allow.
3. Ask: "Find the top video ads for running shoes this month".
Disconnect any time: Settings → MCP → Connected apps.
Cari atau semak imbas produk kedai mengikut harga, jualan, unit terjual, negara jualan, iklan, capaian, ulasan, tarikh pelancaran, mata wang atau negara kedai
37 argumen
Apa yang berubah bagi jenama yang dijejak dalam satu tempoh (1d, 7d, 14d, 30d; kedudukan yang naik dibaca dalam 7d untuk 1d, hook dalam 30d untuk 14d, ujian kreatif ialah yang terkini)
6 argumen
Jadikan folder kegemaran peribadi atau dikongsi
4 argumen
kindtextfolder_idtextvisibilitytextscopetext
create_favorite_folder_share_link
Buat pautan awam ke folder kegemaran
4 argumen
kindtextfolder_idtextscopetextconfirmtrue / false
delete_favorite_folder_share_link
Alih keluar pautan awam ke folder kegemaran
4 argumen
kindtextfolder_idtextscopetextconfirmtrue / false
Akaun 2
usage_get
Pelan anda, kreditnya dan berapa yang berbaki
check_credits
Berapa kredit yang anda ada lagi bulan ini (jawapan sama seperti usage_get)
Bantu kami menambah baik SellWinners? Jika anda bersetuju, kami menggunakan kuki untuk mengikuti lawatan anda dari halaman ke halaman dan merakamnya, dengan semua yang anda taip disembunyikan. Kami juga mengingati affiliate yang pautannya membawa anda ke sini selama 30 hari.
Jika tidak, kami tetap dapat melihat halaman yang anda buka, sejauh mana anda menatal, apa yang anda klik dan sebarang ralat, tanpa sebarang kuki.
Pelayar ini menyimpan pilihan anda, dan sembang sokongan hanya menyimpan kukinya selepas anda membukanya atau menerima. Cara ia berfungsi