GET /v1/winners

Search winning ads

Find winning e-commerce ads from the Meta Ad Library (EU/UK delivered ads, confirmed e-commerce shops only). Winner = live 21+ days by default. Each result: the ad's link on the Ad Library, the brand and its shop link, format, days live, versions (Meta's count of ads sharing the creative), active or stopped, EU reach (Meta's total, the only number of people) with the day it was read, the share of Meta's age x gender breakdown in the country / segment you filtered on (a share, never people), and the verbatim hook when its script was cut into sections. A field we don't have is absent, never guessed. No media and no person-name search. Costs 5 credits per search (0 if nothing matches).

Cost: 5 credits per call. A call that returns nothing costs 0.

Parameters

ParameterTypeWhat it does
nichestringniche of the keyword search that found the brand (see filters)
countrystring2-letter code: ads with Meta reach in that country, e.g. FR
formatstringMeta's display format: VIDEO, IMAGE, DCO, DPA, CAROUSEL… (creative types like UGC are not labelled yet)
hook_typestringnot measured yet: returns nothing
agestring: 13-17, 18-24, 25-34, 35-44, 45-54, 55-64, 65+
genderstring: female, male
activebooleantrue = still running at our last read, false = stopped
min_days_liveintegerdefault 21 Min 0.
max_days_liveinteger Min 0.
min_eu_reachinteger Min 0.
min_country_sharenumberneeds country: the country's minimum share of Meta's breakdown, 0 to 1 Min 0. Max 1.
min_segment_sharenumberneeds age or gender: the segment's minimum share of Meta's breakdown Min 0. Max 1.
min_versionsinteger Min 0.
has_scriptbooleantrue = only ads whose script is cut into sections
started_afterstring
started_beforestring
sortstring: country_share, days_live, eu_reach, newest, segment_share, versionsdefault: eu_reach if a country, age or gender is given, else days_live
limitintegerdefault 20 Min 1. Max 50.
offsetinteger Min 0. Max 1000.

Errors

400A parameter is refused (the answer lists the accepted values). Not billed.
401Missing, unknown or revoked API key.
402Not enough credits for this call. Credits never expire; top up with a pack.
429Too many requests for this key. Wait Retry-After seconds. Not billed.
503Server busy or a query took too long. Retry. Not billed.