Zernio
Zernio
API Reference

Insights

List lead conversationsGETGoogle Local Services Ads leadsGETSubmit async insights reportPOSTGet ad analyticsGETPoll an async insights report runGETGoogle Ads search terms reportGETGet campaign analyticsGETGet historical keyword metricsPOSTGenerate keyword ideasPOSTFlexible live insights queryGET
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources
Insights

Generate keyword ideas

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.


PlatformsGoogle
POST
/v1/ads/keywords/ideas

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

{  "customerId": "string",  "data": [    {}  ],  "aggregateMetricResults": {},  "paging": {    "nextPageToken": "string"  }}
Was this page helpful?

Get historical keyword metrics

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

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).

accountId*string

Zernio googleads SocialAccount id.

customerId?string

Numeric Google Ads customer id (no dashes); only needed when the connection has several accounts.

seedKeywords?array<>

Seed terms. Provide these, seedUrl, or both.

Items1 <= items <= 20
seedUrl?string

Landing page to mine for ideas. Provide this, seedKeywords, or both.

Formaturi
countries?array<>

ISO 3166-1 alpha-2 country codes. Omitted = worldwide.

Items1 <= items <= 10
languageConstantId?string

Google languageConstant id (1000 = English).

Default"1000"
network?string
Default"GOOGLE_SEARCH"

Value in

  • "GOOGLE_SEARCH"
  • "GOOGLE_SEARCH_AND_PARTNERS"
includeAdultKeywords?boolean
pageSize?integer
Range1 <= value <= 10000
pageToken?string

Cursor from paging.nextPageToken of the previous page.