{
  "data": {
    "a": {
      "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": 32,
        "ranked": true,
        "rankOf": 842,
        "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"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "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",
        "gemini-live",
        "google-adk",
        "google-secret-manager",
        "google-weather-api",
        "chrome-devtools-mcp",
        "google-maps-platform",
        "google-cloud-translation",
        "google-calendar-api",
        "firebase-cloud-messaging",
        "google-drive-api",
        "gemini-cli",
        "google-search-console",
        "google-forms",
        "google-sheets-api",
        "gmail-api"
      ],
      "area": "communication",
      "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
      },
      "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-09T11:29:01.713001146Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 41,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 51,
          "p95ms24h": 99,
          "samples24h": 215,
          "samples30d": 215,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 122,
              "ok": 122
            }
          ]
        },
        "vendorStatus": {
          "page": "https://ads.google.com/status/publisher",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-09T07:57:58.99818291Z"
        },
        "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-09T11:29:01.713001146Z"
      }
    },
    "answer": "Google Ads API scores 76.4 (BB) on agent readiness against Snapchat Ads API's 50.4 (D), and leads in every scored category.",
    "b": {
      "slug": "snapchat-ads",
      "name": "Snapchat Ads API",
      "vendor": "Snap Inc.",
      "vendorUrl": "https://www.snap.com",
      "kind": "http-api",
      "category": "advertising",
      "summary": "Snap's Ads API creates and manages Snapchat campaigns, ad squads, ads, creatives and audiences and returns performance statistics. Agents call REST endpoints at adsapi.snapchat.com/v1 with a member's OAuth token, or read account data through the read-only Ads MCP server.",
      "url": "https://www.anchorterminal.com/tools/snapchat-ads",
      "markdownUrl": "https://www.anchorterminal.com/tools/snapchat-ads.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/snapchat-ads.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/snapchat-ads.json",
      "license": "Proprietary service under the Snap Developer Terms, which incorporate the Business Services Terms and the Snap Business Tools Terms",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://mcp.snapchat.com/ads",
      "packages": [],
      "auth": "oauth",
      "authNotes": "Access is self-serve. An Organisation Admin creates an OAuth app in Snap Business Manager, accepts the Snap Developer Terms and the Snap Business Tools Terms, and receives a client ID and a client secret shown once. A member then consents in a browser (authorisation code grant) with the `snapchat-marketing-api` scope, which covers reads and writes. Access tokens last 60 minutes and refresh tokens do not expire. Calls act with the member's organisation and ad account roles. The Ads MCP server uses client IDs registered by Snap, the `snapads.read` scope and an admin's approval for each agent, with no dynamic client registration.",
      "pricing": "free",
      "pricingNotes": "No fee for API access was found in the docs or the terms, and no page states a price for the API. Ad spend is set by campaign and ad squad budgets and billed to the ad account's funding source, with a published minimum of $5 a day. An agent can start without a contract. A test ad account never serves live ads, though whether a business account needs a payment method before API use was not established (checked 2026-10-08).",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Marketing API documentation or the Snap Developer Terms (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.snap.com/marketing-api/Ads-API/introduction",
      "llmsTxt": "https://developers.snap.com/llms.txt",
      "capabilities": [
        "ads.reporting",
        "ads.campaigns",
        "ads.budgets",
        "ads.audiences",
        "ads.creatives"
      ],
      "tags": [
        "hosted",
        "free",
        "oauth",
        "mcp",
        "llms-txt",
        "test-account",
        "audit-log",
        "bug-bounty",
        "closed-source",
        "self-serve"
      ],
      "lastRelease": "2026-10-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 50.4,
        "grade": "D",
        "agentReady": false,
        "rank": 687,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 61,
          "payments": 20,
          "reliability": 34,
          "schema": 56,
          "security": 65,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The docs are served as Markdown with an llms.txt index, rate limits are published as 20 requests a second per app and 10 per token, and test ad accounts never serve live ads. No OpenAPI specification, status page, SLA, idempotency key or Ads API SDK was found, and one OAuth scope covers both reads and writes.",
        "bestFor": "An agent that manages or reports on Snapchat campaigns for an advertiser whose admin can create an OAuth app.",
        "strengths": [
          "llms.txt at developers.snap.com indexes every Marketing API page, and each page has a Markdown twin at the same path with `.md`",
          "Rate limits are published with numbers, an average of 20 requests a second per app and 10 per access token",
          "An ad account created with `\"test\": true` can never serve live ads, and `test=true` on a stats request returns sample data",
          "Change logs for campaigns, ad squads, ads and creatives record the user, the OAuth app and the before and after values",
          "The Ads MCP server at https://mcp.snapchat.com/ads is read-only, self-service, and needs an organisation admin's approval for each agent"
        ],
        "weaknesses": [
          "No OpenAPI specification, Postman collection or Ads API SDK was found in the reviewed documentation",
          "No status page or SLA was found, and no Retry-After header, backoff schedule or idempotency key is documented",
          "The `snapchat-marketing-api` scope covers reads and writes together, and refresh tokens do not expire",
          "An update with PUT expects the whole object and resets omitted attributes to their defaults. Deleted objects cannot be restored",
          "The Snap Developer Terms forbid public statements about use of the developer programme without Snap's written approval, and the Business Services Terms forbid publishing Business Services Data"
        ],
        "agentNotes": [
          "Refresh the access token every 60 minutes with the refresh token. An expired token returns 401 with `WWW-Authenticate: Bearer error=\"invalid_token\"`",
          "Create a test ad account with `\"test\": true` and build there first, and create campaigns with `\"status\": \"PAUSED\"`",
          "Change one field with PATCH (JSON Patch). A PUT that omits attributes resets them to their defaults",
          "Send money as micro-currency, where 1.00 of the account currency is 1,000,000",
          "Page lists with `limit` (50 to 1,000) and follow `paging.next_link`. Use `async=true` for large stats pulls, since an oversized response fails with `E9001` and a retry does not help"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 50.4
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 61,
          "payments": 20,
          "reliability": 34,
          "schema": 56,
          "security": 65,
          "transparency": 57
        },
        "provenanceScore": 80
      },
      "connect": {
        "http": "curl \"https://adsapi.snapchat.com/v1/me/organizations?with_ad_accounts=true\" \\\n  -H \"Authorization: Bearer {access_token}\"",
        "claudeCode": "claude mcp add --transport http --client-id claude-snap-ads snap-ads https://mcp.snapchat.com/ads\nclaude mcp login snap-ads"
      },
      "letme": {
        "capability": "https://letme.dev/ads.reporting",
        "tool": "https://letme.dev/snapchat-ads"
      },
      "area": "communication",
      "provenance": {
        "legalEntity": "Snap Inc.",
        "domain": "snapchat.com",
        "domainRegistered": "2012-02-28",
        "endpointOnVendorDomain": true,
        "terms": "https://www.snap.com/en-US/terms/developer",
        "privacy": "https://values.snap.com/privacy/privacy-policy",
        "statusPage": "",
        "changelog": "https://developers.snap.com/marketing-api/Ads-API/changelog",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The Snap Developer Terms (effective 31 January 2025) govern the developer programme and are incorporated into the Business Services Terms (effective 30 September 2024). The contracting entity is Snap Inc. for a business in the United States and Snap Group Limited elsewhere.",
          "The OAuth app setup also requires the Snap Business Tools Terms (effective 1 November 2021).",
          "The privacy policy at values.snap.com is effective 21 September 2026. A Data Processing Agreement (effective 25 July 2023) covers customer personal data Snap processes for a business.",
          "API calls go to https://adsapi.snapchat.com/v1, OAuth to accounts.snapchat.com and the MCP server to mcp.snapchat.com. The documentation is at developers.snap.com.",
          "snapchat.com/.well-known/security.txt has Contact, Policy, Acknowledgements, Canonical and Hiring lines pointing to hackerone.com/snapchat, and no Expires field. www.snap.com and developers.snap.com return 404 for the file.",
          "No status page is linked from the reviewed documentation. status.snapchat.com did not connect from our network.",
          "RDAP gives registration dates of 2012-02-28 for snapchat.com and 1997-02-20 for snap.com."
        ],
        "score": 80
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/snapchat-ads.json",
      "live": {
        "slug": "snapchat-ads",
        "probe": {
          "target": "https://mcp.snapchat.com/ads",
          "method": "get",
          "lastAt": "2026-10-09T11:29:14.133574039Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 457,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 458,
          "p95ms24h": 491,
          "samples24h": 41,
          "samples30d": 41,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 41,
              "ok": 41
            }
          ]
        },
        "updatedAt": "2026-10-09T11:29:14.133574039Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Google",
        "b": "Snap Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://googleads.googleapis.com",
        "b": "https://mcp.snapchat.com/ads",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the Google Ads API terms. The client libraries and the google-ads-mcp server are Apache-2.0",
        "b": "Proprietary service under the Snap Developer Terms, which incorporate the Business Services Terms and the Snap Business Tools Terms",
        "name": "Licence"
      },
      {
        "a": "3",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-23",
        "b": "2026-10-06",
        "name": "Last release"
      },
      {
        "a": "2019-02-21",
        "b": "2025-01-31",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-01",
        "b": "2026-09-21",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "753 stars, 3.1M PyPI/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Google Ads API scores 76.4 (BB) on agent readiness against Snapchat Ads API's 50.4 (D), and leads in every scored category.",
        "question": "Which is better for AI agents, Google Ads API or Snapchat Ads API?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do Google Ads API and Snapchat Ads API need an API key?"
      },
      {
        "answer": "Yes. Google Ads API has a hosted endpoint at https://googleads.googleapis.com and Snapchat Ads API at https://mcp.snapchat.com/ads.",
        "question": "Can an agent call Google Ads API and Snapchat Ads API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 82 against 34",
          "Schema \u0026 documentation, 84 against 56",
          "Agent ergonomics, 87 against 57",
          "Security \u0026 auth, 71 against 65",
          "Payments \u0026 pricing, 40 against 20",
          "Maintenance \u0026 community, 87 against 61",
          "Transparency \u0026 trust, 82 against 69"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Runs on your own machine"
        ],
        "goodFor": "It suits an agent that reports on or manages Google Ads accounts for an advertiser or agency that can get a Cloud project approved.",
        "slug": "google-ads-api",
        "watchFor": "One OAuth scope, `adwords`, covers reading, editing, creating and deleting. Read-only access depends on the Google Ads user role"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "An agent that manages or reports on Snapchat campaigns for an advertiser whose admin can create an OAuth app.",
        "slug": "snapchat-ads",
        "watchFor": "No OpenAPI specification, Postman collection or Ads API SDK was found in the reviewed documentation"
      }
    ],
    "job": {
      "capability": "ads.reporting",
      "name": "Ads reporting"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-google-ads-api.json",
        "title": "Amazon Ads API vs Google Ads API",
        "url": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-google-ads-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-snapchat-ads.json",
        "title": "Amazon Ads API vs Snapchat Ads API",
        "url": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-snapchat-ads"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-ads-api-vs-linkedin-marketing-api.json",
        "title": "Google Ads API vs LinkedIn Marketing APIs",
        "url": "https://www.anchorterminal.com/compare/google-ads-api-vs-linkedin-marketing-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-ads-api-vs-meta-marketing-api.json",
        "title": "Google Ads API vs Meta Marketing API",
        "url": "https://www.anchorterminal.com/compare/google-ads-api-vs-meta-marketing-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-ads-api-vs-microsoft-advertising-api.json",
        "title": "Google Ads API vs Microsoft Advertising API",
        "url": "https://www.anchorterminal.com/compare/google-ads-api-vs-microsoft-advertising-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-snapchat-ads.json",
        "title": "LinkedIn Marketing APIs vs Snapchat Ads API",
        "url": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-snapchat-ads"
      },
      {
        "json": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-snapchat-ads.json",
        "title": "Meta Marketing API vs Snapchat Ads API",
        "url": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-snapchat-ads"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-snapchat-ads.json",
        "title": "Microsoft Advertising API vs Snapchat Ads API",
        "url": "https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-snapchat-ads"
      }
    ],
    "scores": [
      {
        "by": 48,
        "edge": "google-ads-api",
        "google-ads-api": 82,
        "key": "reliability",
        "name": "Reliability",
        "snapchat-ads": 34,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 28,
        "edge": "google-ads-api",
        "google-ads-api": 84,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "snapchat-ads": 56,
        "weight": 13
      },
      {
        "by": 30,
        "edge": "google-ads-api",
        "google-ads-api": 87,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "snapchat-ads": 57,
        "weight": 13
      },
      {
        "by": 6,
        "edge": "google-ads-api",
        "google-ads-api": 71,
        "key": "security",
        "name": "Security \u0026 auth",
        "snapchat-ads": 65,
        "weight": 14
      },
      {
        "by": 20,
        "edge": "google-ads-api",
        "google-ads-api": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "snapchat-ads": 20,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 26,
        "edge": "google-ads-api",
        "google-ads-api": 87,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "snapchat-ads": 61,
        "weight": 7
      },
      {
        "by": 13,
        "edge": "google-ads-api",
        "google-ads-api": 82,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "snapchat-ads": 69,
        "weight": 7
      }
    ],
    "summary": "Google Ads API scores 76.4 (BB) on agent readiness against Snapchat Ads API's 50.4 (D), and leads in every scored category. Both do ads reporting.",
    "verdicts": {
      "google-ads-api": "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.",
      "snapchat-ads": "The docs are served as Markdown with an llms.txt index, rate limits are published as 20 requests a second per app and 10 per token, and test ad accounts never serve live ads. No OpenAPI specification, status page, SLA, idempotency key or Ads API SDK was found, and one OAuth scope covers both reads and writes."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/google-ads-api-vs-snapchat-ads",
    "json": "https://www.anchorterminal.com/compare/google-ads-api-vs-snapchat-ads.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/google-ads-api-vs-snapchat-ads.md",
    "slim": "https://www.anchorterminal.com/compare/google-ads-api-vs-snapchat-ads.min.md"
  },
  "markdown": "Google Ads API scores 76.4 (BB) on agent readiness against Snapchat Ads API's 50.4 (D), and leads in every scored category. Both do ads reporting.\n\n- Google Ads API: grade BB, 76.4/100, rank #32 of 842. Markdown https://www.anchorterminal.com/tools/google-ads-api.md · JSON https://www.anchorterminal.com/api/v1/tools/google-ads-api.json\n- Snapchat Ads API: grade D, 50.4/100, rank #687 of 842. Markdown https://www.anchorterminal.com/tools/snapchat-ads.md · JSON https://www.anchorterminal.com/api/v1/tools/snapchat-ads.json\n\n## Which one, for what\n\n### Google Ads API (BB)\n\nGood for: It suits an agent that reports on or manages Google Ads accounts for an advertiser or agency that can get a Cloud project approved.\n\nAhead on:\n- Reliability, 82 against 34\n- Schema \u0026 documentation, 84 against 56\n- Agent ergonomics, 87 against 57\n- Security \u0026 auth, 71 against 65\n- Payments \u0026 pricing, 40 against 20\n- Maintenance \u0026 community, 87 against 61\n- Transparency \u0026 trust, 82 against 69\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Runs on your own machine\n\nWatch for: One OAuth scope, `adwords`, covers reading, editing, creating and deleting. Read-only access depends on the Google Ads user role\n\n### Snapchat Ads API (D)\n\nGood for: An agent that manages or reports on Snapchat campaigns for an advertiser whose admin can create an OAuth app.\n\nWatch for: No OpenAPI specification, Postman collection or Ads API SDK was found in the reviewed documentation\n\n\n## Score by category\n\n| Category | Weight | Google Ads API | Snapchat Ads API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 82 | 34 | Google Ads API +48 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 84 | 56 | Google Ads API +28 |\n| Agent ergonomics | 13% (16.2 this run) | 87 | 57 | Google Ads API +30 |\n| Security \u0026 auth | 14% (17.5 this run) | 71 | 65 | Google Ads API +6 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 20 | Google Ads API +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 61 | Google Ads API +26 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 82 | 69 | Google Ads API +13 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **76.4 · BB** | **50.4 · D** | |\n\n## Facts side by side\n\n| Fact | Google Ads API | Snapchat Ads API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Google | Snap Inc. |\n| Hosted endpoint | `https://googleads.googleapis.com` | `https://mcp.snapchat.com/ads` |\n| Transports | HTTP, stdio, Streamable HTTP | HTTP |\n| Auth | OAuth | OAuth |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Proprietary service under the Google Ads API terms. The client libraries and the google-ads-mcp server are Apache-2.0 | Proprietary service under the Snap Developer Terms, which incorporate the Business Services Terms and the Snap Business Tools Terms |\n| Tools exposed | 3 | none |\n| Read-only variant documented | no | yes |\n| llms.txt | no | yes |\n| Last release | 2026-09-23 | 2026-10-06 |\n| Terms last updated | 2019-02-21 | 2025-01-31 |\n| Privacy policy last updated | 2026-10-01 | 2026-09-21 |\n| Customer content may train models | yes | yes |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | not found in the text | yes |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 753 stars, 3.1M PyPI/wk | none |\n\n## Verdicts\n\n**Google Ads API.** 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.\n\n**Snapchat Ads API.** The docs are served as Markdown with an llms.txt index, rate limits are published as 20 requests a second per app and 10 per token, and test ad accounts never serve live ads. No OpenAPI specification, status page, SLA, idempotency key or Ads API SDK was found, and one OAuth scope covers both reads and writes.\n\n## Before you call either\n\n### Google Ads API\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### Snapchat Ads API\n\n1. Refresh the access token every 60 minutes with the refresh token. An expired token returns 401 with `WWW-Authenticate: Bearer error=\"invalid_token\"`\n2. Create a test ad account with `\"test\": true` and build there first, and create campaigns with `\"status\": \"PAUSED\"`\n3. Change one field with PATCH (JSON Patch). A PUT that omits attributes resets them to their defaults\n4. Send money as micro-currency, where 1.00 of the account currency is 1,000,000\n5. Page lists with `limit` (50 to 1,000) and follow `paging.next_link`. Use `async=true` for large stats pulls, since an oversized response fails with `E9001` and a retry does not help\n\n## Questions\n\n### Which is better for AI agents, Google Ads API or Snapchat Ads API?\n\nGoogle Ads API scores 76.4 (BB) on agent readiness against Snapchat Ads API's 50.4 (D), and leads in every scored category.\n\n### Do Google Ads API and Snapchat Ads API need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call Google Ads API and Snapchat Ads API without installing anything?\n\nYes. Google Ads API has a hosted endpoint at https://googleads.googleapis.com and Snapchat Ads API at https://mcp.snapchat.com/ads.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/google-ads-api-vs-snapchat-ads.json, and with the fewest tokens: https://www.anchorterminal.com/compare/google-ads-api-vs-snapchat-ads.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"google-ads-api\", \"b\": \"snapchat-ads\"}`. From a terminal: `anchor compare google-ads-api snapchat-ads`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/google-ads-api.json and https://www.anchorterminal.com/api/v1/tools/snapchat-ads.json\n\n## Other comparisons with Google Ads API or Snapchat Ads API\n\n- [Amazon Ads API vs Google Ads API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-google-ads-api.md)\n- [Amazon Ads API vs Snapchat Ads API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-snapchat-ads.md)\n- [Google Ads API vs LinkedIn Marketing APIs](https://www.anchorterminal.com/compare/google-ads-api-vs-linkedin-marketing-api.md)\n- [Google Ads API vs Meta Marketing API](https://www.anchorterminal.com/compare/google-ads-api-vs-meta-marketing-api.md)\n- [Google Ads API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/google-ads-api-vs-microsoft-advertising-api.md)\n- [LinkedIn Marketing APIs vs Snapchat Ads API](https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-snapchat-ads.md)\n- [Meta Marketing API vs Snapchat Ads API](https://www.anchorterminal.com/compare/meta-marketing-api-vs-snapchat-ads.md)\n- [Microsoft Advertising API vs Snapchat Ads API](https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-snapchat-ads.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "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": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Google Ads API vs Snapchat Ads API",
        "url": ""
      }
    ],
    "description": "Google Ads API scores 76.4 (BB) on agent readiness against Snapchat Ads API's 50.4 (D), and leads in every scored category. Both do ads reporting. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Google Ads API BB 76.4",
      "Snapchat Ads API D 50.4",
      "scores"
    ],
    "h1": "Google Ads API vs Snapchat Ads API",
    "image": "https://www.anchorterminal.com/assets/og/compare-google-ads-api-vs-snapchat-ads.png",
    "path": "/compare/google-ads-api-vs-snapchat-ads",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Google Ads API vs Snapchat Ads API for AI agents, BB 76.4 vs D 50.4",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/google-ads-api-vs-snapchat-ads"
  },
  "tokens": {
    "markdown": 2100,
    "slim": 680
  },
  "version": 1
}
