Ads · Ad Insights
Returns the Google Local Services Ads leads. Works with Google Ads.
GET
https://api.pozy.ai/v1/ads/local-services/leadsGoogle WorkspacelistLocalServicesLeads
Guides: Google Ads, Ads reporting
Request
Send your API key as Authorization: Bearer pz_live_.... Read-only keys can call it. Keys with the ads resource group disabled get 403 resource_group_disabled. Authentication
Query parameters
| Name | Type | Notes |
|---|---|---|
accountIdrequired | string | |
adAccountId | string | |
customerId | string | |
fromDate | string (date) | |
toDate | string (date) | |
leadType | string | One of PHONE_CALL, MESSAGE, BOOKING |
leadStatus | string | |
chargedOnly | boolean | |
pageToken | string |
Example
curl -X GET "https://api.pozy.ai/v1/ads/local-services/leads?accountId=696e0b682d0a31188e7a2ba9" \
-H "Authorization: Bearer $POZY_API_KEY"const res = await fetch("https://api.pozy.ai/v1/ads/local-services/leads?accountId=696e0b682d0a31188e7a2ba9", {
headers: { Authorization: `Bearer ${process.env.POZY_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(data?.error ?? `Request failed with status ${res.status}`);
console.log(data);import os
import requests
resp = requests.get(
"https://api.pozy.ai/v1/ads/local-services/leads",
headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
params={
"accountId": "696e0b682d0a31188e7a2ba9",
},
timeout=30,
)
resp.raise_for_status()
print(resp.json())Response
200 on success
customerIdstringdataarray of object11 child fields
idstringCan be null.
leadTypestringCan be null.
categoryIdstringCan be null.
serviceIdstringCan be null.
contactobjectCan be null.
3 child fields
consumerNamestringCan be null.
emailstringCan be null.
phoneNumberstringCan be null.
statusstringCan be null.
createdTimestringCan be null.
localestringCan be null.
chargedbooleancreditStatestringCan be null.
creditStateLastUpdatestringCan be null.
pagingobjectnextPageTokenstringCan be null.
200 response
{
"customerId": "691909ff82eb5ed7c816716d",
"data": [
{
"id": "6bfebd43ddc270f6d2c56fc5",
"leadType": "string",
"categoryId": "6636a72cdd6d96f988ff2075",
"serviceId": "658273c3d08bfdd038b9e02f",
"contact": {
"consumerName": "Acme",
"email": "alex@example.com",
"phoneNumber": "+14155550123"
},
"status": "active",
"createdTime": "string",
"locale": "en",
"charged": true,
"creditState": "string",
"creditStateLastUpdate": "2026-10-02T09:00:00.000Z"
}
],
"paging": {
"nextPageToken": "string"
}
}Errors
Errors use one shape: { error, type, code, param?, details? }. The ones you are most likely to see here:
| 400 | invalid_request_error | A parameter or body field is missing or invalid. param names it. |
| 401 | authentication_error | The API key is missing, revoked or expired. |
| 403 | permission_error | The key is scoped to other profiles or has this resource group disabled. |
| 429 | rate_limit_error | Too many requests this minute. Wait for Retry-After seconds. |
Every code is listed in Errors.
More in Ad Insights
GETGoogle Ads search terms reportGETList lead conversationsGETGet campaign analyticsPOSTGenerate keyword ideasPOSTGet historical keyword metricsGETFlexible live insights queryPOSTSubmit async insights reportGETPoll an async insights report runGETGet ad analyticsGETPer-creative performance inside TikTok Smart+ ads