Generate keyword ideas (Google Keyword Planner)
Google Ads only. Runs Keyword Planner's generateKeywordIdeas from seed keywords, a seed URL,
or both, returning idea rows verbatim (avgMonthlySearches, competition, competitionIndex,
top-of-page bid micros, monthlySearchVolumes). Counters are int64s encoded as strings; bid
values are micros of the account currency. Omitting countries targets worldwide.
API key authentication - use your Zernio API key as a Bearer token
In: header
Zernio googleads SocialAccount id.
Numeric Google Ads customer id (no dashes); only needed when the connection has several accounts.
Seed terms. Provide these, seedUrl, or both.
1 <= items <= 20Landing page to mine for ideas. Provide this, seedKeywords, or both.
uriISO 3166-1 alpha-2 country codes. Omitted = worldwide.
1 <= items <= 10Google languageConstant id (1000 = English).
"1000""GOOGLE_SEARCH""GOOGLE_SEARCH" | "GOOGLE_SEARCH_AND_PARTNERS"1 <= value <= 10000Cursor from paging.nextPageToken of the previous page.
Response Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adinsights.generateKeywordIdeas({ body: { accountId: 'account_abc123', },});console.log(data);{
"customerId": "string",
"data": [
{}
],
"aggregateMetricResults": {},
"paging": {
"nextPageToken": "string"
}
}{
"error": "Unauthorized"
}Historical keyword metrics (Google Keyword Planner) POST
Google Ads only. Runs Keyword Planner's generateKeywordHistoricalMetrics for up to 1,000 exact keywords: historical search volume, competition and top-of-page bid ranges, plus averageCpcMicros when includeAverageCpc is set. Rows come back verbatim; counters are int64s encoded as strings, bid/CPC values are micros of the account currency.
Flexible live insights query GET
Live, flexible insights query. The account's platform picks the contract: **Meta (facebook/instagram)**: forwards caller-chosen `fields`, `breakdowns` and `filtering` to any Meta insights node and returns Meta's rows verbatim. `objectId` (required) selects the node; `level` sets row granularity. Semantic validation is Meta's: an unknown field or invalid breakdown combination returns a 400 carrying Meta's message. For long ranges or agency-scale accounts prefer the async variant (POST /v1/ads/insights/reports). **Google Ads (googleads)**: raw GAQL passthrough. Send any read-only GAQL SELECT via `query` (campaign/keyword/search-term/geo/demographic/asset/shopping resources, `change_event`, any `segments.*`) and rows come back verbatim (camelCase, counters as strings). Results are paged at a fixed 10,000 rows; follow `paging.nextPageToken` with `pageToken`. `customerId` is only needed when the connection has several Google Ads accounts. Semantic validation is Google's: an invalid query returns a 400 carrying Google's message (note: selecting `segments.date` requires a finite date filter).