# Google Ads API (slim) > Google's API for managing Google Ads accounts, campaigns, budgets, audiences, ads and performance reports over gRPC or REST, with OAuth 2.0 access. Google also publishes an open-source, read-only MCP server that runs Google Ads Query Language reports. - Full: https://www.anchorterminal.com/tools/google-ads-api.md (~8,450 tokens) · this version ~1,630 tokens · JSON https://www.anchorterminal.com/tools/google-ads-api.json · canonical https://www.anchorterminal.com/tools/google-ads-api - Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · Updated: 2026-10-08 **BB · 76.4/100 · rank #31 of 629 · #1 in Advertising & campaign operations · agent-ready · confidence medium** Assessment: Test accounts are free and need no approval, and `validate_only` checks a change without running it. Production access needs a Google Cloud project approved at Explorer level or above and a person to set up OAuth. One OAuth scope covers both reads and writes. The official MCP server is read-only, self-hosted and at version 0.0.4. ## Facts - Kind: HTTP API · vendor: Google · category: Advertising & campaign operations · legal entity: Google LLC · provenance 96/100 - Endpoint: `https://googleads.googleapis.com` (HTTP, stdio, Streamable HTTP) - Auth: OAuth · pricing: Free · x402: no · licence: Proprietary service under the Google Ads API terms. The client libraries and the google-ads-mcp server are Apache-2.0 - Probe metrics: not measured yet (probes haven't run) - Price: No charge for API calls. Advertising spend is billed to the Google Ads account. The terms allow fees for policy non-compliance - Access levels: Test 15,000 operations a day on test accounts. Explorer 2,880 a day on production accounts. Basic 15,000 a day. Standard unlimited - Approval: Test on enabling the API. Explorer by application in the Cloud console. Basic after brand verification, reviewed within minutes. Standard by manual audit, about 10 business days - Rate limits: Token bucket per customer ID and per Cloud project with no published number. Planning services 1 request a second per customer ID. 10,000 operations per mutate request - Interfaces: gRPC and REST at googleads.googleapis.com/v25. 175 methods and 1,489 schemas in the v25 discovery document, revision 20261005 - Reporting: Google Ads Query Language through Search (fixed pages of 10,000 rows) or SearchStream. Daily, hourly and weekly data kept 37 months, monthly and coarser 11 years - Change safety: `validate_only` on mutates, atomic by default with optional `partial_failure`, test accounts that serve no ads - MCP server: googleads/google-ads-mcp v0.0.4 (25 September 2026), Apache-2.0, Python 3.10+, three read-only tools, stdio or streamable HTTP, self-hosted - Client libraries: Official Java, .NET, PHP, Python, Ruby and Perl. Node.js and Go libraries are community-maintained - Versions: About three major versions a year, each live for about 12 months. Minor versions update the major endpoint in place - Audit: `change_event` for the past 30 days with user, client type and old and new values. A `request-id` on every response - Scores: Reliability 82, Performance pending, Schema & documentation 84, Agent ergonomics 87, Security & auth 71, Payments & pricing 40, Task success pending, Maintenance & community 87, Transparency & trust 82 · total over the 7 assessed categories - Why: Reliability, Graded on the public API, with the hosted lines. · Schema & documentation, Google publishes a discovery document for REST (v25, revision 20261005, 175 methods and 1,489 schemas) and protocol buffers for gRPC, which… · Agent ergonomics, GAQL selects only the fields asked for, with WHERE, ORDER BY and LIMIT. · Security & auth, OAuth 2.0 with user or service-account flows, revocable grants, and 2-step verification or a passkey for new refresh tokens. · Payments & pricing, No x402, MPP or L402 (0). · Maintenance & community, v25.2 on 23 September 2026, 15 days before the check (30). · Transparency & trust, Closed service under the Google Ads API terms, with Apache-2.0 client libraries and MCP server. - Sources: 34, open questions: 7, both in the full twin - Capabilities: ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives - JSON: https://www.anchorterminal.com/api/v1/tools/google-ads-api.json - Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/google-ads-api.svg` or a link to https://www.anchorterminal.com/tools/google-ads-api from a page on google.com or one of its subdomains, or the README of github.com/googleads/google-ads-python, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin. ## Before you call it 1. Send `validateOnly: true` on a mutate first. It returns errors without making the change. Batch jobs don't support it 2. Create campaigns with status PAUSED and enable them in a separate step, since an enabled campaign with a budget can spend 3. Send `login-customer-id` (digits only, no hyphens) when you reach a client account through a manager account 4. A failed request still counts against the daily operation quota. Paging with a valid `next_page_token` doesn't 5. Wait at least 12 hours between account budget changes on one account, and use the Data Manager API for new Customer Match or offline conversion work ## Connect ```bash pip install google-ads ``` ```bash curl -i -X POST \ https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "login-customer-id: LOGIN_CUSTOMER_ID" \ --data-binary "@query.json" ``` Full config and headless snippets are in the full page. Through letme (picks today, calling later): https://letme.dev/google-ads-api ## Similar tools | Tool | Grade | Score | Shared capabilities | Slim | | --- | --- | --- | --- | --- | | Meta Marketing API | B | 67.7 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | https://www.anchorterminal.com/tools/meta-marketing-api.min.md | | LinkedIn Marketing APIs | B | 62.4 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | https://www.anchorterminal.com/tools/linkedin-marketing-api.min.md | | Microsoft Advertising API | C | 60.3 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | https://www.anchorterminal.com/tools/microsoft-advertising-api.min.md | | Amazon Ads API | C | 59 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | https://www.anchorterminal.com/tools/amazon-ads-api.min.md | ## Panel reviews (0, desk reviews from public material, no calls made)