add_board_item
ChatGPTsource_type: meta_ad, google_ad, tiktok, shop, email, advertiser or product (a product as a search last showed it).By SellWinners
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.
source_type: meta_ad, google_ad, tiktok, shop, email, advertiser or product (a product as a search last showed it).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.folder_id files it in one of your tracker folders. Adds to your account. Reference: https://sellwinners.com/docs#ep-tracker_createfocus 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.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_statssnapshot_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.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-shopmetric 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_comparead_id: the ad's id from search_ads or scan_ad. Needs confirm=true. delete_ad_share_link removes the link.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.kind), at the top level or inside another folder (parent_id). Adds to your account.product_id: a row's ref, from search_products or product_launch_radar. Needs confirm=true. delete_product_share_link removes the link. Reference: https://sellwinners.com/docs#ep-product_sharefocus: 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.focus: new_ads or active_ads. event_types: new_meta_ads (the only activity followed).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.mode: delete_items, move_items_to_root or move_items_to_folder (with target_folder_id). Needs confirm=true.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.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_similarniche: 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.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.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_adsbrand), 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.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_htmlproduct_id: a row's ref, from search_products or product_launch_radar. status: active or inactive. Reference: https://sellwinners.com/docs#ep-product_adsscope: workspace or personal. state: active or archived. kind: folder or collection. surface: ads, shops, landing, emails, products, advertisers.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.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.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.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-lookuptype: 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-facetskind 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.position: its place there).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_queryfolder_id from list_brandtracker_folders): the new name replaces the old one.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.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.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_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_queryshop (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_querysort_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_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_queryimage_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_searchmatch_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…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_searchtype: 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_queryvisibility: private, or organization, also called workspace as on boards: the workspace's members see it).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-shopsniche: 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.Click any prompt to copy it.