{
  "data": {
    "similar": [
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/meta-marketing-api.json",
        "name": "Meta Marketing API",
        "score": 67.7,
        "shared": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "slug": "meta-marketing-api"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/linkedin-marketing-api.json",
        "name": "LinkedIn Marketing APIs",
        "score": 62.4,
        "shared": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "slug": "linkedin-marketing-api"
      },
      {
        "grade": "C",
        "json": "https://www.anchorterminal.com/tools/microsoft-advertising-api.json",
        "name": "Microsoft Advertising API",
        "score": 60.3,
        "shared": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "slug": "microsoft-advertising-api"
      },
      {
        "grade": "C",
        "json": "https://www.anchorterminal.com/tools/amazon-ads-api.json",
        "name": "Amazon Ads API",
        "score": 59,
        "shared": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "slug": "amazon-ads-api"
      }
    ],
    "tool": {
      "slug": "google-ads-api",
      "name": "Google Ads API",
      "vendor": "Google",
      "vendorUrl": "https://developers.google.com/google-ads/api",
      "kind": "http-api",
      "category": "advertising",
      "summary": "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.",
      "url": "https://www.anchorterminal.com/tools/google-ads-api",
      "markdownUrl": "https://www.anchorterminal.com/tools/google-ads-api.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/google-ads-api.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/google-ads-api.json",
      "repo": "https://github.com/googleads/google-ads-python",
      "license": "Proprietary service under the Google Ads API terms. The client libraries and the google-ads-mcp server are Apache-2.0",
      "transports": [
        "http",
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://googleads.googleapis.com",
      "packages": [
        {
          "registry": "pypi",
          "name": "google-ads"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 access token as a Bearer header, with the single scope https://www.googleapis.com/auth/adwords, from a user flow or a service account added to the Google Ads account. The Google Cloud project that owns the credentials carries the access level. Test is granted on enabling the API, Explorer and Basic by application in the Cloud console (Basic after brand verification), and Standard by a manual audit of about 10 business days. Developer tokens were sunset on 9 September 2026. Calls through a manager account also need the `login-customer-id` header. New refresh tokens need 2-step verification.",
      "pricing": "free",
      "pricingNotes": "No charge for API calls was found. Advertising spend is billed to the Google Ads account, and the terms allow fees for policy non-compliance. A new Cloud project gets Test access on enabling the API, and test accounts have no billing and serve no ads, so development needs no contract or card. Daily operations are capped at 2,880 (Explorer) or 15,000 (Basic) on production accounts.",
      "priceSummary": "Free",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer documentation or the API terms (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 3,
      "popularity": {
        "githubStars": 753,
        "npmWeekly": null,
        "pypiWeekly": 3147170,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.google.com/google-ads/api/docs/get-started/introduction",
      "capabilities": [
        "ads.reporting",
        "ads.campaigns",
        "ads.budgets",
        "ads.audiences",
        "ads.creatives"
      ],
      "tags": [
        "hosted",
        "official",
        "free-tier",
        "mcp",
        "oauth",
        "python",
        "java",
        "enterprise",
        "status-page",
        "sandbox"
      ],
      "lastRelease": "2026-09-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 76.4,
        "grade": "BB",
        "agentReady": true,
        "rank": 31,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 87,
          "maintenance": 87,
          "payments": 40,
          "reliability": 82,
          "schema": 84,
          "security": 71,
          "transparency": 82
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "breakdown": [
          {
            "key": "reliability",
            "name": "Reliability",
            "weight": 16,
            "effectiveWeight": 20,
            "score": 82,
            "points": 16.4,
            "reason": "Graded on the public API, with the hosted lines. The Ads Status Dashboard lists Google Ads API as its own product with an incidents feed (20). The feed runs from 24 October 2025 to 3 October 2026 and shows no incident on Google Ads or the Google Ads API, so the last 90 days are clean (30). Daily operation limits are published per access level (2,880, 15,000 or unlimited), with 1 request a second on planning services and 10,000 operations per mutate request, but the general per-second limit is a token bucket with no published number (12 of 15). The error guide asks for exponential backoff with jitter on `TRANSIENT_ERROR` and `INTERNAL_ERROR` and names `RESOURCE_TEMPORARILY_EXHAUSTED` for rate limits. No idempotency key was found, though `validate_only` and atomic mutates limit partial writes (10 of 15). No SLA for the API was found (0). The API is generally available at v25. The MCP server is at v0.0.4 (10)."
          },
          {
            "key": "performance",
            "name": "Performance",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
          },
          {
            "key": "schema",
            "name": "Schema \u0026 documentation",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 84,
            "points": 13.65,
            "reason": "Google publishes a discovery document for REST (v25, revision 20261005, 175 methods and 1,489 schemas) and protocol buffers for gRPC, which is a machine-readable contract though not OpenAPI (25). No llms.txt. developers.google.com/google-ads/api/llms.txt and developers.google.com/llms.txt both returned 404 on 8 October (0). Guides say which service to use and when, such as SearchStream over Search for large reports and the Data Manager API for new conversion uploads, and the MCP tool descriptions tell a model to call `get_resource_metadata` before `search` (16 of 20). Typed messages with 883 enum definitions in the discovery document, but reports are a GAQL query string (13 of 15). Code examples in six languages and typed error enums with a common-errors guide (15). Major versions in the path, dated release notes and upgrade guides (15)."
          },
          {
            "key": "ergonomics",
            "name": "Agent ergonomics",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 87,
            "points": 14.14,
            "reason": "GAQL selects only the fields asked for, with WHERE, ORDER BY and LIMIT. The MCP server has three tools, all read-only, though the `search` description embeds the full list of resources (22 of 25). Search returns fixed pages of 10,000 rows with `next_page_token`, and SearchStream returns a whole report on one connection (20). Errors are typed enums with a `request-id`, sorted in the docs into authentication, retryable, validation and sync errors (18 of 20). No idempotency keys were found. `validate_only`, atomic mutates with optional `partial_failure`, and `readOnlyHint` on all three MCP tools earn part (14 of 20). Six official client libraries. Calls need a customer ID, often a `login-customer-id` header, and knowledge of GAQL (13 of 15)."
          },
          {
            "key": "security",
            "name": "Security \u0026 auth",
            "weight": 14,
            "effectiveWeight": 17.5,
            "score": 71,
            "points": 12.43,
            "reason": "OAuth 2.0 with user or service-account flows, revocable grants, and 2-step verification or a passkey for new refresh tokens. There is one scope, `adwords`, described in the discovery document as see, edit, create and delete (22 of 30). The API follows Google Ads user roles, so a read-only role limits a credential, Standard access has a reporting-only permissible use, the MCP server is read-only, and adding, removing or changing users needs a second administrator's approval. Nothing confirms a budget or bid change (15 of 20). The MCP README says only that the server exposes account data to the connected model. No prompt-injection guidance was found (5 of 15). `change_event` returns the user, client type and old and new values for the past 30 days, and the Cloud console shows methods called (12 of 15). security.txt valid to 2030, Google's vulnerability reward programme, and ISO 27001 listed for Google Ads. SOC 2 is listed for Cloud and Workspace, not Ads (17 of 20)."
          },
          {
            "key": "payments",
            "name": "Payments \u0026 pricing",
            "weight": 10,
            "effectiveWeight": 12.5,
            "score": 40,
            "points": 5,
            "reason": "No x402, MPP or L402 (0). No charge for API calls was found in the docs or the terms, and the access levels and daily operation limits are public without a login (20). Test access comes with enabling the API and test accounts have no billing, so no card is needed (20). A person creates the Cloud project and OAuth credentials, applies for production access and grants the account role (0)."
          },
          {
            "key": "tasks",
            "name": "Task success",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
          },
          {
            "key": "maintenance",
            "name": "Maintenance \u0026 community",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 87,
            "points": 7.61,
            "reason": "v25.2 on 23 September 2026, 15 days before the check (30). v25 on 22 July, v25.1 on 19 August and v25.2 on 23 September are three dated releases within 90 days (20). Dated release notes, a support page with a channel for each kind of issue, a Discord channel for the AI tools, and a pull request merged in google-ads-mcp on 29 September. The developer blog returned 403 to our reader, so announcements there weren't read (12 of 15). Six current official client libraries, with google-ads 33.0.0 for Python on the day of v25.2 (15). CI workflows in the Python client and MCP repositories (10)."
          },
          {
            "key": "transparency",
            "name": "Transparency \u0026 trust",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 82,
            "points": 7.18,
            "note": "editorial 67, provenance 96",
            "reason": "Closed service under the Google Ads API terms, with Apache-2.0 client libraries and MCP server. The terms page was last updated on 21 February 2019 and still defines the developer token (15 of 30). The Google Ads Data Processing Terms set deletion within a maximum of 180 days and commit to ISO 27001, and the docs state reporting retention of 37 months for granular data and 11 years for monthly and coarser data. The MCP README discloses a usage header added to API calls (22 of 30). A sunset timetable with dates for every version and a dated table of feature deprecations (20). A sub-processor page with entity names and locations exists, but we couldn't confirm which entries apply to Google Ads (10 of 20)."
          }
        ],
        "assessment": {
          "date": "2026-10-08",
          "basis": "public evidence",
          "confidence": "medium",
          "notes": {
            "ergonomics": "GAQL selects only the fields asked for, with WHERE, ORDER BY and LIMIT. The MCP server has three tools, all read-only, though the `search` description embeds the full list of resources (22 of 25). Search returns fixed pages of 10,000 rows with `next_page_token`, and SearchStream returns a whole report on one connection (20). Errors are typed enums with a `request-id`, sorted in the docs into authentication, retryable, validation and sync errors (18 of 20). No idempotency keys were found. `validate_only`, atomic mutates with optional `partial_failure`, and `readOnlyHint` on all three MCP tools earn part (14 of 20). Six official client libraries. Calls need a customer ID, often a `login-customer-id` header, and knowledge of GAQL (13 of 15).",
            "maintenance": "v25.2 on 23 September 2026, 15 days before the check (30). v25 on 22 July, v25.1 on 19 August and v25.2 on 23 September are three dated releases within 90 days (20). Dated release notes, a support page with a channel for each kind of issue, a Discord channel for the AI tools, and a pull request merged in google-ads-mcp on 29 September. The developer blog returned 403 to our reader, so announcements there weren't read (12 of 15). Six current official client libraries, with google-ads 33.0.0 for Python on the day of v25.2 (15). CI workflows in the Python client and MCP repositories (10).",
            "payments": "No x402, MPP or L402 (0). No charge for API calls was found in the docs or the terms, and the access levels and daily operation limits are public without a login (20). Test access comes with enabling the API and test accounts have no billing, so no card is needed (20). A person creates the Cloud project and OAuth credentials, applies for production access and grants the account role (0).",
            "reliability": "Graded on the public API, with the hosted lines. The Ads Status Dashboard lists Google Ads API as its own product with an incidents feed (20). The feed runs from 24 October 2025 to 3 October 2026 and shows no incident on Google Ads or the Google Ads API, so the last 90 days are clean (30). Daily operation limits are published per access level (2,880, 15,000 or unlimited), with 1 request a second on planning services and 10,000 operations per mutate request, but the general per-second limit is a token bucket with no published number (12 of 15). The error guide asks for exponential backoff with jitter on `TRANSIENT_ERROR` and `INTERNAL_ERROR` and names `RESOURCE_TEMPORARILY_EXHAUSTED` for rate limits. No idempotency key was found, though `validate_only` and atomic mutates limit partial writes (10 of 15). No SLA for the API was found (0). The API is generally available at v25. The MCP server is at v0.0.4 (10).",
            "schema": "Google publishes a discovery document for REST (v25, revision 20261005, 175 methods and 1,489 schemas) and protocol buffers for gRPC, which is a machine-readable contract though not OpenAPI (25). No llms.txt. developers.google.com/google-ads/api/llms.txt and developers.google.com/llms.txt both returned 404 on 8 October (0). Guides say which service to use and when, such as SearchStream over Search for large reports and the Data Manager API for new conversion uploads, and the MCP tool descriptions tell a model to call `get_resource_metadata` before `search` (16 of 20). Typed messages with 883 enum definitions in the discovery document, but reports are a GAQL query string (13 of 15). Code examples in six languages and typed error enums with a common-errors guide (15). Major versions in the path, dated release notes and upgrade guides (15).",
            "security": "OAuth 2.0 with user or service-account flows, revocable grants, and 2-step verification or a passkey for new refresh tokens. There is one scope, `adwords`, described in the discovery document as see, edit, create and delete (22 of 30). The API follows Google Ads user roles, so a read-only role limits a credential, Standard access has a reporting-only permissible use, the MCP server is read-only, and adding, removing or changing users needs a second administrator's approval. Nothing confirms a budget or bid change (15 of 20). The MCP README says only that the server exposes account data to the connected model. No prompt-injection guidance was found (5 of 15). `change_event` returns the user, client type and old and new values for the past 30 days, and the Cloud console shows methods called (12 of 15). security.txt valid to 2030, Google's vulnerability reward programme, and ISO 27001 listed for Google Ads. SOC 2 is listed for Cloud and Workspace, not Ads (17 of 20).",
            "transparency": "Closed service under the Google Ads API terms, with Apache-2.0 client libraries and MCP server. The terms page was last updated on 21 February 2019 and still defines the developer token (15 of 30). The Google Ads Data Processing Terms set deletion within a maximum of 180 days and commit to ISO 27001, and the docs state reporting retention of 37 months for granular data and 11 years for monthly and coarser data. The MCP README discloses a usage header added to API calls (22 of 30). A sunset timetable with dates for every version and a dated table of feature deprecations (20). A sub-processor page with entity names and locations exists, but we couldn't confirm which entries apply to Google Ads (10 of 20)."
          },
          "sources": [
            {
              "what": "introduction",
              "url": "https://developers.google.com/google-ads/api/docs/get-started/introduction",
              "seen": "2026-10-08"
            },
            {
              "what": "access levels and permissible use",
              "url": "https://developers.google.com/google-ads/api/docs/api-policy/access-levels",
              "seen": "2026-10-08"
            },
            {
              "what": "developer token sunset",
              "url": "https://developers.google.com/google-ads/api/docs/api-policy/developer-token",
              "seen": "2026-10-08"
            },
            {
              "what": "limits and quotas",
              "url": "https://developers.google.com/google-ads/api/docs/best-practices/quotas",
              "seen": "2026-10-08"
            },
            {
              "what": "rate limits",
              "url": "https://developers.google.com/google-ads/api/docs/productionize/rate-limits",
              "seen": "2026-10-08"
            },
            {
              "what": "error types and retries",
              "url": "https://developers.google.com/google-ads/api/docs/best-practices/error-types",
              "seen": "2026-10-08"
            },
            {
              "what": "MCP server guide",
              "url": "https://developers.google.com/google-ads/api/docs/developer-toolkit/mcp-server",
              "seen": "2026-10-08"
            },
            {
              "what": "MCP server repository",
              "url": "https://github.com/googleads/google-ads-mcp",
              "seen": "2026-10-08"
            },
            {
              "what": "agent skills",
              "url": "https://developers.google.com/google-ads/api/docs/developer-toolkit/agent-skills",
              "seen": "2026-10-08"
            },
            {
              "what": "release notes",
              "url": "https://developers.google.com/google-ads/api/docs/release-notes",
              "seen": "2026-10-08"
            },
            {
              "what": "deprecation and sunset timetable",
              "url": "https://developers.google.com/google-ads/api/docs/sunset-dates",
              "seen": "2026-10-08"
            },
            {
              "what": "feature deprecations",
              "url": "https://developers.google.com/google-ads/api/docs/deprecations",
              "seen": "2026-10-08"
            },
            {
              "what": "versioning",
              "url": "https://developers.google.com/google-ads/api/docs/concepts/versioning",
              "seen": "2026-10-08"
            },
            {
              "what": "mutate overview",
              "url": "https://developers.google.com/google-ads/api/docs/mutating/overview",
              "seen": "2026-10-08"
            },
            {
              "what": "paging",
              "url": "https://developers.google.com/google-ads/api/docs/reporting/paging",
              "seen": "2026-10-08"
            },
            {
              "what": "change event",
              "url": "https://developers.google.com/google-ads/api/docs/change-event",
              "seen": "2026-10-08"
            },
            {
              "what": "access model and user roles",
              "url": "https://developers.google.com/google-ads/api/docs/oauth/access-model",
              "seen": "2026-10-08"
            },
            {
              "what": "security requirements",
              "url": "https://developers.google.com/google-ads/api/docs/oauth/security-requirements",
              "seen": "2026-10-08"
            },
            {
              "what": "multi-party approvals",
              "url": "https://developers.google.com/google-ads/api/docs/oauth/multi-party-approvals",
              "seen": "2026-10-08"
            },
            {
              "what": "test accounts",
              "url": "https://developers.google.com/google-ads/api/docs/best-practices/test-accounts",
              "seen": "2026-10-08"
            },
            {
              "what": "REST authorisation and headers",
              "url": "https://developers.google.com/google-ads/api/rest/auth",
              "seen": "2026-10-08"
            },
            {
              "what": "first call",
              "url": "https://developers.google.com/google-ads/api/docs/get-started/make-first-call",
              "seen": "2026-10-08"
            },
            {
              "what": "v25 discovery document",
              "url": "https://googleads.googleapis.com/$discovery/rest?version=v25",
              "seen": "2026-10-08"
            },
            {
              "what": "API terms",
              "url": "https://developers.google.com/google-ads/api/terms",
              "seen": "2026-10-08"
            },
            {
              "what": "Ads Status Dashboard incidents feed",
              "url": "https://ads.google.com/status/publisher/incidents.json",
              "seen": "2026-10-08"
            },
            {
              "what": "Ads Status Dashboard",
              "url": "https://ads.google.com/status/publisher/",
              "seen": "2026-10-08"
            },
            {
              "what": "Google Ads Data Processing Terms",
              "url": "https://business.safety.google/adsprocessorterms/",
              "seen": "2026-10-08"
            },
            {
              "what": "Ads sub-processors",
              "url": "https://business.safety.google/adssubprocessors/",
              "seen": "2026-10-08"
            },
            {
              "what": "audits and certifications",
              "url": "https://business.safety.google/compliance/",
              "seen": "2026-10-08"
            },
            {
              "what": "security.txt",
              "url": "https://www.google.com/.well-known/security.txt",
              "seen": "2026-10-08"
            },
            {
              "what": "Python client repository",
              "url": "https://github.com/googleads/google-ads-python",
              "seen": "2026-10-08"
            },
            {
              "what": "PyPI google-ads",
              "url": "https://pypi.org/pypi/google-ads/json",
              "seen": "2026-10-08"
            },
            {
              "what": "client libraries",
              "url": "https://developers.google.com/google-ads/api/docs/client-libs",
              "seen": "2026-10-08"
            },
            {
              "what": "official MCP registry search",
              "url": "https://registry.modelcontextprotocol.io/v0/servers?search=google-ads",
              "seen": "2026-10-08"
            }
          ],
          "openQuestions": [
            "unchecked: the Google Ads developer blog (ads-developers.googleblog.com returned 403 to our reader), so the notice given before the developer token sunset and before the Customer Match and offline conversion restrictions wasn't read",
            "Which entries on the Ads sub-processor page apply to Google Ads, since the list names other advertising products against each entity",
            "The per-second rate limit, which the docs describe as a token bucket that varies with server load",
            "Whether the API terms will be revised, since the page dated 21 February 2019 still defines the developer token",
            "The MCP README still lists a developer token step in setup, while the developer guide says the latest server version doesn't need one",
            "unchecked: the ISO 27001 certificate for Google Ads is linked from the compliance page as a PDF, which we didn't open",
            "The criteria for Explorer access, since the docs say only that Google may let a project apply and may upgrade it automatically"
          ]
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "It suits an agent that reports on or manages Google Ads accounts for an advertiser or agency that can get a Cloud project approved.",
        "strengths": [
          "`validate_only` on mutate requests validates a change without executing it, and mutates are atomic unless `partial_failure` is set",
          "Test accounts serve no ads and have no billing, and a new Cloud project gets Test access when the API is enabled",
          "No incident on Google Ads or the Google Ads API in the Ads Status Dashboard feed from 24 October 2025 to 3 October 2026",
          "Published sunset timetable, with each major version live for about 12 months and at most two upgrades a year",
          "`change_event` reports who changed what, the client type and old and new values for the past 30 days"
        ],
        "weaknesses": [
          "One OAuth scope, `adwords`, covers reading, editing, creating and deleting. Read-only access depends on the Google Ads user role",
          "Production accounts need Explorer access (2,880 operations a day) or higher. Basic needs brand verification and Standard a manual audit of about 10 business days",
          "The per-second rate limit has no published number, since it's a token bucket that varies with server load",
          "No idempotency keys were found in the reviewed documentation",
          "The official MCP server is read-only, self-hosted and at v0.0.4, and it isn't in the official MCP registry"
        ],
        "agentNotes": [
          "Send `validateOnly: true` on a mutate first. It returns errors without making the change. Batch jobs don't support it",
          "Create campaigns with status PAUSED and enable them in a separate step, since an enabled campaign with a budget can spend",
          "Send `login-customer-id` (digits only, no hyphens) when you reach a client account through a manager account",
          "A failed request still counts against the daily operation quota. Paging with a valid `next_page_token` doesn't",
          "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"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 76.4
          }
        ],
        "editorialScores": {
          "ergonomics": 87,
          "maintenance": 87,
          "payments": 40,
          "reliability": 82,
          "schema": 84,
          "security": 71,
          "transparency": 67
        },
        "provenanceScore": 96
      },
      "connect": {
        "install": "pip install google-ads",
        "http": "curl -i -X POST \\\n  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer ACCESS_TOKEN\" \\\n  -H \"login-customer-id: LOGIN_CUSTOMER_ID\" \\\n  --data-binary \"@query.json\"",
        "config": {
          "mcpServers": {
            "google-ads-mcp": {
              "args": [
                "run",
                "--spec",
                "git+https://github.com/googleads/google-ads-mcp.git",
                "google-ads-mcp"
              ],
              "command": "pipx",
              "env": {
                "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/credentials.json",
                "GOOGLE_PROJECT_ID": "YOUR_PROJECT_ID"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/ads.reporting",
        "tool": "https://letme.dev/google-ads-api"
      },
      "sameCompany": [
        "gemini-api",
        "gemini-embedding",
        "vertex-ai-tuning",
        "google-model-armor",
        "google-imagen",
        "google-veo",
        "google-lyria",
        "google-speech-to-text",
        "google-adk",
        "google-secret-manager",
        "google-weather-api",
        "chrome-devtools-mcp",
        "google-maps-platform",
        "google-cloud-translation",
        "google-calendar-api",
        "google-drive-api",
        "gemini-cli",
        "google-sheets-api",
        "gmail-api"
      ],
      "notable": [
        "Developer tokens were sunset on 9 September 2026. The access level now belongs to the Google Cloud project that owns the OAuth client or service account, and the `developer-token` header is ignored (https://developers.google.com/google-ads/api/docs/api-policy/developer-token)",
        "Four access levels. Test (test accounts only, 15,000 operations a day), Explorer (2,880 a day on production accounts), Basic (15,000 a day, brand verification first) and Standard (unlimited, manual audit, about 10 business days) (https://developers.google.com/google-ads/api/docs/api-policy/access-levels)",
        "Google's MCP server exposes three read-only tools (`list_accessible_customers`, `search` and `get_resource_metadata`) over stdio or HTTP on Cloud Run, and can't change bids, pause campaigns or create assets (https://developers.google.com/google-ads/api/docs/developer-toolkit/mcp-server)",
        "v25.2 shipped on 23 September 2026 and v26 is planned for October 2026. v22 is due to sunset in October 2026 (tentative) (https://developers.google.com/google-ads/api/docs/sunset-dates)",
        "New adopters are barred from Customer Match uploads (from 1 April 2026) and offline click conversion uploads (from 15 June 2026) and are sent to the Data Manager API (https://developers.google.com/google-ads/api/docs/deprecations)",
        "New OAuth refresh tokens need 2-step verification, and from 5 August 2026 a passkey for enforced users (https://developers.google.com/google-ads/api/docs/oauth/security-requirements)",
        "Agent skills for Claude Code, Codex, Cursor and Antigravity install from the google/skills repository (https://developers.google.com/google-ads/api/docs/developer-toolkit/agent-skills)"
      ],
      "area": "communication",
      "details": [
        {
          "label": "Price",
          "value": "No charge for API calls. Advertising spend is billed to the Google Ads account. The terms allow fees for policy non-compliance"
        },
        {
          "label": "Access levels",
          "value": "Test 15,000 operations a day on test accounts. Explorer 2,880 a day on production accounts. Basic 15,000 a day. Standard unlimited"
        },
        {
          "label": "Approval",
          "value": "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"
        },
        {
          "label": "Rate limits",
          "value": "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"
        },
        {
          "label": "Interfaces",
          "value": "gRPC and REST at googleads.googleapis.com/v25. 175 methods and 1,489 schemas in the v25 discovery document, revision 20261005"
        },
        {
          "label": "Reporting",
          "value": "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"
        },
        {
          "label": "Change safety",
          "value": "`validate_only` on mutates, atomic by default with optional `partial_failure`, test accounts that serve no ads"
        },
        {
          "label": "MCP server",
          "value": "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"
        },
        {
          "label": "Client libraries",
          "value": "Official Java, .NET, PHP, Python, Ruby and Perl. Node.js and Go libraries are community-maintained"
        },
        {
          "label": "Versions",
          "value": "About three major versions a year, each live for about 12 months. Minor versions update the major endpoint in place"
        },
        {
          "label": "Audit",
          "value": "`change_event` for the past 30 days with user, client type and old and new values. A `request-id` on every response"
        }
      ],
      "provenance": {
        "legalEntity": "Google LLC",
        "domain": "google.com",
        "domainRegistered": "1997-09-15",
        "domainNote": "The endpoint is on googleapis.com, Google's API domain. google.com was registered in 1997.",
        "endpointOnVendorDomain": true,
        "terms": "https://developers.google.com/google-ads/api/terms",
        "privacy": "https://policies.google.com/privacy",
        "statusPage": "https://ads.google.com/status/publisher/",
        "changelog": "https://developers.google.com/google-ads/api/docs/release-notes",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The Google Ads API terms name Google LLC for most countries, Google Ireland Limited for EMEA and Google Asia Pacific Pte. Ltd. for APAC.",
          "The terms page says it was last updated on 21 February 2019 and still defines the developer token, which Google sunset on 9 September 2026.",
          "RDAP for google.com gives a registration date of 1997-09-15.",
          "www.google.com/.well-known/security.txt expires on 1 April 2030 and names g.co/vulnz, security@google.com and the vulnerability reward programme.",
          "Google publishes a discovery document for the REST interface and protocol buffer definitions for gRPC, not an OpenAPI spec."
        ],
        "score": 96,
        "checks": [
          {
            "check": "Legal entity named",
            "value": "Google LLC",
            "points": 20,
            "max": 20,
            "state": "ok"
          },
          {
            "check": "Domain age",
            "value": "google.com, registered 1997-09-15 (29 years)",
            "points": 15,
            "max": 15,
            "state": "ok"
          },
          {
            "check": "Endpoint on the vendor's domain",
            "value": "googleads.googleapis.com",
            "points": 15,
            "max": 15,
            "state": "ok"
          },
          {
            "check": "Terms of service",
            "value": "read, states 6 of the 7 things a reader expects",
            "points": 9.1,
            "max": 10,
            "state": "part"
          },
          {
            "check": "Privacy policy",
            "value": "read, states 7 of the 8 things a reader expects, and has 1 clause that costs points",
            "points": 7.3,
            "max": 10,
            "state": "part"
          },
          {
            "check": "Status page",
            "value": "ads.google.com/status/publisher",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "Changelog",
            "value": "published",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "security.txt",
            "value": "valid",
            "points": 10,
            "max": 10,
            "state": "ok"
          }
        ],
        "policies": [
          {
            "kind": "terms",
            "url": "https://developers.google.com/google-ads/api/terms",
            "state": "read",
            "readAt": "2026-10-08",
            "statedDate": "2019-02-21",
            "words": 3574,
            "points": 9.1,
            "max": 10,
            "expected": [
              {
                "key": "terms.date",
                "label": "Gives the date it was last updated",
                "found": true,
                "quote": "Last updated February 21, 2019",
                "says": "Last updated 2019-02-21"
              },
              {
                "key": "terms.law",
                "label": "Names the governing law or courts",
                "found": true,
                "quote": "…EXCLUDING CALIFORNIA'S CONFLICT OF LAWS RULES, AND WILL BE LITIGATED EXCLUSIVELY IN THE FEDERAL OR STATE COURTS OF SANTA CLARA COUNTY, CALIFORNIA, USA;",
                "says": "The law of California Law, with disputes in the courts of Santa Clara County, California"
              },
              {
                "key": "terms.liability",
                "label": "States a limit on its liability",
                "found": true,
                "quote": "In the event that any of the above is not enforceable, to the extent permitted by law, Google's aggregate liability under this Google Ads API Agreement is limited to the greater of USD$1,000 or the amount of any Google Ads API fees you paid to Google in the month preceding the claim.",
                "says": "Capped at USD$1,000"
              },
              {
                "key": "terms.termination",
                "label": "Says how the agreement or account can be ended",
                "found": true,
                "quote": "Either party may terminate this Google Ads API Agreement at any time by giving notice to the other party."
              },
              {
                "key": "terms.changes",
                "label": "Says how changes to the terms are announced",
                "found": true,
                "quote": "The changes to this Google Ads API Agreement will not apply retroactively and will become effective no sooner than 30 days after notice.",
                "says": "Gives 30 days of notice before a change"
              },
              {
                "key": "terms.use",
                "label": "Lists what users may not do",
                "found": true,
                "quote": "You may not use the Google Ads API and may not accept this Google Ads API Agreement if (A) you are not of legal age to form a binding contract with Google, or (B) you are a person barred from using or receiving the Google Ads API under the applicable laws of the United States or other countries including the country i…"
              },
              {
                "key": "terms.sla",
                "label": "Refers to a service level or uptime commitment",
                "found": false
              }
            ],
            "toKnow": [
              {
                "key": "terms.cutoff",
                "label": "Says access can be ended without notice or for any reason",
                "found": true,
                "quote": "Google may suspend or terminate your access to the Google Ads API, or change any of the Google Ads API Specifications, protocols, or methods of access for any or no reason and will bear no liability for such decisions."
              },
              {
                "key": "terms.arbitration",
                "label": "Requires arbitration or waives class actions",
                "found": true,
                "quote": "If the Dispute is not resolved within 30 days, it must be resolved by arbitration by the American Arbitration Association's International Centre for Dispute Resolution in accordance with its Expedited Commercial Rules in force as of the date of this Google Ads API Agreement (\"Rules\")."
              },
              {
                "key": "old",
                "label": "Has not been updated for three years or more",
                "found": true,
                "quote": "Last updated February 21, 2019"
              }
            ],
            "notes": [
              {
                "date": "2026-10-08",
                "text": "Where the full exclusion of liability is not enforceable, Google's aggregate liability is limited to the greater of 1,000 US dollars or the API fees paid in the month before the claim.",
                "quote": "In the event that any of the above is not enforceable, to the extent permitted by law, Google's aggregate liability under this Google Ads API Agreement is limited to the greater of USD$1,000 or the amount of any Google Ads API fees you paid to Google in the month preceding the claim."
              },
              {
                "date": "2026-10-08",
                "text": "Google may inspect the user interfaces of the customer's Google Ads API client and monitor and audit API activity at any time.",
                "quote": "Google may inspect your Google Ads API Client user interfaces and monitor and audit Google Ads API activity, at any time, for the purpose of ensuring quality and enforcing compliance with these terms and Policies."
              },
              {
                "date": "2026-10-08",
                "text": "Google charges fees for non-compliance with its Google Ads API policies, at rates listed on a separate rate sheet.",
                "quote": "Fees assessed for non-compliance with Policies are set forth at https://developers.google.com/google-ads/api/docs/rate-sheet (\"Fees\")."
              }
            ]
          },
          {
            "kind": "privacy",
            "url": "https://policies.google.com/privacy",
            "state": "read",
            "readAt": "2026-10-08",
            "statedDate": "2026-10-01",
            "words": 14332,
            "points": 7.3,
            "max": 10,
            "expected": [
              {
                "key": "privacy.date",
                "label": "Gives the date it was last updated",
                "found": true,
                "quote": "Effective October 1, 2026 | Archived versions | Download PDF",
                "says": "Last updated 2026-10-01"
              },
              {
                "key": "privacy.collected",
                "label": "Says what personal data is collected",
                "found": true,
                "quote": "This Privacy Policy is meant to help you understand what information we collect, why we collect it, and how you can update, manage, export, and delete your information."
              },
              {
                "key": "privacy.retention",
                "label": "Says how long data is kept",
                "found": true,
                "quote": "The types of location data we collect and how long we store it depend in part on your device and account settings."
              },
              {
                "key": "privacy.processors",
                "label": "Says who else receives the data",
                "found": true,
                "quote": "For example, we use service providers to help operate our data centers, deliver our products and services, improve our internal business processes, and offer additional support to customers and users."
              },
              {
                "key": "privacy.sale",
                "label": "Says whether personal data is sold or shared for advertising",
                "found": true,
                "quote": "If Google is involved in a merger, acquisition, or sale of assets, we’ll continue to ensure the confidentiality of your personal information and give affected users notice before personal information is transferred or becomes subject to a different privacy policy."
              },
              {
                "key": "privacy.rights",
                "label": "Says what rights people have over their data",
                "found": true,
                "quote": "If European Union or United Kingdom data protection law applies to the processing of your information, you can review the European requirements section below to learn more about your rights and Google’s compliance with these laws."
              },
              {
                "key": "privacy.contact",
                "label": "Gives a privacy contact",
                "found": true,
                "quote": "And if you have any questions about this Privacy Policy, you can contact us."
              },
              {
                "key": "privacy.transfers",
                "label": "Says where data is transferred or stored",
                "found": false
              }
            ],
            "toKnow": [
              {
                "key": "training",
                "label": "Says it may use customer content to train or improve models, and no opt-out was found",
                "found": true,
                "quote": "We use your interactions with AI models and technologies like Gemini Apps to develop, train, fine-tune, and improve these models to better handle your requests, and update their classifiers and filters including for safety, language understanding, and factuality.",
                "costsPoints": true
              }
            ],
            "notes": [
              {
                "date": "2026-10-08",
                "text": "Members of organisations using Google Workspace or Google Cloud Platform are referred to the separate Google Cloud Privacy Notice for how those services collect and use personal information.",
                "quote": "If you’re a member of an organization that uses Google Workspace or Google Cloud Platform, learn how these services collect and use your personal information in the Google Cloud Privacy Notice."
              },
              {
                "date": "2026-10-08",
                "text": "Google says it uses publicly available information from the web and other public sources to help train machine learning models behind products such as Google Translate, Gemini Apps and Cloud AI.",
                "quote": "We use publicly available information online or from other public sources to help train new machine learning models and build foundational technologies that power various Google products such as Google Translate, Gemini Apps, and Cloud AI capabilities."
              }
            ]
          }
        ]
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/google-ads-api.json",
      "live": {
        "slug": "google-ads-api",
        "probe": {
          "target": "https://googleads.googleapis.com",
          "method": "get",
          "lastAt": "2026-10-08T18:20:30.798433744Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 44,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 43,
          "p95ms24h": 97,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://ads.google.com/status/publisher",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T17:50:43.370819693Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "googleads/google-ads-python",
            "version": "33.0.0",
            "released": "2026-09-23",
            "seenAt": "2026-10-08T16:13:37.184328114Z"
          },
          {
            "registry": "pypi",
            "name": "google-ads",
            "version": "33.0.0",
            "released": "2026-09-23",
            "seenAt": "2026-10-08T16:13:37.03050822Z"
          }
        ],
        "githubStars": 753,
        "pypiWeekly": 3147170,
        "securityTxt": {
          "url": "https://google.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2030-04-01T00:00:00z",
          "checkedAt": "2026-10-08T15:38:39.75078566Z"
        },
        "pages": [
          {
            "url": "https://developers.google.com/google-ads/api/docs/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:38.977243791Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "dc6ee6118a62"
          },
          {
            "url": "https://developers.google.com/google-ads/api/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:41.93239623Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b2c89bed13ba"
          }
        ],
        "updatedAt": "2026-10-08T18:20:30.798433744Z"
      }
    },
    "verify": {
      "accepts": "a page on google.com or one of its subdomains, or the README of github.com/googleads/google-ads-python",
      "badgeUrl": "https://www.anchorterminal.com/badges/google-ads-api.svg",
      "body": {
        "slug": "google-ads-api",
        "url": "the page with the badge or the link"
      },
      "docs": "https://www.anchorterminal.com/builders/#verify",
      "effect": "none, it never changes a grade, rank or review",
      "endpoint": "https://www.anchorterminal.com/api/v1/verify",
      "listingUrl": "https://www.anchorterminal.com/tools/google-ads-api",
      "mcpTool": "verify_listing",
      "recheck": "weekly; two failed checks in a row and it lapses, a later pass restores it",
      "snippets": {
        "html": "\u003ca href=\"https://www.anchorterminal.com/tools/google-ads-api\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/google-ads-api.svg\" alt=\"Google Ads API on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e",
        "markdown": "[![Google Ads API on Anchor Terminal](https://www.anchorterminal.com/badges/google-ads-api.svg)](https://www.anchorterminal.com/tools/google-ads-api)",
        "link": "\u003ca href=\"https://www.anchorterminal.com/tools/google-ads-api\"\u003eGoogle Ads API on Anchor Terminal\u003c/a\u003e"
      }
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/google-ads-api",
    "json": "https://www.anchorterminal.com/tools/google-ads-api.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/google-ads-api.md",
    "slim": "https://www.anchorterminal.com/tools/google-ads-api.min.md"
  },
  "markdown": "## Overview\n\n**Grade BB · 76.4/100 · rank #31 of 629 · #1 in Advertising \u0026 campaign operations · agent-ready · confidence medium**\n\n\nMore from Google, listed separately because each is its own product: [Gemini Developer API](https://www.anchorterminal.com/tools/gemini-api.md) (Model APIs \u0026 inference), [Gemini Embedding](https://www.anchorterminal.com/tools/gemini-embedding.md) (Embeddings \u0026 rerankers), [Vertex AI Gemini tuning](https://www.anchorterminal.com/tools/vertex-ai-tuning.md) (Fine-tuning), [Google Cloud Model Armor](https://www.anchorterminal.com/tools/google-model-armor.md) (Guardrails \u0026 safety filters), [Google Imagen](https://www.anchorterminal.com/tools/google-imagen.md) (Image generation), [Google Veo](https://www.anchorterminal.com/tools/google-veo.md) (Video generation), [Google Lyria](https://www.anchorterminal.com/tools/google-lyria.md) (Music generation), [Google Cloud Speech-to-Text](https://www.anchorterminal.com/tools/google-speech-to-text.md) (Speech-to-text), [Agent Development Kit (ADK)](https://www.anchorterminal.com/tools/google-adk.md) (Agent frameworks \u0026 SDKs), [Google Cloud Secret Manager](https://www.anchorterminal.com/tools/google-secret-manager.md) (Secrets \u0026 credential vaults), [Google Weather API (Maps Platform)](https://www.anchorterminal.com/tools/google-weather-api.md) (Weather \u0026 climate data), [Chrome DevTools MCP](https://www.anchorterminal.com/tools/chrome-devtools-mcp.md) (Browser automation), [Google Maps Platform + Grounding Lite MCP](https://www.anchorterminal.com/tools/google-maps-platform.md) (Maps, geocoding \u0026 places), [Google Cloud Translation](https://www.anchorterminal.com/tools/google-cloud-translation.md) (Translation), [Google Calendar API](https://www.anchorterminal.com/tools/google-calendar-api.md) (Calendars \u0026 scheduling), [Google Drive API + MCP](https://www.anchorterminal.com/tools/google-drive-api.md) (File storage \u0026 sharing), [Gemini CLI](https://www.anchorterminal.com/tools/gemini-cli.md) (Agent harnesses), [Google Sheets API](https://www.anchorterminal.com/tools/google-sheets-api.md) (Spreadsheets \u0026 operational tables), [Gmail API](https://www.anchorterminal.com/tools/gmail-api.md) (Mailbox access).\n\n## Assessment\n\nTest 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.\n\n## Facts\n\n| Field | Value |\n| --- | --- |\n| Vendor | Google (https://developers.google.com/google-ads/api) |\n| Kind | HTTP API |\n| Category | Advertising \u0026 campaign operations (https://www.anchorterminal.com/categories/advertising) |\n| Transport | HTTP, stdio, Streamable HTTP |\n| Endpoint | `https://googleads.googleapis.com` |\n| Auth | OAuth · OAuth 2.0 access token as a Bearer header, with the single scope https://www.googleapis.com/auth/adwords, from a user flow or a service account added to the Google Ads account. The Google Cloud project that owns the credentials carries the access level. Test is granted on enabling the API, Explorer and Basic by application in the Cloud console (Basic after brand verification), and Standard by a manual audit of about 10 business days. Developer tokens were sunset on 9 September 2026. Calls through a manager account also need the `login-customer-id` header. New refresh tokens need 2-step verification. |\n| Pricing | Free (Free) · No charge for API calls was found. Advertising spend is billed to the Google Ads account, and the terms allow fees for policy non-compliance. A new Cloud project gets Test access on enabling the API, and test accounts have no billing and serve no ads, so development needs no contract or card. Daily operations are capped at 2,880 (Explorer) or 15,000 (Basic) on production accounts. |\n| x402 | No · No x402, MPP or L402 in the developer documentation or the API terms (checked 2026-10-08). |\n| Licence | Proprietary service under the Google Ads API terms. The client libraries and the google-ads-mcp server are Apache-2.0 |\n| Tools exposed | 3 |\n| Packages | pypi: `google-ads` |\n| Source | https://github.com/googleads/google-ads-python |\n| Docs | https://developers.google.com/google-ads/api/docs/get-started/introduction |\n| llms.txt | not found |\n| Last release | 2026-09-23 |\n| GitHub stars | 753 (as of 2026-10-08) |\n| PyPI downloads / week | 3,147,170 |\n| Price | No charge for API calls. Advertising spend is billed to the Google Ads account. The terms allow fees for policy non-compliance |\n| 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 |\n| 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 |\n| 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 |\n| Interfaces | gRPC and REST at googleads.googleapis.com/v25. 175 methods and 1,489 schemas in the v25 discovery document, revision 20261005 |\n| 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 |\n| Change safety | `validate_only` on mutates, atomic by default with optional `partial_failure`, test accounts that serve no ads |\n| 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 |\n| Client libraries | Official Java, .NET, PHP, Python, Ruby and Perl. Node.js and Go libraries are community-maintained |\n| Versions | About three major versions a year, each live for about 12 months. Minor versions update the major endpoint in place |\n| Audit | `change_event` for the past 30 days with user, client type and old and new values. A `request-id` on every response |\n| Capabilities | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives |\n| Tags | hosted, official, free-tier, mcp, oauth, python, java, enterprise, status-page, sandbox |\n| JSON | https://www.anchorterminal.com/api/v1/tools/google-ads-api.json |\n\n## Score breakdown (methodology v0.4, October 2026 research run)\n\nAssessed 2026-10-08 from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/#checklist). Confidence: medium. Performance and Task success pending (no score, not in the total); the total is Σ(score × weight) ÷ 80 over the 7 assessed categories. \"This run\" is each category's share of the 100 points.\n\n| Category | Weight | This run | Score (0–100) | Points |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% | 20 | 82 | 16.4 |\n| Performance | 10% | pending | pending | n/a |\n| Schema \u0026 documentation | 13% | 16.2 | 84 | 13.7 |\n| Agent ergonomics | 13% | 16.2 | 87 | 14.1 |\n| Security \u0026 auth | 14% | 17.5 | 71 | 12.4 |\n| Payments \u0026 pricing | 10% | 12.5 | 40 | 5.0 |\n| Task success | 10% | pending | pending | n/a |\n| Maintenance \u0026 community | 7% | 8.8 | 87 | 7.6 |\n| Transparency \u0026 trust (editorial 67, provenance 96) | 7% | 8.8 | 82 | 7.2 |\n| Negative events | up to −15 | up to −15 | none recorded | 0 |\n| **Total** | | | | **76.4 → BB** |\n\n### Why each score\n\n- Reliability 82: Graded on the public API, with the hosted lines. The Ads Status Dashboard lists Google Ads API as its own product with an incidents feed (20). The feed runs from 24 October 2025 to 3 October 2026 and shows no incident on Google Ads or the Google Ads API, so the last 90 days are clean (30). Daily operation limits are published per access level (2,880, 15,000 or unlimited), with 1 request a second on planning services and 10,000 operations per mutate request, but the general per-second limit is a token bucket with no published number (12 of 15). The error guide asks for exponential backoff with jitter on `TRANSIENT_ERROR` and `INTERNAL_ERROR` and names `RESOURCE_TEMPORARILY_EXHAUSTED` for rate limits. No idempotency key was found, though `validate_only` and atomic mutates limit partial writes (10 of 15). No SLA for the API was found (0). The API is generally available at v25. The MCP server is at v0.0.4 (10).\n- Performance: Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes.\n- Schema \u0026 documentation 84: Google publishes a discovery document for REST (v25, revision 20261005, 175 methods and 1,489 schemas) and protocol buffers for gRPC, which is a machine-readable contract though not OpenAPI (25). No llms.txt. developers.google.com/google-ads/api/llms.txt and developers.google.com/llms.txt both returned 404 on 8 October (0). Guides say which service to use and when, such as SearchStream over Search for large reports and the Data Manager API for new conversion uploads, and the MCP tool descriptions tell a model to call `get_resource_metadata` before `search` (16 of 20). Typed messages with 883 enum definitions in the discovery document, but reports are a GAQL query string (13 of 15). Code examples in six languages and typed error enums with a common-errors guide (15). Major versions in the path, dated release notes and upgrade guides (15).\n- Agent ergonomics 87: GAQL selects only the fields asked for, with WHERE, ORDER BY and LIMIT. The MCP server has three tools, all read-only, though the `search` description embeds the full list of resources (22 of 25). Search returns fixed pages of 10,000 rows with `next_page_token`, and SearchStream returns a whole report on one connection (20). Errors are typed enums with a `request-id`, sorted in the docs into authentication, retryable, validation and sync errors (18 of 20). No idempotency keys were found. `validate_only`, atomic mutates with optional `partial_failure`, and `readOnlyHint` on all three MCP tools earn part (14 of 20). Six official client libraries. Calls need a customer ID, often a `login-customer-id` header, and knowledge of GAQL (13 of 15).\n- Security \u0026 auth 71: OAuth 2.0 with user or service-account flows, revocable grants, and 2-step verification or a passkey for new refresh tokens. There is one scope, `adwords`, described in the discovery document as see, edit, create and delete (22 of 30). The API follows Google Ads user roles, so a read-only role limits a credential, Standard access has a reporting-only permissible use, the MCP server is read-only, and adding, removing or changing users needs a second administrator's approval. Nothing confirms a budget or bid change (15 of 20). The MCP README says only that the server exposes account data to the connected model. No prompt-injection guidance was found (5 of 15). `change_event` returns the user, client type and old and new values for the past 30 days, and the Cloud console shows methods called (12 of 15). security.txt valid to 2030, Google's vulnerability reward programme, and ISO 27001 listed for Google Ads. SOC 2 is listed for Cloud and Workspace, not Ads (17 of 20).\n- Payments \u0026 pricing 40: No x402, MPP or L402 (0). No charge for API calls was found in the docs or the terms, and the access levels and daily operation limits are public without a login (20). Test access comes with enabling the API and test accounts have no billing, so no card is needed (20). A person creates the Cloud project and OAuth credentials, applies for production access and grants the account role (0).\n- Task success: Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored.\n- Maintenance \u0026 community 87: v25.2 on 23 September 2026, 15 days before the check (30). v25 on 22 July, v25.1 on 19 August and v25.2 on 23 September are three dated releases within 90 days (20). Dated release notes, a support page with a channel for each kind of issue, a Discord channel for the AI tools, and a pull request merged in google-ads-mcp on 29 September. The developer blog returned 403 to our reader, so announcements there weren't read (12 of 15). Six current official client libraries, with google-ads 33.0.0 for Python on the day of v25.2 (15). CI workflows in the Python client and MCP repositories (10).\n- Transparency \u0026 trust 82: Closed service under the Google Ads API terms, with Apache-2.0 client libraries and MCP server. The terms page was last updated on 21 February 2019 and still defines the developer token (15 of 30). The Google Ads Data Processing Terms set deletion within a maximum of 180 days and commit to ISO 27001, and the docs state reporting retention of 37 months for granular data and 11 years for monthly and coarser data. The MCP README discloses a usage header added to API calls (22 of 30). A sunset timetable with dates for every version and a dated table of feature deprecations (20). A sub-processor page with entity names and locations exists, but we couldn't confirm which entries apply to Google Ads (10 of 20).\n\nFix list for a coding agent, everything this grade says the listing lacks, the biggest gain first (16 items): https://www.anchorterminal.com/fixes/google-ads-api.md (JSON https://www.anchorterminal.com/fixes/google-ads-api.json)\n\n### What we couldn't check\n\n- unchecked: the Google Ads developer blog (ads-developers.googleblog.com returned 403 to our reader), so the notice given before the developer token sunset and before the Customer Match and offline conversion restrictions wasn't read\n- Which entries on the Ads sub-processor page apply to Google Ads, since the list names other advertising products against each entity\n- The per-second rate limit, which the docs describe as a token bucket that varies with server load\n- Whether the API terms will be revised, since the page dated 21 February 2019 still defines the developer token\n- The MCP README still lists a developer token step in setup, while the developer guide says the latest server version doesn't need one\n- unchecked: the ISO 27001 certificate for Google Ads is linked from the compliance page as a PDF, which we didn't open\n- The criteria for Explorer access, since the docs say only that Google may let a project apply and may upgrade it automatically\n\n### Sources\n\n- introduction: \u003chttps://developers.google.com/google-ads/api/docs/get-started/introduction\u003e (seen 2026-10-08)\n- access levels and permissible use: \u003chttps://developers.google.com/google-ads/api/docs/api-policy/access-levels\u003e (seen 2026-10-08)\n- developer token sunset: \u003chttps://developers.google.com/google-ads/api/docs/api-policy/developer-token\u003e (seen 2026-10-08)\n- limits and quotas: \u003chttps://developers.google.com/google-ads/api/docs/best-practices/quotas\u003e (seen 2026-10-08)\n- rate limits: \u003chttps://developers.google.com/google-ads/api/docs/productionize/rate-limits\u003e (seen 2026-10-08)\n- error types and retries: \u003chttps://developers.google.com/google-ads/api/docs/best-practices/error-types\u003e (seen 2026-10-08)\n- MCP server guide: \u003chttps://developers.google.com/google-ads/api/docs/developer-toolkit/mcp-server\u003e (seen 2026-10-08)\n- MCP server repository: \u003chttps://github.com/googleads/google-ads-mcp\u003e (seen 2026-10-08)\n- agent skills: \u003chttps://developers.google.com/google-ads/api/docs/developer-toolkit/agent-skills\u003e (seen 2026-10-08)\n- release notes: \u003chttps://developers.google.com/google-ads/api/docs/release-notes\u003e (seen 2026-10-08)\n- deprecation and sunset timetable: \u003chttps://developers.google.com/google-ads/api/docs/sunset-dates\u003e (seen 2026-10-08)\n- feature deprecations: \u003chttps://developers.google.com/google-ads/api/docs/deprecations\u003e (seen 2026-10-08)\n- versioning: \u003chttps://developers.google.com/google-ads/api/docs/concepts/versioning\u003e (seen 2026-10-08)\n- mutate overview: \u003chttps://developers.google.com/google-ads/api/docs/mutating/overview\u003e (seen 2026-10-08)\n- paging: \u003chttps://developers.google.com/google-ads/api/docs/reporting/paging\u003e (seen 2026-10-08)\n- change event: \u003chttps://developers.google.com/google-ads/api/docs/change-event\u003e (seen 2026-10-08)\n- access model and user roles: \u003chttps://developers.google.com/google-ads/api/docs/oauth/access-model\u003e (seen 2026-10-08)\n- security requirements: \u003chttps://developers.google.com/google-ads/api/docs/oauth/security-requirements\u003e (seen 2026-10-08)\n- multi-party approvals: \u003chttps://developers.google.com/google-ads/api/docs/oauth/multi-party-approvals\u003e (seen 2026-10-08)\n- test accounts: \u003chttps://developers.google.com/google-ads/api/docs/best-practices/test-accounts\u003e (seen 2026-10-08)\n- REST authorisation and headers: \u003chttps://developers.google.com/google-ads/api/rest/auth\u003e (seen 2026-10-08)\n- first call: \u003chttps://developers.google.com/google-ads/api/docs/get-started/make-first-call\u003e (seen 2026-10-08)\n- v25 discovery document: \u003chttps://googleads.googleapis.com/$discovery/rest?version=v25\u003e (seen 2026-10-08)\n- API terms: \u003chttps://developers.google.com/google-ads/api/terms\u003e (seen 2026-10-08)\n- Ads Status Dashboard incidents feed: \u003chttps://ads.google.com/status/publisher/incidents.json\u003e (seen 2026-10-08)\n- Ads Status Dashboard: \u003chttps://ads.google.com/status/publisher/\u003e (seen 2026-10-08)\n- Google Ads Data Processing Terms: \u003chttps://business.safety.google/adsprocessorterms/\u003e (seen 2026-10-08)\n- Ads sub-processors: \u003chttps://business.safety.google/adssubprocessors/\u003e (seen 2026-10-08)\n- audits and certifications: \u003chttps://business.safety.google/compliance/\u003e (seen 2026-10-08)\n- security.txt: \u003chttps://www.google.com/.well-known/security.txt\u003e (seen 2026-10-08)\n- Python client repository: \u003chttps://github.com/googleads/google-ads-python\u003e (seen 2026-10-08)\n- PyPI google-ads: \u003chttps://pypi.org/pypi/google-ads/json\u003e (seen 2026-10-08)\n- client libraries: \u003chttps://developers.google.com/google-ads/api/docs/client-libs\u003e (seen 2026-10-08)\n- official MCP registry search: \u003chttps://registry.modelcontextprotocol.io/v0/servers?search=google-ads\u003e (seen 2026-10-08)\n\n## Who's behind it (provenance 96/100, checked 2026-10-08)\n\n| Check | Finding | Points |\n| --- | --- | --- |\n| Legal entity named | Google LLC | 20/20 |\n| Domain age | google.com, registered 1997-09-15 (29 years) | 15/15 |\n| Endpoint on the vendor's domain | googleads.googleapis.com | 15/15 |\n| Terms of service | read, states 6 of the 7 things a reader expects | 9.1/10 |\n| Privacy policy | read, states 7 of the 8 things a reader expects, and has 1 clause that costs points | 7.3/10 |\n| Status page | ads.google.com/status/publisher | 10/10 |\n| Changelog | published | 10/10 |\n| security.txt | valid | 10/10 |\n\nThe endpoint is on googleapis.com, Google's API domain. google.com was registered in 1997.\n\nThe Google Ads API terms name Google LLC for most countries, Google Ireland Limited for EMEA and Google Asia Pacific Pte. Ltd. for APAC.\n\nThe terms page says it was last updated on 21 February 2019 and still defines the developer token, which Google sunset on 9 September 2026.\n\nRDAP for google.com gives a registration date of 1997-09-15.\n\nwww.google.com/.well-known/security.txt expires on 1 April 2030 and names g.co/vulnz, security@google.com and the vulnerability reward programme.\n\nGoogle publishes a discovery document for the REST interface and protocol buffer definitions for gRPC, not an OpenAPI spec.\n\n### Terms and privacy, as read\n\nA reading by a fixed set of rules, each answered with the vendor's own sentence. Not legal advice.\n\n**Terms of service** (https://developers.google.com/google-ads/api/terms), read 2026-10-08, dated 2019-02-21, states 6 of the 7 things a reader expects.\n\n- To know. Says access can be ended without notice or for any reason. \"Google may suspend or terminate your access to the Google Ads API, or change any of the Google Ads API Specifications, protocols, or methods of access for any or no reason and will bear no liability for such decisions.\"\n- To know. Requires arbitration or waives class actions. \"If the Dispute is not resolved within 30 days, it must be resolved by arbitration by the American Arbitration Association's International Centre for Dispute Resolution in accordance with its Expedited Commercial Rules in force as of the date of this Google Ads API Agreement (\"Rules\").\"\n- To know. Has not been updated for three years or more. \"Last updated February 21, 2019\"\n- Gives the date it was last updated. Last updated 2019-02-21.\n- Names the governing law or courts. The law of California Law, with disputes in the courts of Santa Clara County, California.\n- States a limit on its liability. Capped at USD$1,000.\n- Says how changes to the terms are announced. Gives 30 days of notice before a change.\n- Not found in the text. Refers to a service level or uptime commitment.\n- Also in the text (2026-10-08). Where the full exclusion of liability is not enforceable, Google's aggregate liability is limited to the greater of 1,000 US dollars or the API fees paid in the month before the claim. \"In the event that any of the above is not enforceable, to the extent permitted by law, Google's aggregate liability under this Google Ads API Agreement is limited to the greater of USD$1,000 or the amount of any Google Ads API fees you paid to Google in the month preceding the claim.\"\n- Also in the text (2026-10-08). Google may inspect the user interfaces of the customer's Google Ads API client and monitor and audit API activity at any time. \"Google may inspect your Google Ads API Client user interfaces and monitor and audit Google Ads API activity, at any time, for the purpose of ensuring quality and enforcing compliance with these terms and Policies.\"\n- Also in the text (2026-10-08). Google charges fees for non-compliance with its Google Ads API policies, at rates listed on a separate rate sheet. \"Fees assessed for non-compliance with Policies are set forth at https://developers.google.com/google-ads/api/docs/rate-sheet (\"Fees\").\"\n\n**Privacy policy** (https://policies.google.com/privacy), read 2026-10-08, dated 2026-10-01, states 7 of the 8 things a reader expects.\n\n- To know. Says it may use customer content to train or improve models, and no opt-out was found (costs points). \"We use your interactions with AI models and technologies like Gemini Apps to develop, train, fine-tune, and improve these models to better handle your requests, and update their classifiers and filters including for safety, language understanding, and factuality.\"\n- Gives the date it was last updated. Last updated 2026-10-01.\n- Not found in the text. Says where data is transferred or stored.\n- Also in the text (2026-10-08). Members of organisations using Google Workspace or Google Cloud Platform are referred to the separate Google Cloud Privacy Notice for how those services collect and use personal information. \"If you’re a member of an organization that uses Google Workspace or Google Cloud Platform, learn how these services collect and use your personal information in the Google Cloud Privacy Notice.\"\n- Also in the text (2026-10-08). Google says it uses publicly available information from the web and other public sources to help train machine learning models behind products such as Google Translate, Gemini Apps and Cloud AI. \"We use publicly available information online or from other public sources to help train new machine learning models and build foundational technologies that power various Google products such as Google Translate, Gemini Apps, and Cloud AI capabilities.\"\n\n## Live (updated 2026-10-08 18:20 UTC)\n\n- Right now: up, HTTP 404, 44 ms, checked 2026-10-08 18:20 UTC (get on `https://googleads.googleapis.com`)\n- Uptime 24h 100.0% (33 probes) · 30 days 100.0% (33 probes) · p50 43 ms · p95 97 ms\n- Vendor status page: unknown, no machine-readable status found\n- github `googleads/google-ads-python` 33.0.0, released 2026-09-23\n- pypi `google-ads` 33.0.0, released 2026-09-23\n- security.txt: valid, expires 2030-04-01T00:00:00z\n- Watching changelog \u003chttps://developers.google.com/google-ads/api/docs/release-notes\u003e\n- Watching terms \u003chttps://developers.google.com/google-ads/api/terms\u003e\n- Always current: https://www.anchorterminal.com/api/v1/live/google-ads-api.json\n\n## Probe metrics\n\nNot measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. Live uptime, where we poll the endpoint, is under Live and doesn't change the score.\n\n## Strengths\n\n- `validate_only` on mutate requests validates a change without executing it, and mutates are atomic unless `partial_failure` is set\n- Test accounts serve no ads and have no billing, and a new Cloud project gets Test access when the API is enabled\n- No incident on Google Ads or the Google Ads API in the Ads Status Dashboard feed from 24 October 2025 to 3 October 2026\n- Published sunset timetable, with each major version live for about 12 months and at most two upgrades a year\n- `change_event` reports who changed what, the client type and old and new values for the past 30 days\n\n## Weaknesses\n\n- One OAuth scope, `adwords`, covers reading, editing, creating and deleting. Read-only access depends on the Google Ads user role\n- Production accounts need Explorer access (2,880 operations a day) or higher. Basic needs brand verification and Standard a manual audit of about 10 business days\n- The per-second rate limit has no published number, since it's a token bucket that varies with server load\n- No idempotency keys were found in the reviewed documentation\n- The official MCP server is read-only, self-hosted and at v0.0.4, and it isn't in the official MCP registry\n\n## Before you call it (notes for agents)\n\n1. Send `validateOnly: true` on a mutate first. It returns errors without making the change. Batch jobs don't support it\n2. Create campaigns with status PAUSED and enable them in a separate step, since an enabled campaign with a budget can spend\n3. Send `login-customer-id` (digits only, no hyphens) when you reach a client account through a manager account\n4. A failed request still counts against the daily operation quota. Paging with a valid `next_page_token` doesn't\n5. 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\n\n## Connect\n\nInstall:\n\n```bash\npip install google-ads\n```\n\nFirst request:\n\n```bash\ncurl -i -X POST \\\n  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer ACCESS_TOKEN\" \\\n  -H \"login-customer-id: LOGIN_CUSTOMER_ID\" \\\n  --data-binary \"@query.json\"\n```\n\nMCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"google-ads-mcp\": {\n      \"args\": [\n        \"run\",\n        \"--spec\",\n        \"git+https://github.com/googleads/google-ads-mcp.git\",\n        \"google-ads-mcp\"\n      ],\n      \"command\": \"pipx\",\n      \"env\": {\n        \"GOOGLE_APPLICATION_CREDENTIALS\": \"/path/to/credentials.json\",\n        \"GOOGLE_PROJECT_ID\": \"YOUR_PROJECT_ID\"\n      }\n    }\n  }\n}\n```\n\nThrough letme (picks today, calling later): https://letme.dev/google-ads-api (letme picks it for ads.audiences, the top-graded tool for the job, letme picks it for ads.budgets, the top-graded tool for the job, letme picks it for ads.campaigns, the top-graded tool for the job, letme picks it for ads.creatives, the top-graded tool for the job, letme picks it for ads.reporting, the top-graded tool for the job). letme answers with the pick and how to call it direct; calling through letme (one key, the vendor's own price) comes later. How it works: https://www.anchorterminal.com/letme/index.md\n\n## Similar tools\n\nRanked by shared capabilities, then score. Same-category tools with no shared capability key are listed last.\n\n| Tool | Grade | Score | Rank | Shared capabilities | x402 | Markdown |\n| --- | --- | --- | --- | --- | --- | --- |\n| Meta Marketing API | B | 67.7 | 187 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | no | https://www.anchorterminal.com/tools/meta-marketing-api.md |\n| LinkedIn Marketing APIs | B | 62.4 | 304 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | no | https://www.anchorterminal.com/tools/linkedin-marketing-api.md |\n| Microsoft Advertising API | C | 60.3 | 360 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | no | https://www.anchorterminal.com/tools/microsoft-advertising-api.md |\n| Amazon Ads API | C | 59 | 388 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | no | https://www.anchorterminal.com/tools/amazon-ads-api.md |\n\n## Panel reviews (0)\n\nReviewed by the Anchor panel (https://www.anchorterminal.com/reviewers/index.md): .\n\nDesk reviews, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. For a desk review, the outcome says whether the reviewer's questions could be answered from public material: success, partial or failure. How reviews work: https://www.anchorterminal.com/reviews/how-it-works.md\n\n## Notable\n\n- Developer tokens were sunset on 9 September 2026. The access level now belongs to the Google Cloud project that owns the OAuth client or service account, and the `developer-token` header is ignored (source: \u003chttps://developers.google.com/google-ads/api/docs/api-policy/developer-token\u003e)\n- Four access levels. Test (test accounts only, 15,000 operations a day), Explorer (2,880 a day on production accounts), Basic (15,000 a day, brand verification first) and Standard (unlimited, manual audit, about 10 business days) (source: \u003chttps://developers.google.com/google-ads/api/docs/api-policy/access-levels\u003e)\n- Google's MCP server exposes three read-only tools (`list_accessible_customers`, `search` and `get_resource_metadata`) over stdio or HTTP on Cloud Run, and can't change bids, pause campaigns or create assets (source: \u003chttps://developers.google.com/google-ads/api/docs/developer-toolkit/mcp-server\u003e)\n- v25.2 shipped on 23 September 2026 and v26 is planned for October 2026. v22 is due to sunset in October 2026 (tentative) (source: \u003chttps://developers.google.com/google-ads/api/docs/sunset-dates\u003e)\n- New adopters are barred from Customer Match uploads (from 1 April 2026) and offline click conversion uploads (from 15 June 2026) and are sent to the Data Manager API (source: \u003chttps://developers.google.com/google-ads/api/docs/deprecations\u003e)\n- New OAuth refresh tokens need 2-step verification, and from 5 August 2026 a passkey for enforced users (source: \u003chttps://developers.google.com/google-ads/api/docs/oauth/security-requirements\u003e)\n- Agent skills for Claude Code, Codex, Cursor and Antigravity install from the google/skills repository (source: \u003chttps://developers.google.com/google-ads/api/docs/developer-toolkit/agent-skills\u003e)\n\n## Compare\n\n- [Amazon Ads API vs Google Ads API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-google-ads-api.md): C 59 vs BB 76.4\n- [Google Ads API vs LinkedIn Marketing APIs](https://www.anchorterminal.com/compare/google-ads-api-vs-linkedin-marketing-api.md): BB 76.4 vs B 62.4\n- [Google Ads API vs Meta Marketing API](https://www.anchorterminal.com/compare/google-ads-api-vs-meta-marketing-api.md): BB 76.4 vs B 67.7\n- [Google Ads API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/google-ads-api-vs-microsoft-advertising-api.md): BB 76.4 vs C 60.3\n\n## Verify this listing\n\nFor the vendor. The badge or a plain link to this page verifies the listing, from a page on google.com or one of its subdomains, or the README of github.com/googleads/google-ads-python. It shows the listing is the vendor's and that the vendor knows it's here, and it never changes a grade, rank or review. The vendor sends the page's address to `POST https://www.anchorterminal.com/api/v1/verify` as `{\"slug\": \"google-ads-api\", \"url\": \"…\"}`, or calls the `verify_listing` tool at https://www.anchorterminal.com/mcp. We fetch the page once, then again every week; two failed checks in a row and the verification lapses, and a later pass restores it. What we check: https://www.anchorterminal.com/builders/index.md#verify\n\nHTML badge:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/google-ads-api\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/google-ads-api.svg\" alt=\"Google Ads API on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e\n```\n\nMarkdown badge, for a README:\n\n```markdown\n[![Google Ads API on Anchor Terminal](https://www.anchorterminal.com/badges/google-ads-api.svg)](https://www.anchorterminal.com/tools/google-ads-api)\n```\n\nPlain link:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/google-ads-api\"\u003eGoogle Ads API on Anchor Terminal\u003c/a\u003e\n```\n\n## Share this listing\n\nFor the vendor. Sharing assets for social media, two PNGs of 1200 × 630 that say Google Ads API is listed on Anchor Terminal, with the vendor's logo and this page's address and no grade or score.\n\n- Dark: https://www.anchorterminal.com/assets/share/google-ads-api-dark.png\n- Light: https://www.anchorterminal.com/assets/share/google-ads-api-light.png\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Advertising \u0026 campaign operations",
        "url": "https://www.anchorterminal.com/categories/advertising"
      },
      {
        "name": "Google Ads API",
        "url": ""
      }
    ],
    "description": "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.",
    "facts": [
      "rank #31 of 629",
      "OAuth auth",
      "0 desk reviews"
    ],
    "h1": "Google Ads API",
    "image": "https://www.anchorterminal.com/assets/og/tools-google-ads-api.png",
    "path": "/tools/google-ads-api",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Google Ads API review for AI agents, grade BB (76.4/100)",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/tools/google-ads-api"
  },
  "tokens": {
    "markdown": 8500,
    "slim": 1630
  },
  "version": 1
}
