Google Ads
Search Google Ads creatives with the same filters as the in-app Google Ads tab. Use GET /api/v1/google-ads with your API key (dashboard /api/google-ads is session-oriented).
/api/v1/google-adsSearch Google Ads creatives from the WinningHunter index.
Clé X-API on every request.Query parameters
rechercherstringFree-text search. Alias: keyword.
searchkeywordstringSearch scope (All, landingurl, adtext, …).
pageinteger1-based page index.
limiteintegerPage size; max 48.
trierstringe.g. lastseen, firstseen, reach, adspend, days_running.
sort_dirstringstatusstringactive | inactive. Alias: is_active=1/0.
country_incstringcountry_excstringformatstringimage | video | text | …
platformstringdate_de_débutstringLast shown from (Y-m-d).
date_tostringfirst_seen_fromstringfirst_seen_tostringdays_minstringdays_maxstringreach_minstringreach_maxstringadspend_minstringadspend_maxstringadspend_cpmstringCPM used for spend estimates.
domainstringvisits_minstringvisits_maxstring
curl -sS \
-H "X-API-Key: $WH_API_KEY" \
"{origin}/api/v1/google-ads?search=skincare%20serum&searchkeyword=All&page=1&limit=24&sort=lastseen&sort_dir=desc&status=string&country_inc=US&country_exc=string&format=string&platform=string&date_from=string&date_to=string&first_seen_from=string&first_seen_to=string&days_min=string&days_max=string&reach_min=string&reach_max=string&adspend_min=string&adspend_max=string&adspend_cpm=11&domain=string&visits_min=string&visits_max=string"const res = await fetch(`${ORIGIN}/api/v1/google-ads?search=skincare%20serum&searchkeyword=All&page=1&limit=24&sort=lastseen&sort_dir=desc&status=string&country_inc=US&country_exc=string&format=string&platform=string&date_from=string&date_to=string&first_seen_from=string&first_seen_to=string&days_min=string&days_max=string&reach_min=string&reach_max=string&adspend_min=string&adspend_max=string&adspend_cpm=11&domain=string&visits_min=string&visits_max=string`, {
method: 'GET',
headers: {
'X-API-Key': process.env.WH_API_KEY,
},
});
const data = await res.json();import os, requests
res = requests.get(
f"{ORIGIN}/api/v1/google-ads?search=skincare%20serum&searchkeyword=All&page=1&limit=24&sort=lastseen&sort_dir=desc&status=string&country_inc=US&country_exc=string&format=string&platform=string&date_from=string&date_to=string&first_seen_from=string&first_seen_to=string&days_min=string&days_max=string&reach_min=string&reach_max=string&adspend_min=string&adspend_max=string&adspend_cpm=11&domain=string&visits_min=string&visits_max=string",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json(){
"success": true,
"data": [
{
"productid": "gads_8471028374650192",
"doc_id": "gads_8471028374650192",
"creative_id": "CR8471028374650192",
"platform": "google",
"pageName": "Glow Beauty Co.",
"advertiser_name": "Glow Beauty Co.",
"advertiser_id": "AR1234567890",
"page_id": "AR1234567890",
"caption": "Vitamin C Serum — Brighter Skin in 2 Weeks",
"headline": "Vitamin C Serum — Brighter Skin in 2 Weeks",
"copy": "Dermatologist-tested. Free shipping over $35.",
"description": "Dermatologist-tested. Free shipping over $35.",
"urlStore": "https://glowbeautyco.com",
"domain": "glowbeautyco.com",
"target_domain": "glowbeautyco.com",
"format": "video",
"google_platform": "youtube",
"media_type": "video",
"is_video": true,
"is_active": true,
"daysrunning": 128,
"first_shown_at": "2024-11-08T00:00:00Z",
"last_shown_at": "2026-03-14T00:00:00Z",
"lastSeen": "2026-03-14T00:00:00Z",
"total_views": 150000,
"total_adspend": 1650,
"ad_reach_lower": 120000,
"ad_reach_upper": 150000,
"countries": [
"US",
"CA"
],
"regions": [
{
"country_code": "US"
}
],
"store_traffic": {
"monthly_visits": 185000,
"domain": "glowbeautyco.com"
},
"transparency_ad_url": "https://adtransparency.google.com/…",
"adspend_cpm": 11,
"saved": false,
"hidden": false
}
],
"total": 842,
"total_relation": "eq",
"pagination": {
"page": 1,
"limit": 24,
"total": 842,
"pages": 36,
"total_relation": "eq"
},
"adspend_cpm": 11
}{
"success": false,
"error": "Unauthorized"
}{
"success": false,
"error": "WinningHunter Basic plan or higher required"
}{
"success": false,
"error": "No API credits remaining. Buy an add-on pack or wait until next monthly reset.",
"credits": {
"used": 20000,
"limit": 20000,
"remaining": 0,
"addon_remaining": 0,
"total_remaining": 0
},
"purchase": {
"url": "https://…/checkout-api-credits?credits=…"
}
}{
"success": false,
"error": "lookup_failed"
}Pagination: 1-based page + limite (max 48). Global browse returns share-card objects in data[] (dashboard card shape: pageName, daysrunning, urlStore, …) — not the raw list-item shape. regions[] always includes country_code when present; impressions_lower / impressions_upper appear only when indexed on the creative.
Store-scoped Google Ads
Browse Google Ads for a tracked Shopify store (same data as the store detail Google Ads tab). Requires storeid (WinningHunter store id). Each route costs 1 crédit API.
| Method | Chemin | Objectif |
|---|---|---|
| OBTENIR | /api/v1/store/google-ads |
Paginated creatives (page, limite, filters) |
| OBTENIR | /api/v1/store/google-ads/count |
Total count for store domains |
| OBTENIR | /api/v1/store/google-ads/detail |
Single creative (doc_id) |
| OBTENIR | /api/v1/store/google-ads/overview |
Store-level KPI rollup |
| OBTENIR | /api/v1/store/google-ads/advertiser |
Advertiser rollup (advertiser_id) |
| OBTENIR | /api/v1/store/google-ads/creative |
Creative metrics history (creative_id) |
/api/v1/store/google-adsGoogle Ads creatives linked to a tracked store domain.
Clé X-API on every request.Query parameters
storeidstringrequiredWinningHunter tracked store id.
pageintegerlimiteintegerMax 100.
rechercherstringformatstringis_activebooleantrierstringsort_dirstring
curl -sS \
-H "X-API-Key: $WH_API_KEY" \
"{origin}/api/v1/store/google-ads?storeid=string&page=1&limit=24&search=string&format=string&is_active=true&sort=lastseen&sort_dir=desc"const res = await fetch(`${ORIGIN}/api/v1/store/google-ads?storeid=string&page=1&limit=24&search=string&format=string&is_active=true&sort=lastseen&sort_dir=desc`, {
method: 'GET',
headers: {
'X-API-Key': process.env.WH_API_KEY,
},
});
const data = await res.json();import os, requests
res = requests.get(
f"{ORIGIN}/api/v1/store/google-ads?storeid=string&page=1&limit=24&search=string&format=string&is_active=true&sort=lastseen&sort_dir=desc",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json(){
"success": true,
"domain": "glowbeautyco.com",
"domains": [
"glowbeautyco.com",
"www.glowbeautyco.com"
],
"items": [
{
"doc_id": "gads_8471028374650192",
"creative_id": "CR8471028374650192",
"advertiser_id": "AR1234567890",
"advertiser_name": "Glow Beauty Co.",
"domain": "glowbeautyco.com",
"format": "video",
"platform": "youtube",
"is_active": true,
"headline": "Vitamin C Serum — Brighter Skin in 2 Weeks",
"description": "Dermatologist-tested. Free shipping over $35.",
"days_running": 128,
"first_shown_at": "2024-11-08T00:00:00Z",
"last_shown_at": "2026-03-14T00:00:00Z",
"ad_reach_lower": 120000,
"ad_reach_upper": 150000,
"saved": false
}
],
"pagination": {
"page": 1,
"limit": 24,
"total": 842,
"pages": 36
}
}{
"success": false,
"error": "Unauthorized"
}{
"success": false,
"error": "No API credits remaining. Buy an add-on pack or wait until next monthly reset."
}/api/v1/store/google-ads/countTotal Google Ads count for a tracked store's domains.
Clé X-API on every request.Query parameters
storeidstringrequired
curl -sS \
-H "X-API-Key: $WH_API_KEY" \
"{origin}/api/v1/store/google-ads/count?storeid=string"const res = await fetch(`${ORIGIN}/api/v1/store/google-ads/count?storeid=string`, {
method: 'GET',
headers: {
'X-API-Key': process.env.WH_API_KEY,
},
});
const data = await res.json();import os, requests
res = requests.get(
f"{ORIGIN}/api/v1/store/google-ads/count?storeid=string",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json(){
"success": true,
"count": 842,
"domain": "glowbeautyco.com",
"domains": [
"glowbeautyco.com"
]
}/api/v1/store/google-ads/detailSingle creative by doc id.
Clé X-API on every request.Query parameters
doc_idstringrequired
curl -sS \
-H "X-API-Key: $WH_API_KEY" \
"{origin}/api/v1/store/google-ads/detail?doc_id=string"const res = await fetch(`${ORIGIN}/api/v1/store/google-ads/detail?doc_id=string`, {
method: 'GET',
headers: {
'X-API-Key': process.env.WH_API_KEY,
},
});
const data = await res.json();import os, requests
res = requests.get(
f"{ORIGIN}/api/v1/store/google-ads/detail?doc_id=string",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json(){
"success": true,
"item": {
"doc_id": "AR15309357617457922049_CR09795573152263176193",
"creative_id": "CR09795573152263176193",
"advertiser_id": "AR15309357617457922049",
"advertiser_name": "Comfrt LLC",
"advertiser_ads_count": 1776,
"domain": "comfrt.com",
"target_domain": "comfrt.com",
"format": "image",
"platform": "display",
"is_active": true,
"headline": "Comfrt Airplane Mode Travel Hoodie | Navy | Oversized | S | Small",
"description": "Comfrt · [Original currency]",
"image_url": "https://pub-ad0474935e8d45af9db270f106d272ec.r2.dev/google-ads-previews/AR15309357617457922049_CR09795573152263176193.png",
"media_url": "https://pub-ad0474935e8d45af9db270f106d272ec.r2.dev/google-ads-previews/AR15309357617457922049_CR09795573152263176193.png",
"is_video": false,
"country_codes": [
"PL",
"BE",
"ES",
"FR",
"DE"
],
"regions": [
{
"country_code": "PL"
},
{
"country_code": "BE"
}
],
"region_count": 15,
"days_running": 113,
"first_shown_at": "2026-05-02T14:50:11.825186Z",
"last_shown_at": "2026-08-24T10:11:53.837228Z",
"store_traffic": {
"monthly_visits": 14334941,
"storeid": "b7963cd2df6f01b2656a02c06f5d9d58",
"domain": "comfrt.com"
},
"transparency_ad_url": "https://adstransparency.google.com/advertiser/AR15309357617457922049/creative/CR09795573152263176193?region=anywhere",
"saved": false
}
}{
"success": false,
"error": "doc_id_required"
}{
"success": false,
"error": "not_found"
}/api/v1/store/google-ads/overviewStore-level Google Ads KPI rollup.
Clé X-API on every request.Query parameters
storeidstringrequired
curl -sS \
-H "X-API-Key: $WH_API_KEY" \
"{origin}/api/v1/store/google-ads/overview?storeid=string"const res = await fetch(`${ORIGIN}/api/v1/store/google-ads/overview?storeid=string`, {
method: 'GET',
headers: {
'X-API-Key': process.env.WH_API_KEY,
},
});
const data = await res.json();import os, requests
res = requests.get(
f"{ORIGIN}/api/v1/store/google-ads/overview?storeid=string",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json(){
"success": true,
"overview": {
"domain": "comfrt.com",
"domains": [
"comfrt.com",
"comfrtclothing.myshopify.com"
],
"global_ads": 1995,
"total_ads": 2015,
"reach": 10139000,
"reach_eu_uk": 9747000,
"reach_eu_uk_pct": 96.1,
"growth_pct": 11.1,
"platform_mix": [
{
"key": "display",
"label": "Display",
"count": 1323,
"pct": 66.3
},
{
"key": "youtube",
"label": "YouTube",
"count": 480,
"pct": 24.1
},
{
"key": "search",
"label": "Search",
"count": 162,
"pct": 8.1
}
],
"countries": [
{
"country_code": "US",
"count": 1009,
"pct": 50.6
},
{
"country_code": "CA",
"count": 256,
"pct": 12.8
}
],
"history": {
"page_reach_upper": {
"2026-08-17": 2763000,
"2026-08-24": 10139000
},
"active_ads_count": {
"2026-08-17": 1795,
"2026-08-24": 1995
},
"ads_launched_count": {
"2026-08-17": 1,
"2026-08-24": 82
}
}
}
}/api/v1/store/google-ads/advertiserAdvertiser rollup plus trends/history.
Clé X-API on every request.Query parameters
advertiser_idstringrequired
curl -sS \
-H "X-API-Key: $WH_API_KEY" \
"{origin}/api/v1/store/google-ads/advertiser?advertiser_id=string"const res = await fetch(`${ORIGIN}/api/v1/store/google-ads/advertiser?advertiser_id=string`, {
method: 'GET',
headers: {
'X-API-Key': process.env.WH_API_KEY,
},
});
const data = await res.json();import os, requests
res = requests.get(
f"{ORIGIN}/api/v1/store/google-ads/advertiser?advertiser_id=string",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json(){
"success": true,
"advertiser": {
"advertiser_id": "AR15309357617457922049",
"advertiser_name": "Comfrt LLC",
"domain": "comfrt.com",
"total_ads_count": 1796,
"active_ads_count": 1995,
"ad_count_lower": 3000,
"ad_count_upper": 4000,
"page_reach_upper": 10118000,
"logo_url": "https://www.google.com/s2/favicons?domain=comfrt.com&sz=64",
"top_countries_by_ads": [
{
"country_code": "DE",
"count": 983
},
{
"country_code": "CA",
"count": 240
}
],
"top_countries_by_impressions": [
{
"country_code": "DE",
"impressions_upper": 315000
},
{
"country_code": "IE",
"impressions_upper": 574000
}
],
"updated_at": "2026-08-24T10:55:33.660563+00:00"
},
"trends": {
"active_ads_pct": 11.1,
"page_reach_pct": 267
},
"history": {
"page_reach_upper": {
"2026-08-17": 2763000,
"2026-08-24": 10139000
},
"active_ads_count": {
"2026-08-17": 1795,
"2026-08-24": 1995
},
"ads_launched_count": {
"2026-08-17": 1,
"2026-08-24": 82
}
}
}{
"success": false,
"error": "advertiser_id_required"
}{
"success": false,
"error": "not_found"
}/api/v1/store/google-ads/creativeWeekly impression/reach history for one creative.
Clé X-API on every request.Query parameters
creative_idstringrequired
curl -sS \
-H "X-API-Key: $WH_API_KEY" \
"{origin}/api/v1/store/google-ads/creative?creative_id=string"const res = await fetch(`${ORIGIN}/api/v1/store/google-ads/creative?creative_id=string`, {
method: 'GET',
headers: {
'X-API-Key': process.env.WH_API_KEY,
},
});
const data = await res.json();import os, requests
res = requests.get(
f"{ORIGIN}/api/v1/store/google-ads/creative?creative_id=string",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
)
data = res.json(){
"success": true,
"creative_id": "CR09795573152263176193",
"history": {
"page_reach_upper": {
"2026-08-17": 0,
"2026-08-24": 12000
}
}
}{
"success": false,
"error": "creative_id_required"
}Shape notes: histoire is an object of metric series (not an array). Each series maps YYYY-MM-DD → number. Creative history is often sparse (one or a few weeks). Overview/advertiser history may also include platform_mix week buckets.
Shape split:
| Route | Creatives array key | Item shape |
|---|---|---|
GET /api/v1/google-ads |
data |
Share card (daysrunning, pageName, …) |
GET /api/v1/store/google-ads |
items |
List item (days_running, headline, …) |
Session equivalents remain at /api/store/google-ads/* for browser use.