List Search keywords
Returns the Google Search keyword criteria (positive and negative) synced from connected Google Ads accounts, one row per ad-group keyword. Populated by the periodic ads discovery sweep (roughly every 3 hours per account), so keywords added on Google appear with that delay. Campaign-level negative keywords are not included; only ad-group-level criteria are.
API key authentication - use your Zernio API key as a Bearer token
In: header
Query Parameters
Page number (1-based)
11 <= value501 <= value <= 500Social account ID
Platform ad account ID (Google customer ID). Mirrors the same filter on /v1/ads.
Profile ID
Platform campaign ID
Platform ad group ID (Google ad group)
Keyword criterion status
"active" | "paused""exact" | "phrase" | "broad" | "unknown"true = negative keywords only, false = positive only. Omit for both.
Case-insensitive substring match on the keyword text
length <= 200Response Body
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adcampaigns.listAdKeywords();console.log(data);{
"keywords": [
{
"id": "string",
"accountId": "string",
"profileId": "string",
"platform": "google",
"adAccountId": "string",
"campaignId": "string",
"campaignName": "string",
"campaignStatus": "string",
"adSetId": "string",
"adSetName": "string",
"adSetStatus": "string",
"keyword": "string",
"matchType": "exact",
"status": "active",
"negative": true,
"syncedAt": "2019-08-24T14:15:22Z"
}
],
"pagination": {
"page": 0,
"limit": 0,
"total": 0,
"pages": 0
}
}{
"error": "string",
"type": "invalid_request_error",
"code": "string",
"param": "string",
"platform": "string",
"platformError": {},
"details": {}
}{
"error": "Unauthorized"
}List campaigns GET
Returns campaigns as virtual aggregations over ad documents grouped by platform campaign ID. Metrics (spend, impressions, clicks, etc.) are summed across all ads in each campaign. Campaign status is derived from child ad statuses (active > pending_review > paused > error > completed > cancelled > rejected).
List ads GET
Returns a paginated list of ads with metrics computed over an optional date range. Use source=all to include externally-synced ads from platform ad managers. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. To find the Zernio ad behind a comment you see in Meta Business Manager, filter by platformAdId (the Meta ad ID), effectiveObjectStoryId (Facebook), or effectiveInstagramMediaId (Instagram) — those are the post/media the ad's engagement lives on, and are also returned on each ad's `creative` object. Then call GET /v1/ads/{adId}/comments with the returned ad id.