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

Google Local Services Ads leads

Leads generated by Local Services Ads (phone calls, messages, bookings), read live from Google's local_services_lead resource, newest first. No persistence: Google is the source of truth and lead/credit statuses keep changing server-side. Google never returns healthcare-category leads, and WIPED_OUT leads arrive with contact erased (contact is null). Draws on the shared Google Ads operations budget.


PlatformsGoogle
GET
/v1/ads/local-services/leads

Authorization

bearerAuth
AuthorizationBearer <token>

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

In: header

Query Parameters

accountId*string

Google ads SocialAccount id.

customerId?string

Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer.

fromDate?string

Leads created at/after this day.

Formatdate
toDate?string

Leads created at/before this day.

Formatdate
leadType?string

Value in

  • "PHONE_CALL"
  • "MESSAGE"
  • "BOOKING"
leadStatus?string

Google LocalServicesLeadStatus enum value (e.g. NEW, BOOKED, WIPED_OUT).

chargedOnly?boolean

true = only leads Google charged for.

pageToken?string

Cursor from paging.nextPageToken of the previous page.

Response Body

application/json

application/json

application/json

application/json

application/json

{  "customerId": "string",  "data": [    {      "id": "string",      "leadType": "string",      "categoryId": "string",      "serviceId": "string",      "contact": {        "consumerName": "string",        "email": "string",        "phoneNumber": "string"      },      "status": "string",      "createdTime": "string",      "locale": "string",      "charged": true,      "creditState": "string",      "creditStateLastUpdate": "string"    }  ],  "paging": {    "nextPageToken": "string"  }}
Was this page helpful?

List lead conversations

Conversation entries of one Local Services lead: phone calls (duration, recording URL) and messages (text, attachment URLs), oldest first. Read live from `local_services_lead_conversation`, always scoped to a single lead. Call-recording URLs require read access on the Google Ads account. Draws on the shared Google Ads operations budget.

Submit async insights report

Submits an asynchronous Meta insights report. Same query surface as GET /v1/ads/insights, but in the JSON body; Meta processes the report server-side, which is the right choice for long ranges or large accounts where the sync query is slow or rate-limited. Returns a `reportRunId` to poll via GET /v1/ads/insights/reports/{reportRunId}.