Files
2026-04-11 09:45:12 -05:00

172 lines
3.9 KiB
Markdown

# Google Ads Routing Reference
**App name:** `google-ads`
**Base URL proxied:** `googleads.googleapis.com`
## API Path Pattern
```
/google-ads/v23/customers/{customerId}/{endpoint}
```
## Common Endpoints
### List Accessible Customers
```bash
GET /google-ads/v23/customers:listAccessibleCustomers
```
### Search (GAQL Query)
```bash
POST /google-ads/v23/customers/{customerId}/googleAds:search
Content-Type: application/json
{
"query": "SELECT campaign.id, campaign.name, campaign.status FROM campaign ORDER BY campaign.id"
}
```
### Search Stream (for large result sets)
```bash
POST /google-ads/v23/customers/{customerId}/googleAds:searchStream
Content-Type: application/json
{
"query": "SELECT campaign.id, campaign.name FROM campaign"
}
```
## Common GAQL Queries
### List Campaigns
```sql
SELECT
campaign.id,
campaign.name,
campaign.status,
campaign.advertising_channel_type
FROM campaign
WHERE campaign.status != 'REMOVED'
ORDER BY campaign.name
```
### Campaign Performance
```sql
SELECT
campaign.id,
campaign.name,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
```
### List Ad Groups
```sql
SELECT
ad_group.id,
ad_group.name,
ad_group.status,
campaign.id,
campaign.name
FROM ad_group
WHERE ad_group.status != 'REMOVED'
```
### Ad Group Performance
```sql
SELECT
ad_group.id,
ad_group.name,
metrics.impressions,
metrics.clicks,
metrics.average_cpc
FROM ad_group
WHERE segments.date DURING LAST_7_DAYS
```
### List Keywords
```sql
SELECT
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.status,
metrics.impressions,
metrics.clicks
FROM keyword_view
WHERE segments.date DURING LAST_30_DAYS
```
### List Ads
```sql
SELECT
ad_group_ad.ad.id,
ad_group_ad.ad.name,
ad_group_ad.status,
ad_group_ad.ad.type
FROM ad_group_ad
WHERE ad_group_ad.status != 'REMOVED'
```
## Mutate Operations
### Create Campaign
```bash
POST /google-ads/v23/customers/{customerId}/campaigns:mutate
Content-Type: application/json
{
"operations": [
{
"create": {
"name": "New Campaign",
"advertisingChannelType": "SEARCH",
"status": "PAUSED",
"manualCpc": {},
"campaignBudget": "customers/{customerId}/campaignBudgets/{budgetId}"
}
}
]
}
```
### Update Campaign Status
```bash
POST /google-ads/v23/customers/{customerId}/campaigns:mutate
Content-Type: application/json
{
"operations": [
{
"update": {
"resourceName": "customers/{customerId}/campaigns/{campaignId}",
"status": "ENABLED"
},
"updateMask": "status"
}
]
}
```
## Notes
- Authentication is automatic - the router injects OAuth token and developer-token headers
- Use `listAccessibleCustomers` first to get available customer IDs
- Customer IDs are 10-digit numbers (remove dashes if formatted as XXX-XXX-XXXX)
- Monetary values are in micros (divide by 1,000,000)
- Use GAQL (Google Ads Query Language) for querying
- Date ranges: `LAST_7_DAYS`, `LAST_30_DAYS`, `THIS_MONTH`, etc.
- Status values: `ENABLED`, `PAUSED`, `REMOVED`
- API version updates frequently - check release notes for latest (currently v23)
## Resources
- [API Overview](https://developers.google.com/google-ads/api/docs/start)
- [List Accessible Customers](https://developers.google.com/google-ads/api/reference/rpc/v23/CustomerService/ListAccessibleCustomers?transport=rest)
- [Search](https://developers.google.com/google-ads/api/reference/rpc/v23/GoogleAdsService/Search?transport=rest)
- [Search Stream](https://developers.google.com/google-ads/api/reference/rpc/v23/GoogleAdsService/SearchStream?transport=rest)
- [GAQL Reference](https://developers.google.com/google-ads/api/docs/query/overview)
- [Metrics Reference](https://developers.google.com/google-ads/api/fields/v23/metrics)