MCP App Store
by KeenEthics
SellWinners icon

SellWinners

By SellWinners

Get New App Alerts

Overview

SellWinners brings e-commerce and advertising research into ChatGPT. Ask in plain language and it searches the SellWinners index of Shopify stores, products, ads and brand emails for you. What you can do: - Find winning products: the best sellers of the fastest-growing stores in a niche. - Research ads: search Meta (Facebook and Instagram), Google and TikTok ads by keyword, brand, country, format and reach, with their copy, hooks and creatives. - Brief a competitor: a store's products, ads, emails and similar stores in one answer. - Read an email strategy: how often a brand sends, on which days, which campaigns, and its latest subjects. - Track brands: follow competitors and see who launched or scaled ads in the last day or week. - Organise your research: save ads, shops and emails to your SellWinners boards and favorites. Connecting asks you to sign in to your SellWinners account and allow access; you can disconnect at any time in SellWinners under Settings, MCP, Connected apps. Tools that delete something or create a public share link need your explicit confirmation.

Tools

add_board_item

ChatGPT
Save an item on a collection board. source_type: meta_ad, google_ad, tiktok, shop, email, advertiser or product (a product as a search last showed it).

add_favorite_item

ChatGPT
Save an ad, a shop or an email to your favorites (kind: ads, shops, emails). item_id is the ad id, the shop id or the email id; folder_id files it in one of your favorite folders. Adds to your account.

add_to_brandtracker

ChatGPT
Start tracking a brand: it joins your tracked brands, which analyze_tracked_brand, analyze_brand_changes and daily_radar report on. It takes exactly one of facebook_page_id, website_id, shop_id or domain (lookup finds them); folder_id files it in one of your tracker folders. Adds to your account. Reference: https://sellwinners.com/docs#ep-tracker_create

analyze_brand_changes

ChatGPT
What changed for a tracked brand over a period (1d, 7d, 14d, 30d): new ads, ads gaining rank, new hooks, activity over time and creative tests. Rank gained is read over 7d when the period is 1d; hooks and headlines over last24h, last7d or last30d (14d reads last30d); creative tests are the latest batches, whatever the period. focus keeps one part: ads, hooks, landing_pages, messaging (hooks and headlines), testing, or all. snapshot_date: with focus landing_pages, a past day (YYYY-MM-DD) for the landing pages as they were then, the day in meta.snapshotDate; for the other parts only the latest. The ads (newAds, scalingAds, each test's ads) are compact rows by default (detail compact, as search_ads answers them: ids, names, the key figures, rank figures and dates, each link, one picture, text cut to 200 characters), and each test keeps its 3 ads of most reach (adsReturned, adsTruncated; its stats count them all); detail="full" gives every field and up to 10 ads a test, and scan_ad an ad's whole record. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it.

analyze_shop_emails

ChatGPT
A shop's email strategy: how often it sends, on which days, which campaign types, and its latest subjects. The latest emails and the month's calendar count its emails of every campaign type (Marketing, Newsletter, Welcome and Abandoned Cart). In last90Days, emailsByDayOfWeek is keyed by the day's number as the index counts the days: 0 is Sunday, 1 Monday, up to 6, Saturday; totalEmails and avgEmailsPerWeek are the figures the email lists show, null when no email of the shop is tracked (nullReasons none_found) or could not be read (meta.partial). dominant ranks the latest emails' campaignTypes, categories, promotionTypes and events each on its own ({name, emails}, the top 3), leaving out the index's No Promotion and No Event. Reference: https://sellwinners.com/docs#ep-shop_email_stats

analyze_tracked_brand

ChatGPT
A deep look at one tracked brand: profile and counters, the dashboard (graph, media mix, top landing pages, top ads, newest ads), its hooks and its audience (people reached in the EU). A count the index does not send is null (nullReasons says why), and a part that could not be read is null, named in meta.warnings with meta.partial. meta.dataFreshnessLagDays: how far the ad library is behind, when the brand launched ads since its newest ad there (0 otherwise). snapshot_date (YYYY-MM-DD, a past day) gives its audience as it was then and adds its media mix of that day (mediaMix); the rest stays today's. The newest ads (overview.adsPreview) and the top ads are compact rows by default (detail compact, as search_ads answers them: ids, names, the key figures, rank figures and dates, each link, one picture, text cut to 200 characters), each top landing page keeps its 5 countries of most reach, and the brand's statistics list its landing pages once (urlCounts, with their ads and live ads; urlCount, the same pages as a map, is left out); detail="full" gives them whole, and scan_ad an ad's whole record. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it.

archive_board

ChatGPT
Archive a board and everything under it (restore_board brings it back). Needs confirm=true.

brief_competitor

ChatGPT
A compact brief on one competitor (shop id, domain or name). sections: any of profile, products, ads, emails, similar (default: all of these), and on request sales_history (its estimated sales and units, month by month), followers_history (its followers on each network, month by month) and stores (its other stores, on paid plans). The ads are the biggest by reach, or with ad_rank_sort (rank_delta or current_rank), ad_rank_window (7d, 14d, 30d), min_rank_delta or max_current_rank the ads gaining rank. shop is another name for competitor. A domain is the site with exactly that domain (never another site whose domain contains it); a name is the brand's own site (the website of its page of that name), else the shop of that name with traffic or ads. shop.inShopIndex is false for a site found by its domain that the shop index leaves out (it has fewer figures, such as no sales estimate), null when not checked. profile.nullReasons says why a figure of the profile is null (not_shopify: sales are estimated for Shopify stores only; eu_uk_only: no EU or UK reach; no_ads: no Meta ad at all; no_estimate; too_low: too low for its units sold at the shop's own prices...), by its path in the shop record. profile.extra carries the rest of the shop record: its Google ads by country (with reach), network, targeting and format (extra.googleAds), its tab counts and more; profile.advertising its ads launched a day (launchedHistory) and its pages' details (linkedAdvertisers). snapshot_date (YYYY-MM-DD, a past day) gives the profile's traffic and Meta ad figures as they were then, the day in meta.snapshotDate. meta.partial and meta.warnings say that some of the profile's figures could not be read this time (nullReasons failed), as the shop record does: a retry reads them again. The profile also has the shop's catalog (products count and best sellers with their links and ranks), tiktok, createdAt (null for a site off Shopify, beside trackedSince, the day tracking began) and screenshotUrl. products are dated in UTC (shop_report products gives the shop's own clock in meta.shopUtcOffset). Each day-by-day series of the profile (advertising.launchedHistory, reachHistory, allPagesHistory and history, tiktok.history) keeps its 30 latest readings, and meta.historiesCut names each one cut with how many readings it has; each other list of the profile keeps its first 10 items (its Google ads by country, its apps' categories; linkedAdvertisers keeps its main page too), meta.listsCut naming each one cut with how many it has; the ads and emails are compact rows, as search_ads and search_emails answer them (scan_ad gives an ad's whole record, shop_report advertisers every page of the shop); verbose true gives them whole (a big brand's series run to hundreds of days each). An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-shop

check_credits

ChatGPT
How many credits you have left: this month's and your top-up credits (same answer as usage_get). Costs no credit.

compare_shops

ChatGPT
One figure of several shops (1 to 10 ids or domains) side by side, as a brand tracker's compare chart shows it: metric googleLiveAds (the Google ads it runs, as the data counts them), tiktokPosts (TikTok posts) or metaReach (Meta reach), with each shop's change (delta) when the data gives one; snapshot_date (YYYY-MM-DD) for a past day. Reference: https://sellwinners.com/docs#ep-shops_compare

create_board

ChatGPT
Create a board in your account. kind: collection (holds saved items) or folder (holds boards). visibility: private, workspace or public, a label inside your account: a link anyone can open is made only by create_board_share_link. Adds to your account.

create_brandtracker_folder

ChatGPT
Create a folder to organise your tracked brands; the answer has its id. Adds to your account.

create_favorite_folder

ChatGPT
Create a folder for your saved ads, shops or emails (kind), at the top level or inside another folder (parent_id). Adds to your account.

creative_inspiration_pack

ChatGPT
Creative inspiration for a niche: the strongest running ads for the keywords, with their hook, copy, call to action and landing page. focus: reach (biggest), new (launched in the last 14 days) or long_running (30 days or more). trend_signal ranks them: reach (default), reach_growth_7d (reach growth over 7 days, as a share), reach_gained_7d (reach gained over 7 days), longest_running, newest, relevance.

daily_radar

ChatGPT
Daily digest across your tracked brands (all of them, up to 200): who launched ads in the last day and the last week, most active first. A count that could not be read is null and comes last, with nullReasons, and meta.partial and meta.warnings say so. focus: new_ads or active_ads. event_types: new_meta_ads (the only activity followed).

delete_brandtracker_folder

ChatGPT
Delete one of your tracker folders. action: move_to_default (its brands stay tracked, in the default folder) or delete_tracked_brands (its brands are no longer tracked either). Needs confirm=true.

delete_favorite_folder

ChatGPT
Delete a favorite folder. mode: delete_items, move_items_to_root or move_items_to_folder (with target_folder_id). Needs confirm=true.

delete_from_brandtracker

ChatGPT
Stop tracking a brand, by its brandtracker_id or its workspace_link_id (one of the two): it leaves your tracked brands and its folder. Needs confirm=true.

detect_shopify_store

ChatGPT
What a store runs, read from its pages (any store, tracked or not): whether it is on Shopify, its theme, whether its storefront is headless, and the Shopify apps it loads (each with a link to find it on the Shopify App Store). Reference: https://sellwinners.com/docs#ep-tools_shopify_theme

find_saved_items

ChatGPT
Search everything you saved, on every board and in your favorites. Every word of query must appear, in any order (case and accents are ignored), in what the 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; or in the item's own id or its board's name (a favorites board is Favorites: Ads, Shops or Emails). query may be empty when another filter is set. source_types: meta_ad, google_ad, tiktok, shop, email, advertiser, product. board_id: one board (a folder: every board inside it). scope: all, workspace or personal. state: active, archived or all (the item's board). saved_from and saved_to: days (YYYY-MM-DD). sort_by: savedAt or name. Each row has its board and a label; include_items adds the saved copy (copySavedOnFree: a copy saved on Free, seen now on a paid plan; it lacks what Free hides, such as an ad's reach and spend, and the search does not read it again). The matches come from your 10,000 most recently saved items that pass the filters (meta.capped says there were more). Each saved copy is a compact row by default (detail compact, as the searches of its kind answer it: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters); detail="full" gives the whole saved copy, and scan_ad an ad's whole record. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it.

find_similar_shops

ChatGPT
Competitors of a shop (id or domain). sort_by: relevance, monthlyVisits, activeAds, growth30d, productsCount, createdAt. Each row's shop keeps its extra (logo, Trustpilot, sales history and the rest of a search_shops row) and its best sellers' productUrl and rank. 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); meta.partial marks a page the reads stopped on before it filled (pagination.hasMore is true then: the next page reads on). similarityScore is null when the index gives none. pagination.total is the same for every order and page, an estimate (pagination.totalEstimated) until the list is read to its end. season (bfcm-YYYY) lists the shops similar over that Q4 season (November 1 to December 4). filters (the named filters of search_shops, such as {"minMonthlyVisits": 1000000}), market (a 2-letter code) and exclude_shops (50 ids or domains at most) narrow the full list. Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points, a latest-ads list to its first; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field, and brief_competitor a shop's whole record. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-shop_similar

find_winning_products

ChatGPT
Products selling now in a niche: the best sellers whose title has one of the keywords, from the fastest-growing shops of the niche that sell them (up to 3 per shop). niche: a category name or id (the categoryIds of the other tools; lookup_filter_ids type categories lists them), or a word such as coffee or shoes. A niche no category matches is left out: the keywords alone find the products, and the answer says so. keywords: 1 to 5 product words. country: 2-letter ISO code of the shop's main market. max_results: how many shops, 1 to 30. Each product has its picture, title, price and currency, its handle, productUrl (its page on the shop's own domain, null when none can be built) and rank (1 = the shop's best seller); each shop its logoUrl and mainMarket. Its rows are compact either way (detail compact or full); brief_competitor gives a shop's whole record.

get_board

ChatGPT
One of your boards, by its id from list_boards: its name, kind, description and visibility. list_board_items gives what is saved on it.

get_brand_activity

ChatGPT
What a tracked brand did across Meta, TikTok, Google and email over a window (since, until: YYYY-MM-DD, the last 7 days by default). view: items (its newest items of one source: meta, tiktok, google or email, each as that source's searches show it), events (its events, newest first; types such as new_meta_ads, the default), calendar (the items of every source, a preview each; with day, every item of that day, meta.isTruncated when more were left) or days (how many items each source had each day). Times are UTC. meta.partial is true when the index read some sources only in part (meta.partialSources names them, on calendar). The feed covers a few sample brands only: another tracked brand's is not available. Items are compact rows by default (detail compact, as each source's searches answer them: ids, names, the key figures and dates, each link, one picture, text cut to 200 characters), and the calendar keeps the first 30 previews of each source, their texts cut to 120 characters (meta.previewsCut gives how many each cut source had: view days counts them all, a day lists that day's); detail="full" gives every field and every preview whole, and scan_ad an ad's whole record. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it.

get_brandtracker_scaling_ads

ChatGPT
The ads of a tracked brand that gained the most rank, with their rank history. ad_rank_window: 7d, 14d, 30d. ad_rank_sort: rankDelta or currentRank. The other arguments narrow the ads (words, media type, status, dates, days running, duplicates, language, countries, call to action, partners). Each row's ranks come from the ad's rank history: metrics.currentRank is its reading of the day the ad library's rank was read (the rank top ads show), metrics.previousRank the reading on the day the window starts (else the oldest inside it, from metrics.since), metrics.rankDelta the places gained (positive: up) and metrics.improvementPct the fraction of the previous rank gained (0.875 is 87.5%). The ad library's first 50 ads are ranked again by them, those that gained less than min_rank_delta (or rank below max_current_rank) left out (an ad whose rank history gives no gain, by the ad library's own count), as meta.rankNote says. Each row's ad is a compact row by default (detail compact, as search_ads answers it: ids, names, the key figures, rank figures and dates, each link, one picture, text cut to 200 characters); detail="full" gives every field, and scan_ad an ad's whole record. Not available: keyword_mode, landing_pages, max_ads_per_brand, search_in. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-tracker_scaling_ads

get_brandtracker_transcripts

ChatGPT
Video scripts of a tracked brand (brandtracker_id, or its name or domain as brand), grouped by text. time_period: live, last24h, last3d, last7d, last30d, last3m, last6m, last1y. sort_by: usageCount, longestRunning, totalImpressions, firstUsedAt, lastUsedAt. snapshot_date: latest (the only one kept). An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it.

get_email_html

ChatGPT
The raw HTML of one marketing email, to read or show its full content. email_id comes from search_emails or analyze_shop_emails. An HTML longer than 30,000 characters comes in parts of 30,000: html_part 1 (the default) is the first, meta.htmlParts says how many there are and html_part 2 and on give the next ones (data.htmlLength is the whole HTML's length). include_html=false returns the email's details and its text (content.body) without the HTML. shop: the shop the email is from, as search_emails was given it; on the Free plan it opens a demo brand's own email. Reference: https://sellwinners.com/docs#ep-email_html

get_product_ads

ChatGPT
The Meta ads that link to a product's page, newest first, in the format of search_ads. product_id: a row's ref, from search_products or product_launch_radar. status: active or inactive. Reference: https://sellwinners.com/docs#ep-product_ads

list_board_items

ChatGPT
The items saved on one of your boards (ads, shops, emails and more), page by page.

list_boards

ChatGPT
Your boards (saved collections of ads, shops, emails and more), with their ids. scope: workspace or personal. state: active or archived. kind: folder or collection. surface: ads, shops, landing, emails, products, advertisers.

list_brandtracker_folders

ChatGPT
The folders your tracked brands are organised in, with their ids (for list_tracked_brands, move_tracked_brands and daily_radar).

list_favorites

ChatGPT
Your saved ads, shops or emails, page by page. kind: ads, shops, emails. scope: workspace or personal. folder_id keeps one favorite folder. A favorite ad is a Meta ad, a Google ad or a TikTok post (sourceType); an item of another kind saved on a board of ads is on that board only (list_board_items). Each saved copy is a compact row by default (detail compact, as the searches of its kind answer it: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters); detail="full" gives the whole saved copy, and scan_ad or brief_competitor the whole record. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it.

list_saved_views

ChatGPT
The searches you saved on the website's list pages (saved views), in the order you gave them. context: shops, meta, tiktok, google, advertisers, emails or products (empty: every page). Each view has its name and request: the search, searchType, sortBy, order and named filters its page sends, ready for that page's search tool (shops: search_shops, meta: search_ads, tiktok: search_tiktok_library, google: search_google_ads_library, advertisers: search_advertisers, emails: search_emails, products: search_products; searchType is their match_mode or search_in, and filters their filters; a TikTok view's mode, ads or organic posts, is its filters' type). ui holds the page's own choices: a date preset such as last30 is worked out from today on the website, while the filters hold the days it had when the view was saved.

list_tracked_brands

ChatGPT
The brands you track, with their live ad counters. sort_by: newAdsLastDay, newAdsLast7Days, newAdsLast30Days, activeAds, totalTraffic, name, createdAt. folder_id or folder_ids keep one or several folders. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it.

lookup

ChatGPT
Resolve a brand name, a shop domain or a Facebook page id to the ids the other tools take. type: auto, shop, advertiser or brandtracker (your tracked brands). 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 index 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 index has not counted). Each row carries its picture (logoUrl: a shop's, a page's, a tracked brand's page's) and what tells rows of one name apart: a shop's countryCode, mainMarket and signals.growth30d (30-day traffic growth, a fraction), a page's domain (the shop it links to), mainCountry and signals.facebookLikes, a tracked brand's shopId. Reference: https://sellwinners.com/docs#ep-lookup

lookup_filter_ids

ChatGPT
Ids for the filters of the search tools. type: categories (the categoryIds, and niches), shopify_apps, pixels, themes, technologies, email_classifications (email categories, promotion types and events), google_networks, google_countries, tiktok_categories (the names search_tiktok_library's categories filter takes, with the posts each counts), tiktok_languages and tiktok_countries (the values of its languages and countries filters, with their posts), ad_ctas and ad_languages (the values of search_ads' ctaTypes and languages filters: SHOP_NOW, labelled Shop now, and english, each with the ads it counts), the values of an email filter with the emails each counts (email_languages, email_countries, email_creation_countries, email_promotion_types, email_events, email_categories, email_campaign_types: the names search_emails takes), or landing_pages (the landing pages used by a shop, by scope_domain or by scope_tracked_pages; with scope_tracked_pages a page's activeAdsCount is null, so status is all or left out, and a page that could not be read sets meta.partial; snapshot_date, YYYY-MM-DD, with scope_domain: the shop's landing pages on a past day). The TikTok and email lists are on paid plans; the ad lists on every plan, as Meta ads are. Reference: https://sellwinners.com/docs#g-facets

market_overview

ChatGPT
The whole market, day by day. kind market (default): the Meta ads live and launched each day, the EU and UK reach they gained and the brand emails sent, the latest limit days (30 by default, 366 at most, one credit a day) of date_from to date_to (YYYY-MM-DD, 366 days apart at most, the last 366 by default; the totals run a few weeks behind: meta.latestDataDate is the last day with figures). kind q4: a Q4 season (November 1 to December 4 of year, the latest begun by default; date_from and date_to may be any days inside it): how much of the day's Meta ads and emails speak of Black Friday and Cyber Monday, the shops that first mention it, and the ads, advertisers and reach of the season.

move_board

ChatGPT
Move a board under a folder board (parent_board_id=null moves it to the top level).

move_board_item

ChatGPT
Move an item saved on one of your boards to another of your boards (position: its place there).

move_favorite_item

ChatGPT
Move a saved favorite to a folder (folder_id=null moves it out of any folder).

move_tracked_brands

ChatGPT
Move tracked brands into a folder (folder_id=null takes them out of any folder). Name them by brandtracker_ids or by workspace_link_ids (one of the two).

product_launch_radar

ChatGPT
Products published on Shopify in the last days days (1 to 365), ranked to spot launches early. rank_by: est-sales (the sales estimate), ad-pressure (the ad share) or newest. query narrows by words in the name; shop_id keeps one shop's products (without a query). Prices, revenue and spend are in US dollars; min_ad_share and max_ad_share are percents; min_ads_launched and max_ads_launched count the last 30 days. filters also takes search_products' named filters. Rows are search_products' (compact by default). Costs 1 credit per product. filters is an optional object of named filters, e.g. {"minPriceUsd": 20, "minActiveAds": 10, "sellingCountries": ["US"]}. Supported: adsLaunchedPeriod, currencies, excludeSellingCountries, hasPartnershipAds, mainSellingCountries, maxActiveAds, maxAdShare, maxAdsLaunched, maxEstDailySales, maxEstMonthlySales, maxEuAdSpend, maxEuReach, maxMonthlyRevenue, maxMonthlyUnitsSold, maxPrice, maxPriceUsd, maxRating, maxReviewCount, maxReviews, maxShopMonthlyVisits, maxShopProductsCount, maxShopTrafficGrowth30d, maxSpendShare, maxUnitsSoldDaily, maxUnitsSoldMonthly, minActiveAds, minAdShare, minAdsLaunched, minEstDailySales, minEstMonthlySales, minEuAdSpend, minEuReach, minMonthlyRevenue, minMonthlyUnitsSold, minPrice, minPriceUsd, minRating, minReviewCount, minReviews, minShopMonthlyVisits, minShopProductsCount, minShopTrafficGrowth30d, minSpendShare, minUnitsSoldDaily, minUnitsSoldMonthly, partnership, pixelIds, promoTypes, publishedAfter, publishedBefore, sellingCountries, shop, shopCountries, shopCreatedAfter, shopCreatedBefore, shopId, shopVisitorCountries, shopifyAppIds, subscription, themeIds. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-products_query

remove_board_item

ChatGPT
Remove a saved item from one of your boards; the ad, shop or email itself is not affected. Needs confirm=true.

remove_favorite_item

ChatGPT
Remove a saved favorite, by its own id (favorite_id) or by the id of the saved record (item_id). Needs confirm=true.

rename_brandtracker_folder

ChatGPT
Rename one of your tracker folders (folder_id from list_brandtracker_folders): the new name replaces the old one.

restore_board

ChatGPT
Bring one of your archived boards back to the active ones (list_boards with state=archived lists them).

scan_ad

ChatGPT
The full record of one Meta ad: creative, copy, transcript and hook, spend, rank, linked shop and the page's history. ad_identifier is the id of an ad from search_ads. Not available: collation_id (an ad cannot be looked up by the id of its group of duplicates). metrics.reach is the latest EU reach the index reports and metrics.estimatedSpend the spend of it, null for an ad not shown in the EU or the UK (nullReasons eu_uk_only) and for an EU ad whose reach is not counted yet (not_measured), by its targeting as in search_ads; the reach deltas are counted by date while the reach history is current, else null (an ad started inside the window gained all its reach in it; a gain below that of fewer days is null; a null gain beside a known reach is not_measured). Its reach and spend histories are one series, one reading a day: 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 is taken (extra.recordReach holds the record's, the figure ad listings show, extra.recordSpend the spend of it). media lists the ad's images and videos as its search row does. advertiser.reach30d is the page's EU reach over 30 days as advertiser lists show it; advertiser.totalReach is never below the last reading of the page's reach history, and is that reading while it is current (at most 2 days old): extra.pageRecordReach then holds the record's total. extra.advertiserTotalAds is the page's total ads (nullReasons not_measured when none counts them). extra.bestRank is the best rank the ad reached. rank.currentRank is ranked among rank.currentTotal ads (the ranked pool; extra.rankPopulation is the page's live ads, not that pool). rank.rankDelta is the move over 7 days, as on search_ads rows (negative = moved up); rank.rankDelta14d and rank.rankDelta3d the moves over 14 and 3 days, from rankDelta14dSince and rankDelta3dSince; a stopped ad has its last rank in rank.lastRank, on rank.lastRankedAt. A Google ad id (google_CR..., from search_google_ads_library) gives that Google ad's record: its search row with its daily reach, its networks and its advertiser's figures. A TikTok post id (tiktok_..., from search_tiktok_library) gives that post's record: its daily views and likes (metrics.history), its profile's latest ads (profile.latestAds; profile.latestPosts, the old name of the same rows, is kept one release) and change, its files and the profile's daily snapshot (every brand's). extra.reachScope and extra.pageReachScope are outside_eu_uk when most of the ad's or its page's reach was seen outside the EU and the UK, else eu_uk. pageAnalytics (null with meta.partial when it could not be read) holds the page's EU reach so far (reachHistory), its Facebook likes and Instagram followers, day by day. audience.gender, ageMin and ageMax and metrics.aggregatedReach are always null: they are not reported for one ad.

scan_advertiser

ChatGPT
One advertiser (a Facebook page id, from search_advertisers or a shop's linkedAdvertisers). view record (default): its page details, reach and spend, platforms and newest ads (snapshot_date, YYYY-MM-DD: its page details on a past day). view history: its live ads and the EU reach it gained, one reading a day, over the last days days (7 to 3650: past a year, every reading the index has). Its shares are fractions (extra.euAdsShare 0.0831 is 8.31%), extra.adCountries {countryCode, ads, share} and extra.reachCountries {countryCode, impressions, share}, as on search_advertisers rows.

search_ads

ChatGPT
Search Meta (Facebook / Instagram) ads by words in the copy, brand or landing page. media_type: image, video, dco, carousel, dpa. status: active, inactive, all. sort_by: relevance, newest, reach, reachGrowth7d (reach growth over 7 days, as a share), reachDelta7d (reach gained over 7 days), longestRunning (longest first only), duplicates, spend, adRank, rankDelta7d, rankDelta14d, rankDelta30d. One ad per brand is returned unless maxAdsPerBrand in filters raises it (0: no cap); a search of some pages (tracked_pages) or shops (websiteIds in filters) returns all of their ads, a shop's 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; tracked_pages narrows the search to the pages it names; pagination.total is then the ads of its own pages searched, an estimate, pagination.totalEstimated true, until the list is read to its end, or null when the search names none of its own pages). min_rank_delta is the minimum number of positions gained over rank_delta_window (7d by default, 14d, 30d). growth_rank: rising, stable, falling. age_ranges and exclude_age_ranges take 13-17, 18-24, 25-34, 35-44, 45-54, 55-64 and 65+; min_page_ads_launched and max_page_ads_launched count the ads the page launched over page_ads_launched_period (yesterday, last7d, last14d, last30d, last90d); shopify_stores_only keeps the ads of Shopify stores; theme_ids and exclude_theme_ids take theme ids from lookup_filter_ids (type themes), not names. In filters, adReachGrowth also takes min7 and max7 (7 days) and adsGrowth min90 and max90 (90 days). 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. extra.startIsFloor marks an ad started on January 1, 2018, the first day of the index's Meta ad dates. A row's reach is the ad index's reading, which can be a day behind the ad's record (scan_ad). A row's reachDelta1d, reachDelta7d and reachDelta30d are null beside a known reach when the index lists none (nullReasons not_measured), except over a window the ad started in, where it gained all the reach its row reads; scan_ad reads them from the ad's reach history. rank.rankDelta is the move over 7 days on rows and records (negative = moved up); a stopped ad keeps its last rank in rank.lastRank. Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points, a latest-ads list to its first; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field, and scan_ad an ad's whole record. filters is an optional object of named filters, e.g. {"status": "active", "minDaysRunning": 30, "mainCountries": ["FR"], "maxAdsPerBrand": 3}. Supported: adCopyHashes, adCountries, adLanguage, adRankBasis, adRankMode, adReachGrowth, adsGrowth, adsTimePeriod, ageRanges, categoryIds, countries, cpm, createdAfter, createdBefore, creationCountry, cta, excludeAdLanguages, excludeAgeRanges, excludeFormats, excludePixels, excludeShopifyApps, excludeThemes, formats, growthRank, hideDecliningRankAds, hideLowReach, hideNonEuUkAds, hideSavedAds, linkedDomain, mainCountries, market, maxAdOrder, maxAdRankValue, maxAdReachGrowth, maxAds, maxAdsPerBrand, maxAge, maxBestSellerPrice, maxDate, maxDaysRunning, maxDescriptionLength, maxDuplicates, maxFacebookLikes, maxFbPageCreationDate, maxInstagramFollowers, maxLastSeenDate, maxMonthlyVisits, maxPageAdsGrowth, maxPageAdsLaunched, maxPageReachGrowth, ma…

search_advertisers

ChatGPT
Search advertisers (Facebook pages). search_in: all (the default, as on the API: every field), brand (the page name), adCopy, websiteCopy, urlContains (URLs containing the text; domain is the same). sort_by: relevance, newest, activeAds, newAds, reach, reach14d, growth30d, followers, euAdsShare. timeframe (7d, 30d, 90d) keeps the advertisers that launched an ad in it, unless filters give minAdsLaunched or maxAdsLaunched. sex is the audience of the page's ads: men, women or unknown. technologies takes a slug, a name or an id (lookup_filter_ids with type technologies). Growth ranges (adsGrowth, pageReachGrowth, trafficGrowth) are percentages over 30 days (in filters, adsGrowth also takes min14 and max14, over 14 days, and trafficGrowth min90 and max90, over 90 days). exclude_age_ranges leaves out age buckets of the page's ads; the shop the page advertises: market_countries, main_market_countries, exclude_market_countries, shop_creation_countries, exclude_shop_creation_countries, min_products, max_products, shop_creation_after, shop_creation_before, and shopify_apps, themes (ids from lookup_filter_ids, with their exclude arguments). reach ranks by the total reach since tracking began (extra.totalReach), newAds by the new ads of 14 days, followers by the Facebook likes and Instagram followers together. 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 a window the index 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. Its new-ads counts then count every one of its ads, and where the index 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. Shares are fractions: extra.euAdsShare (0.0831 is 8.31%, the euAdsShare sort is unchanged), extra.adCountries {countryCode, ads, share}, extra.reachCountries {countryCode, impressions, share} and extra.reachGrowth30d. Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points, a latest-ads list to its first; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field, and scan_advertiser a page's whole record. filters is an optional object of named filters, e.g. {"minActiveAds": 50, "mainCountries": ["DE"], "technologies": ["shopify"]}. Supported: adCountries, adLanguage, adsGrowth, adsLaunchedPeriod, ageRanges, categoryIds, countries, countryFilterMode, cpm, creationCountries, excludeAgeRanges, excludeCreationCountries, excludeMarketCountries, excludeShopifyAppIds, excludeThemeIds, mainCountries, mainMarketCountries, marketCountries, maxActiveAds, maxAdsGrowth, maxAdsLaunched, maxAge, maxFacebookLikes, maxFbPageCreationDate, maxInstagramFollowers, maxPageReachGrowth, maxProductsCount, maxReach, maxReachPerPage, maxSpendPerPage, maxTraffic, maxTrafficGrowth, minActiveAds, minAdsGrowth, minAdsLaunched, minAge, minFacebookLikes, minFbPageCreationDate, minInstagramFollowers, minPageReachGrowth, minProductsCount, minReach, minReachPerPage, minSpendPerPage, minTraffic, minTrafficGrowth, pageNiches, pageReachGrowth, partners, sex, shopCreatedAfter, shopCreatedBefore, shopifyAppIds, shopifyLinked, technologies, themeIds, trackedPages, trafficGrowth. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-advertisers_query

search_emails

ChatGPT
Search brands' marketing emails by words in the subject, sender or content. shop (id or domain) narrows to one brand. campaign_type: Marketing, Newsletter, Welcome or Abandoned Cart (any case); without it (or an intent naming one), Marketing and Newsletter emails are listed. intent: best (that default listing), promo (promotional campaigns), newsletter, welcome, abandoned_cart, or all (every campaign type). Campaign types, categories, promotion types and events take the index's names in any case (lookup_filter_ids lists them with the emails each counts: type email_campaign_types, email_categories, email_promotion_types, email_events, and email_languages, email_countries, email_creation_countries for those filters). timeframe: 7d, 30d, 90d, this_month, last_month. Market countries (amongMarketCountries, countries) are any of the shop's: emails have no main market. A sentBefore date means before that day. Growth ranges are percentages over 30 days (in filters, adsGrowth also takes min7 and max7, over 7 days). Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points, a latest-ads list to its first; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field, and get_email_html an email's details and HTML. filters is an optional object of named filters, e.g. {"sentAfter": "2026-09-01", "promotionTypes": ["Discount %"]}. Supported: adsGrowth, amongMarketCountries, campaignTypes, categories, categoryIds, countries, creationCountries, emailCategoryIds, eventCategories, eventIds, eventNames, excludeLanguages, languages, maxActiveAds, maxActiveAdsGrowth, maxBestSellerPrice, maxMonthlyVisits, maxProductsCount, maxTrafficGrowth, minActiveAds, minActiveAdsGrowth, minBestSellerPrice, minMonthlyVisits, minProductsCount, minTrafficGrowth, promotionTypeIds, promotionTypes, sentAfter, sentBefore, shopCreatedAfter, shopCreatedBefore, shopIds, trafficGrowth. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-emails_query

search_google_ads_library

ChatGPT
Search Google ads. Searches are ranked by relevance; sort_by (newest, reach; not longestRunning) applies when browsing without a query (relevance with no query lists the newest; reach takes order desc only, and with status active lists few ads: in reach order the first ads are mostly ones Google stopped showing, so newest is the order that lists the ads Google shows now). format / formats: text, image or video. platform / platforms (the networks): Search, YouTube, Shopping, Maps, Other (Display is refused: an ad is listed by its main network, never Display). An ad that also ran on Display names it display in extra.networks (earlier answers named it other). Each ad has media.type (text, image or video) and media.url, the ad's image (for a video ad, its thumbnail: there is no video file), and transparencyUrl, the ad on Google's Ads Transparency Center, where a video ad plays. exclude_audience_countries works only without included audience countries (next to them it is ignored). hide_non_eu_uk_ads keeps the ads shown in an EU country or the UK (of your audience countries, those there). eu_only keeps the ads with a reach; hide_low_reach_ads and hide_low_impression_ads keep those with a reach of 1,000 or more (min_reach 1000). 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), so these three keep few ads; a null reach.value has nullReasons (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. traffic_growth is the shop's traffic growth in percent 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: those the index marks stopped, so an unknown ad is under neither); daysRunning counts the days from firstSeenAt to lastSeenAt, both included, and min_days_running and max_days_running keep the ads whose daysRunning is in range (extra.servedDays is the index's count, which goes on after an ad stops, so longestRunning is not a Google sort). With status active or a days bound, the total is null and a list where few ads match ends early (meta.partial). 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). extra.networks is the index's list of the ad's platforms. extra.shop.google holds the Google totals of the advertiser's website (a 0 reach, never reported, is left out; so is a 0 monthlyVisits of extra.shop, whose trafficGrowth30d comes only beside visits above 0). remarketing and interest_targeting keep the ads that target it (true) or do not (false); min_advertiser_reach and max_advertiser_reach bound the EU reach of the advertiser behind the ad. Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points, a latest-ads list to its first; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field, and scan_ad an ad's whole record. filters is an optional object of named filters, e.g. {"status": "active", "networks": ["youtube"]}. Supported: audienceCountries, categoryIds, countries, creationCountries, excludeCountryCodes, excludeCreationCountries, excludeMarketCountries, excludePixelIds, excludeShopifyAppIds, excludeThemeIds, formats, hideNonEuUkAds, interestTargeting, mainMarketCountries, marketCountries, maxAdvertiserReach, maxBestSellerPrice, maxDaysRunning, maxProductsCount, maxReach, maxTraffic, maxTrafficGrowth, minAdvertiserReach, minBestSellerPrice, minDaysRunning, minProductsCount, minReach, minTraffic, minTrafficGrowth, networks, pixelIds, publishedAfter, publishedBefore, remarketing, shopCreatedAfter, shopCreatedBefore, shopifyAppIds, status, themeIds, trafficGrowth, websiteIds. No…

search_products

ChatGPT
Search or browse store products in the product index. search_in: productName, productDescription, shop (the shop's domain) or url (the product's address); without it, the index's own match. shop: one shop's domain or id, to list that shop's products only (with no query). sort_by: relevance (the default), newest (the launch date, newest first; createdAt is the same), activeAds (live Meta ads, most first), spend (EU ad spend over the last 30 days, most first), estSales (the sales estimate, most first), adPressure (the ad share, most first) or bestSelling (the best seller rank in its shop, rank 1 first whatever the order). Each product has its price in the store's currency and in US dollars (pricing), its sales estimates in whole US dollars a day and a month (sales.estDailySales, and sales.estMonthlySales, 30 times the day), its units sold a day and a month, its reviews (reviews.rating is null with no review), its best seller rank (bestSeller.rank, 1 the best, and rankPercent, the rank as a percent of the shop's products: low is better), its Meta ads (advertising: live, total, launched in 30 days, adShare, spendShare, latestAds and their pictures in previewUrls), its EU reach and its EU spend in US dollars (eu), its weeks (weeks, oldest first: activeAds, adShare, euSpendDaily, euReachDaily), the countries it sells to, its launch date (publishedAt, UTC) and its shop (id, domain, name, logo, monthly sales estimate). nullReasons says why a figure is null. minPriceUsd and maxPriceUsd are US dollars; minEstMonthlySales and minUnitsSoldMonthly bound a month (30 days of the daily estimate), minEstDailySales and minUnitsSoldDaily a day (sent as 30 days of it); minAdShare and minSpendShare are percents; minEuReach is the EU reach over 30 days and minAdsLaunched the Meta ads launched in the last 30 days; minRating is the review score (0 to 5); hasPartnershipAds is true or false; publishedAfter and publishedBefore are days (YYYY-MM-DD); sellingCountries (a product that sells to any of them) and shopCountries take country codes, currencies currency codes and promoTypes percent-off. Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points, a latest-ads list to its first; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field. filters is an optional object of named filters, e.g. {"minPriceUsd": 20, "minActiveAds": 10, "subscription": "one-time"}. Supported: currencies, hasPartnershipAds, maxActiveAds, maxAdShare, maxAdsLaunched, maxEstDailySales, maxEstMonthlySales, maxEuReach, maxPriceUsd, maxRating, maxReviews, maxShopProductsCount, maxSpendShare, maxUnitsSoldDaily, maxUnitsSoldMonthly, minActiveAds, minAdShare, minAdsLaunched, minEstDailySales, minEstMonthlySales, minEuReach, minPriceUsd, minRating, minReviews, minShopProductsCount, minSpendShare, minUnitsSoldDaily, minUnitsSoldMonthly, promoTypes, publishedAfter, publishedBefore, sellingCountries, shop, shopCountries, subscription. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-products_query

search_products_by_image

ChatGPT
Find store products that look like a picture, each with its shop, the closest first. The picture comes once, as image_url (a direct http or https link to a PNG, JPG or WEBP image, downloaded by us) or image_base64 (the file itself, base64 or a data URI), up to 10 MB; the answer's meta.searchId reads the same search again with search_id (another page, sort, filter or max_per_shop), without sending the picture. Each row is a product row as search_products answers it, 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). sort_by: relevance (the default), estSales, activeAds, adPressure, newest, spend (EU ad spend over 30 days) or spend14d (over 14 days). max_per_shop: the closest 1, 3, 5, 10 or 20 matches of each shop (0: all). Pages of up to 32 rows. meta.total is the number of matches (the same whatever the sort), meta.depthCapped marks a list that ends before it (filters narrow it). On the Free plan an image search is ranked by relevance, with no filters. Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field. filters is an optional object of named filters, e.g. {"minPriceUsd": 20, "minActiveAds": 10}. Supported: currencies, hasPartnershipAds, maxActiveAds, maxAdShare, maxAdsLaunched, maxEstDailySales, maxEstMonthlySales, maxEuReach, maxPriceUsd, maxRating, maxReviews, maxShopProductsCount, maxSpendShare, maxUnitsSoldDaily, maxUnitsSoldMonthly, minActiveAds, minAdShare, minAdsLaunched, minEstDailySales, minEstMonthlySales, minEuReach, minPriceUsd, minRating, minReviews, minShopProductsCount, minSpendShare, minUnitsSoldDaily, minUnitsSoldMonthly, promoTypes, publishedAfter, publishedBefore, sellingCountries, shop, shopCountries, subscription. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-products_image_search

search_shops

ChatGPT
Search or browse shops. A search covers every tracked website (nike.com for "nike"), not only Shopify stores; a browse lists the shop index. With no query, no country and no filters, returns trending shops. match_mode: name (default), domain, productName, shopContains, all (the same as name). country is a 2-letter ISO code of the country the shop was created in. sort_by: relevance, newest, monthlyVisits, activeAds, productsCount, growth30d, advertiserCount, spend, estMonthlySales, unitsSold. languages are two-letter codes (fr; names such as french are converted); theme_ids, pixel_ids and shopify_app_ids take ids from lookup_filter_ids, 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 domain search (match_mode domain) lists the site with exactly that domain first (extra.exactDomainMatch), also when the shop index leaves it out (extra.inShopIndex false). A shop's advertising.activeAds are its main page's live ads and traffic.growth30d is a fraction (0.125 is +12.5%). A sales sort (estMonthlySales, unitsSold) lists one row per Shopify store, the most visited of its domains, naming the others in extra.sharedSalesWith (they share the store's sales; pagination.total is null until the list is read to its end); estMonthlySales ascending leaves out the shops with no sales estimate or one under 100 USD, growth30d the shops with no traffic growth or no visits in the latest month, and productsCount the shops whose count is raised to their best sellers (catalog.productsCountAtLeast) or null. A sales estimate of 0 next to units sold, or one too low for them 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 it while worth under five of its median-priced products), is null, extra.storeWide marks a domain with 0 visits carrying its 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), and nullReasons says why a figure is null (traffic.monthlyVisits not_measured: not measured yet, or 0 since its history went to 0 next to sales and units sold; catalog.productsCount not_measured: 0 with no product listed next to visits, sales or units sold). advertising.activeAds is its main page's live ads as the shop index counts them, which can be a day or more behind the shop's own record (brief_competitor reads it now). Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points, a latest-ads list to its first; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field, and brief_competitor or shop_report a shop's whole record. filters is an optional object of named filters, e.g. {"minMonthlyVisits": 50000, "isShopifyPlus": true, "mainMarketCountries": ["US"]}. Supported: adsGrowth, adsTimePeriod, categoryIds, countries, createdAfter, createdBefore, creationCountries, currencies, displayInTrending, excludeCreationCountries, excludeCurrencies, excludeLanguages, excludeMarketCountries, excludePixelIds, excludeShopifyAppIds, hasProducts, hasTikTok, isShopifyPlus, languages, mainMarketCountries, marketCountries, maxActiveAds, maxActiveAdsGrowth, maxAdvertisersCount, maxBestSellerPrice, maxEstimatedRevenue, maxMonthlySales, maxMonthlyVisits, maxProductsCount, maxTrafficGrowth, maxTrustpilotRating, maxTrustpilotReviewCount, maxUnitsSold, minActiveAds, minActiveAdsGrowth, minAdvertisersCount, minBestSellerPrice, minEstimatedRevenue, minMonthlySales, minMonthlyVisits, minProductsCount, minTrafficGrowth, minTrustpilotRating, minTrustpilotReviewCount, minUnitsSold, pixelIds, shopifyAppIds, shopi…

search_shops_by_image

ChatGPT
Find the shops selling what a picture shows, the most active advertisers first, each with its closest products and bestSimilarityScore; a brand's storefronts come back as one row with otherStorefronts (group_brands). The picture comes once, as image_url (a direct http or https link) or image_base64; meta.searchId reads the next shops with search_id and offset, without sending it. Costs 4 credits per shop returned. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-shops_image_search

search_tiktok_library

ChatGPT
Search TikTok ads and organic posts. type: ad, organic, all. domain, website_id (a shop id) or handle narrow to one brand: a shop's TikTok profiles, or for a shop with none, the posts linking to the shop or its stores on its domain. media_type: video or carousel. categories are the index's category names (Food, Beauty Care...; any case); hashtags are taken with or without the #. Searches are ranked by relevance; sort_by (newest, views, likes, rank, longestRunning) applies when browsing without a query; rank lists the best rank (1) first, whatever the order; longestRunning starts at the first TikToks (August 31, 2016, 22:00 UTC). In each row, metrics.engagementRate is (likes + comments + shares + saves) / views as a fraction, daysRunning the days since publication and metrics.rank its rank among its creator's posts (1 is the best); profile.followers is null when not counted and content.category null for the catch-all All. metrics.views, and the likes and saves that read 0 beside them, are null (nullReasons not_measured, engagementRate too) when the index read 0 views next to likes, comments, shares or saves, or fewer views than likes: it has not counted the post; views or likes with order=asc list the posts whose views are counted (a view or more, minViews 1, and no fewer views than likes), from the first TikToks on: the others are left out of these two orders only. publishedAt is UTC. published_after and published_before are UTC too (a date alone is the start of its day, and published_before lists the posts before it), and min_days_running / max_days_running count from the UTC day, as daysRunning does. The profile behind the post: profile_created_after / profile_created_before, min_profile_ads_share / max_profile_ads_share (the percent of its posts that are ads, 0 to 100), min_profile_posts / max_profile_posts; the shop the post links to: market_countries, main_market_countries, exclude_market_countries, shop_creation_countries, min_traffic, min_products, min_best_seller_price, shop_creation_after, and shopify_apps, themes, pixels (ids from lookup_filter_ids, with their exclude arguments). The categories filter takes the names lookup_filter_ids lists with type tiktok_categories. Rows are compact by default (detail compact: ids, names and domains, the key figures and dates, each link, one picture, text cut to 200 characters, histories cut to their last points, a latest-ads list to its first; no screenshot, preview list or raw breakdown), under the full row's field names; detail="full" gives every field, and scan_ad a post's whole record. filters is an optional object of named filters, e.g. {"type": "ad", "minViews": 100000, "domain": "gymshark.com"}. Supported: categories, categoryIds, countries, creationCountries, domain, excludeCreationCountries, excludeHashtags, excludeMarketCountries, excludePixelIds, excludeShopifyAppIds, excludeThemeIds, handle, hasShopLinked, hashtags, isPinned, languages, mainMarketCountries, marketCountries, maxBestSellerPrice, maxDaysRunning, maxDuration, maxFollowers, maxProductsCount, maxProfileAdsShare, maxProfilePosts, maxProfileViews, maxTraffic, maxTrafficGrowth, maxViews, mediaType, mediaTypes, minBestSellerPrice, minDaysRunning, minDuration, minFollowers, minProductsCount, minProfileAdsShare, minProfilePosts, minProfileViews, minTraffic, minTrafficGrowth, minViews, pixelIds, profileCreatedAfter, profileCreatedBefore, publishedAfter, publishedBefore, shopCreatedAfter, shopCreatedBefore, shopifyAppIds, themeIds, tiktokPageId, tiktokPageIds, trafficGrowth, type, updatedAfter, updatedBefore, websiteId. Not available: keyword_mode, max_engagement_rate, min_engagement_rate, min_likes, min_shares. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#ep-tiktok_query

set_favorite_folder_visibility

ChatGPT
Make a favorite folder private or shared (visibility: private, or organization, also called workspace as on boards: the workspace's members see it).

shop_report

ChatGPT
One report on a shop (id or domain). report: feed (its newest Meta ads, Google ads, TikTok ads and emails, each with its total; its Meta ads are its own, as search_ads lists a shop's; snapshot_date for a past day), products (its products, best sellers first, their createdAt, publishedAt and updatedAt in UTC: meta.shopUtcOffset is the shop's own clock, and a product with no offset to read keeps its local times in createdAtLocal, publishedAtLocal and updatedAtLocal; with snapshot_date, as it listed them that day), advertisers (its Facebook pages, each with its live and total ads, likes, profile, creation date and ad library link; with its page selector, each page's ads to the shop and landing pages, and meta.domains, the shop's domains with their ads), q4_season (its Black Friday season, November 1 to December 4 of year, day by day: ads live and launched, their reach, the creatives, landing pages and products it launched, and the season's best), q4_landing_pages and q4_creatives (the season's, date_from and date_to inside it), landing_page (one landing page, by url: its figures, shareOfAds the ads linking to it out of the shop's live ads, the newest ads linking to it as search_ads shows them, its products and screenshots), advertiser_landing_pages (the landing pages one of its Facebook pages sends ads to: advertiser_id), ad_ranking (its Meta ads ranked over the last days days up to yesterday, 7, 14 or 30: mode best-rank, the best rank each reached, or rank-delta, the places each gained; each row's rank.rankDelta and rank.improvementPct are its change over the window: negative when it moved up, as in every ad, and a fraction), ad_rank_series (the daily rank of ad_ids over that window, with the same rankDelta and improvementPct), creative_tests (its ads grouped by launch day, newest first, a batch with an ad running a week or more marked a winner; media_type all, image or video, status all, active or inactive, keywords) and creative_test (the ads of one date, with the as_of its creative_tests row carries). The ranking and the creative tests read the shop's 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). The feed's items and the ranking's ads are compact rows by default (detail compact, as the searches answer them: ids, names and domains, the key figures, rank figures and dates, each link, one picture, text cut to 200 characters); detail="full" gives every field, and scan_ad an ad's whole record. An answer longer than 70,000 characters keeps the first rows that fit, or of a record the first items of each long list, sharing the room among them; meta.cut says what was left out and pagination.next the arguments that read on from it. Reference: https://sellwinners.com/docs#g-shops

update_board

ChatGPT
Rename one of your boards, or change its description or its visibility label (private, workspace or public). What you send replaces the current value; the rest stays.

update_favorite_folder

ChatGPT
Rename a favorite folder, or move it (move=true with parent_id, null for the top level).

usage_get

ChatGPT
Your plan, its credits this month, how many you have used and when they renew, and your top-up credits. One credit is one result returned: one brand's details, one ad, or one row of a list; an empty result is free. This tool costs no credit.

write_ad_hooks

ChatGPT
Write three short opening lines (hooks) for an ad of a product, as POST /v1/tools/ad-hooks does. niche: the market it sells in (2 to 80 characters, such as skincare); product: what the ad sells (2 to 100). angle: pain, curiosity, social_proof, transformation or urgency. platform: meta (Facebook and Instagram), tiktok or both. language: en or fr. regenerate: the text of one hook to write again (one new hook comes back). Each call is one generation, a regenerate too: there is no monthly limit, and a few a minute at most (fair use). meta.allowance is what is left. idempotency_key (8 to 64 letters, digits, hyphens or underscores): the same call sent again within 2 minutes gets the first answer and is not counted again. Nothing you send and no hook is stored.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps