{
  "data": {
    "category": {
      "area": "communication",
      "capabilities": [
        "ads.reporting",
        "ads.campaigns",
        "ads.budgets",
        "ads.audiences",
        "ads.creatives"
      ],
      "description": "The advertising platforms' own APIs for campaigns, budgets, audiences and performance reports. Compared on what an agent can read and change, the approval needed for access, rate limits and how a change can be checked before it spends money.",
      "json": "https://www.anchorterminal.com/categories/advertising.json",
      "name": "Advertising \u0026 campaign operations",
      "slug": "advertising",
      "test": "One test account on each platform. The same tasks run through its API (read last month's performance by campaign, create a paused campaign with a budget, change a bid, build an audience). We check the access steps, validation before a change is live and reporting delay. In this run listings are graded from public evidence against the published checklist.",
      "title": "Advertising platform APIs for AI agents",
      "toolCount": 5,
      "tools": [
        "google-ads-api",
        "meta-marketing-api",
        "linkedin-marketing-api",
        "microsoft-advertising-api",
        "amazon-ads-api"
      ],
      "url": "https://www.anchorterminal.com/categories/advertising"
    },
    "tools": [
      {
        "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"
          ],
          "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",
          "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"
        ],
        "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-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"
        }
      },
      {
        "slug": "meta-marketing-api",
        "name": "Meta Marketing API",
        "vendor": "Meta Platforms, Inc.",
        "vendorUrl": "https://developers.facebook.com",
        "kind": "http-api",
        "category": "advertising",
        "summary": "Meta's Marketing API creates and manages campaigns, ad sets, ads, creatives and audiences across Facebook, Instagram, Messenger and WhatsApp, and reports performance through Ads Insights. It is a versioned Graph API with OAuth access tokens.",
        "url": "https://www.anchorterminal.com/tools/meta-marketing-api",
        "markdownUrl": "https://www.anchorterminal.com/tools/meta-marketing-api.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/meta-marketing-api.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/meta-marketing-api.json",
        "repo": "https://github.com/facebook/facebook-python-business-sdk",
        "license": "Proprietary service under the Meta Platform Terms. The Business SDKs and the codegen specs on GitHub carry Meta's own platform licence, which allows use only with Meta's APIs",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://graph.facebook.com",
        "packages": [
          {
            "registry": "pypi",
            "name": "facebook-business"
          },
          {
            "registry": "npm",
            "name": "facebook-nodejs-business-sdk"
          },
          {
            "registry": "pypi",
            "name": "meta-ads"
          }
        ],
        "auth": "oauth",
        "authNotes": "Every call needs an access token from a Meta developer app with the Marketing API product added. Access is self-serve at the Limited tier. A user token comes from the Facebook Login OAuth dialogue with the `ads_read` or `ads_management` scope, and a system user token, created in Meta Business Suite, doesn't expire. Managing ad accounts owned by other businesses needs advanced access to those permissions through App Review, and business verification may be required. Full access (higher rate limits and the Business Manager API) is granted from the App Dashboard after 500 successful calls in 15 days with an error rate under 15 per cent.",
        "pricing": "free",
        "pricingNotes": "No charge for API calls was found in the Platform Terms or the Marketing API documentation. Access tiers differ by rate limit, and ad spend is billed to the ad account. An agent can start without a contract. Limited access is automatic when the Marketing API product is added to an app, and a sandbox ad account takes read and write calls with no funding source (checked 2026-10-08).",
        "priceSummary": "Free",
        "where": "hosted",
        "x402": {
          "level": "no",
          "evidence": "No x402, MPP or L402 in the Marketing API documentation, the llms.txt indexes or the Platform Terms (checked 2026-10-08).",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": 1604,
          "npmWeekly": 500852,
          "pypiWeekly": 1089043,
          "asOf": "2026-10-08"
        },
        "docsUrl": "https://developers.facebook.com/docs/marketing-apis/",
        "llmsTxt": "https://developers.facebook.com/documentation/ads-commerce/llms.txt",
        "capabilities": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "tags": [
          "hosted",
          "free",
          "oauth",
          "app-review",
          "sandbox",
          "mcp",
          "cli",
          "llms-txt",
          "python",
          "typescript",
          "php",
          "ruby",
          "java",
          "status-page",
          "bug-bounty"
        ],
        "lastRelease": "2026-09-21",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 67.7,
          "grade": "B",
          "agentReady": false,
          "rank": 187,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 2,
          "methodology": "0.4",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 77,
            "maintenance": 74,
            "payments": 30,
            "reliability": 80,
            "schema": 76,
            "security": 61,
            "transparency": 68
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-08"
          },
          "negative": 0,
          "verdict": "Reporting, campaign, budget, audience and creative endpoints sit behind `ads_read` and `ads_management` scopes, with a `validate_only` option and sandbox ad accounts for checking a change before it spends. New apps are held to a score of 60 per ad account, with a 300-second block at the limit, and the documented requests pass the access token as a parameter.",
          "bestFor": "The direct route to Facebook, Instagram, Messenger, WhatsApp and Threads advertising for reporting, campaign and budget changes, audiences and creatives.",
          "strengths": [
            "`execution_options=validate_only` runs the validation rules on a campaign write without performing it, and sandbox ad accounts accept writes with no funding source",
            "`ads_read` is a read-only scope, and system users hold only the ad accounts, Pages and catalogues assigned to them",
            "llms.txt indexes and a Markdown copy of every guide and reference page, with a section of rules for AI agents",
            "Rate limits are published with numbers per tier, with usage headers that estimate the time until access returns",
            "Breaking changes ship only in numbered versions with at least 90 days' notice, and v26.0 followed on 29 July 2026"
          ],
          "weaknesses": [
            "Default Limited access allows a score of 60 per ad account (read 1, write 3) and blocks for 300 seconds at the limit",
            "The documented request style passes `access_token` as a request parameter, and system user tokens don't expire",
            "No idempotency key was found in the reviewed documentation, so a retried create can make a second campaign",
            "npm's `facebook-nodejs-business-sdk` is still 24.0.1 from 21 November 2025, while GitHub is at v26.0.2 and v24.0 expired on 6 October 2026",
            "The Marketing API changelog and versioning pages still name v25.0 as current, ten weeks after v26.0"
          ],
          "agentNotes": [
            "Put a version in every path, such as /v26.0/act_\u003cAD_ACCOUNT_ID\u003e/campaigns. Unversioned Marketing API calls fail",
            "Create campaigns, ad sets and ads with `status=PAUSED`, and send `execution_options=[\"validate_only\"]` first to test a write without making it",
            "Ask for `ads_read` alone when the task is reporting. `ads_management` can change budgets and activate spend",
            "Read `X-Business-Use-Case-Usage` and `X-Ad-Account-Usage` after each call and wait for `estimated_time_to_regain_access` on errors 17, 613 and 80004",
            "Change an ad set budget at most four times an hour and an account spending limit at most ten times a day"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 0,
          "avgRating": 0,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "B",
              "methodology": "0.4",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 67.7
            }
          ],
          "editorialScores": {
            "ergonomics": 77,
            "maintenance": 74,
            "payments": 30,
            "reliability": 80,
            "schema": 76,
            "security": 61,
            "transparency": 41
          },
          "provenanceScore": 94
        },
        "connect": {
          "install": "pip install facebook_business",
          "http": "curl -G \\\n  -d \"access_token=\u003cACCESS_TOKEN\u003e\" \\\n  \"https://graph.facebook.com/v25.0/me/adaccounts\"",
          "claudeCode": "claude mcp add --transport http --client-id \u003cMETA_APP_ID\u003e meta-ads https://mcp.facebook.com/ads"
        },
        "letme": {
          "capability": "https://letme.dev/ads.reporting",
          "tool": "https://letme.dev/meta-marketing-api"
        },
        "sameCompany": [
          "whatsapp-cloud-api"
        ],
        "area": "communication",
        "provenance": {
          "legalEntity": "Meta Platforms, Inc.",
          "domain": "facebook.com",
          "domainRegistered": "1997-03-29",
          "endpointOnVendorDomain": true,
          "terms": "https://developers.facebook.com/terms",
          "privacy": "https://www.facebook.com/privacy/policy/",
          "statusPage": "https://metastatus.com",
          "changelog": "https://developers.facebook.com/documentation/ads-commerce/marketing-api/marketing-api-changelog",
          "securityTxt": "valid",
          "checked": "2026-10-08",
          "notes": [
            "The Meta Platform Terms (last updated 3 February 2026) name Meta Platforms, Inc. for UK data transfers and Meta Platforms Ireland Limited as controller of EEA data.",
            "The API answers at graph.facebook.com and the Ads MCP server at mcp.facebook.com, both facebook.com subdomains.",
            "www.facebook.com/.well-known/security.txt names a contact, the bug bounty policy at bugbounty.meta.com and a vulnerability disclosure policy, and expires on 7 November 2026. developers.facebook.com has no security.txt of its own.",
            "RDAP for facebook.com gives a registration date of 1997-03-29.",
            "The privacy policy and the data processing terms on facebook.com render only with JavaScript, so their text wasn't read.",
            "The Marketing API changelog page still shows v25.0 as the latest version. The Graph API changelog and the v26.0 changelog page show v26.0 from 29 July 2026."
          ],
          "score": 94
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/meta-marketing-api.json",
        "live": {
          "slug": "meta-marketing-api",
          "probe": {
            "target": "https://graph.facebook.com",
            "method": "get",
            "lastAt": "2026-10-08T18:20:34.672748362Z",
            "lastOk": true,
            "lastStatus": 400,
            "lastMs": 125,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 131,
            "p95ms24h": 189,
            "samples24h": 33,
            "samples30d": 33,
            "days": [
              {
                "date": "2026-10-08",
                "probes": 33,
                "ok": 33
              }
            ]
          },
          "vendorStatus": {
            "page": "https://metastatus.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-08T17:50:51.416434747Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "facebook/facebook-python-business-sdk",
              "version": "26.0.2",
              "released": "2026-09-21",
              "seenAt": "2026-10-08T16:20:32.10844618Z"
            },
            {
              "registry": "npm",
              "name": "facebook-nodejs-business-sdk",
              "version": "24.0.1",
              "seenAt": "2026-10-08T16:20:30.20877898Z"
            },
            {
              "registry": "pypi",
              "name": "facebook-business",
              "version": "26.0.2",
              "released": "2026-09-21",
              "seenAt": "2026-10-08T16:20:30.005647872Z"
            },
            {
              "registry": "pypi",
              "name": "meta-ads",
              "version": "1.2.0",
              "released": "2026-09-29",
              "seenAt": "2026-10-08T16:20:31.070786739Z"
            }
          ],
          "githubStars": 1605,
          "npmWeekly": 500852,
          "pypiWeekly": 1089043,
          "securityTxt": {
            "url": "https://facebook.com/.well-known/security.txt",
            "state": "valid",
            "expires": "2026-11-07T07:38:40-08:00",
            "checkedAt": "2026-10-08T15:38:40.384187776Z"
          },
          "pages": [
            {
              "url": "https://developers.facebook.com/documentation/ads-commerce/marketing-api/marketing-api-changelog",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-08T18:17:35.237810199Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "f3469d786112"
            },
            {
              "url": "https://developers.facebook.com/terms",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-08T18:17:39.648337351Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "b317e3abcc1f"
            }
          ],
          "updatedAt": "2026-10-08T18:20:34.672748362Z"
        }
      },
      {
        "slug": "linkedin-marketing-api",
        "name": "LinkedIn Marketing APIs",
        "vendor": "LinkedIn Corporation",
        "vendorUrl": "https://www.linkedin.com",
        "kind": "http-api",
        "category": "advertising",
        "summary": "LinkedIn's advertising APIs for campaign management, performance reporting, matched audiences, conversions and lead sync. Agents call versioned REST endpoints at api.linkedin.com/rest with a member's OAuth token, after LinkedIn approves the developer application.",
        "url": "https://www.anchorterminal.com/tools/linkedin-marketing-api",
        "markdownUrl": "https://www.anchorterminal.com/tools/linkedin-marketing-api.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/linkedin-marketing-api.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/linkedin-marketing-api.json",
        "license": "Proprietary service under the LinkedIn API terms of use and the Marketing API terms. The beta Python and JavaScript clients carry LinkedIn's API development software licence",
        "transports": [
          "http"
        ],
        "packages": [
          {
            "registry": "pypi",
            "name": "linkedin-api-client"
          },
          {
            "registry": "npm",
            "name": "linkedin-api-client"
          }
        ],
        "auth": "oauth",
        "authNotes": "Access is by application review. A person creates a LinkedIn Page and a developer application, applies for the Advertising API and completes LinkedIn's vetting. Calls then use a member's three-legged OAuth 2.0 token with scopes such as r_ads, r_ads_reporting and rw_ads. Two-legged OAuth is not available for Marketing APIs. Access tokens last 60 days. The member also needs a role on the ad account, and Development tier limits edits to five ad accounts until LinkedIn approves Standard tier.",
        "pricing": "free",
        "pricingNotes": "No fee for API access was found in the docs or terms, and no price page exists. Ad spend is set by campaign budgets and billed to the ad account. An agent can start without a contract on Development tier, where one test ad account needs no payment details and its campaigns are never served or billed (checked 2026-10-08).",
        "priceSummary": "Free",
        "where": "local",
        "x402": {
          "level": "no",
          "evidence": "No x402, MPP or L402 in the Marketing API documentation or the API terms (checked 2026-10-08).",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": null,
          "npmWeekly": 25354,
          "pypiWeekly": 385632,
          "asOf": "2026-10-08"
        },
        "docsUrl": "https://learn.microsoft.com/en-us/linkedin/marketing/",
        "capabilities": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "tags": [
          "hosted",
          "free",
          "oauth",
          "app-review",
          "versioned",
          "test-account",
          "status-page",
          "bug-bounty",
          "closed-source",
          "python",
          "javascript"
        ],
        "lastRelease": "2026-09-16",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 62.4,
          "grade": "B",
          "agentReady": false,
          "rank": 304,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 3,
          "methodology": "0.4",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 63,
            "maintenance": 64,
            "payments": 30,
            "reliability": 66,
            "schema": 66,
            "security": 66,
            "transparency": 84
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-08"
          },
          "negative": 0,
          "verdict": "Monthly API versions are each supported for at least a year, with dated sunsets and a changelog, and a test ad account lets an agent create campaigns that are never served or billed. Access needs LinkedIn's approval and a member's OAuth consent, standard rate limits are not published, and no OpenAPI specification was found.",
          "bestFor": "An agent that reports on and manages LinkedIn campaigns for accounts its operator administers, especially read-only reporting, which has no account limit on Development tier.",
          "strengths": [
            "Monthly versions (latest 202609) each supported for at least one year, with a sunset date per version on the migrations page",
            "A test ad account, created through the API with no payment details, holds campaigns and creatives that are never served or billed",
            "Separate read and write scopes (r_ads, r_ads_reporting, rw_ads), and the VIEWER account role stays read-only even with rw_ads",
            "Structured validation errors with a code, field path and allowed value on adAccounts, adCampaignGroups and adCampaigns",
            "Field projections and cursor pagination (pageSize up to 1,000) on campaign search, and a `fields` parameter on adAnalytics"
          ],
          "weaknesses": [
            "Standard rate limits are not published. An app sees its limit in the Developer Portal only after calling the endpoint",
            "No OpenAPI specification, llms.txt or MCP server was found. The contract is reference pages and a Postman workspace",
            "Access needs a LinkedIn Page, an approved developer application and member consent. Standard tier review can take up to 30 business days",
            "No idempotency keys or Retry-After header were found in the reviewed documentation",
            "The official Python and JavaScript clients are marked beta and were last released in 2023"
          ],
          "agentNotes": [
            "Send `Linkedin-Version: YYYYMM` and `X-Restli-Protocol-Version: 2.0.0` on every call. A missing or sunset version returns an error (426 for a deprecated one)",
            "Create one test ad account with `\"test\": true` and build there first. Its creatives are auto-rejected and never billed, and it returns no reporting data",
            "Create campaigns as DRAFT or PAUSED and check `servingStatuses` before activating. Some validation is postponed until activation",
            "Pass `fields=` on adAnalytics. Responses stop at 15,000 elements and the endpoint throttles at 45 million metric values per 5 minutes",
            "On Development tier, map each ad account to the app in the Developer Portal. Edits are limited to five accounts"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 0,
          "avgRating": 0,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "B",
              "methodology": "0.4",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 62.4
            }
          ],
          "editorialScores": {
            "ergonomics": 63,
            "maintenance": 64,
            "payments": 30,
            "reliability": 66,
            "schema": 66,
            "security": 66,
            "transparency": 74
          },
          "provenanceScore": 94
        },
        "connect": {
          "http": "curl -X GET 'https://api.linkedin.com/rest/adAnalytics?accounts=List(urn%3Ali%3AsponsoredAccount%3A511183580)\u0026dateRange=(start:(day:28,month:7,year:2019))\u0026pivot=(MEMBER_COUNTRY_V2)\u0026q=analytics\u0026timeGranularity=ALL\u0026fields=impressions,pivotValues' \\\n  -H 'Authorization: Bearer {INSERT_TOKEN}' \\\n  -H 'Linkedin-Version: 202609' \\\n  -H 'X-Restli-Protocol-Version: 2.0.0'"
        },
        "letme": {
          "capability": "https://letme.dev/ads.reporting",
          "tool": "https://letme.dev/linkedin-marketing-api"
        },
        "area": "communication",
        "provenance": {
          "legalEntity": "LinkedIn Corporation",
          "domain": "linkedin.com",
          "domainRegistered": "2002-11-02",
          "endpointOnVendorDomain": true,
          "terms": "https://www.linkedin.com/legal/l/api-terms-of-use",
          "privacy": "https://www.linkedin.com/legal/privacy-policy",
          "statusPage": "https://www.linkedin-apistatus.com",
          "changelog": "https://learn.microsoft.com/en-us/linkedin/marketing/integrations/recent-changes",
          "securityTxt": "valid",
          "checked": "2026-10-08",
          "notes": [
            "The API terms of use (last revised 13 December 2022) contract with LinkedIn Corporation, 1000 West Maude Avenue, Sunnyvale, California, or with LinkedIn Ireland Unlimited Company for developers in the Designated Countries.",
            "The Marketing API terms at https://www.linkedin.com/legal/l/marketing-api-terms were last revised on 25 July 2025.",
            "API calls go to https://api.linkedin.com/rest. The documentation is hosted by Microsoft at learn.microsoft.com/en-us/linkedin.",
            "www.linkedin.com/.well-known/security.txt has two Contact lines, a Canonical line and a Policy line pointing to hackerone.com/linkedin, and no Expires field.",
            "RDAP for linkedin.com gives a registration date of 2002-11-02."
          ],
          "score": 94
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/linkedin-marketing-api.json",
        "live": {
          "slug": "linkedin-marketing-api",
          "vendorStatus": {
            "page": "https://www.linkedin-apistatus.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-08T18:22:06.797969043Z"
          },
          "versions": [
            {
              "registry": "npm",
              "name": "linkedin-api-client",
              "version": "0.3.0",
              "seenAt": "2026-10-08T16:18:57.594437926Z"
            },
            {
              "registry": "pypi",
              "name": "linkedin-api-client",
              "version": "0.3.0",
              "released": "2023-06-29",
              "seenAt": "2026-10-08T16:18:55.599903721Z"
            }
          ],
          "npmWeekly": 25354,
          "pypiWeekly": 385632,
          "securityTxt": {
            "url": "https://linkedin.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-08T15:38:54.169049162Z"
          },
          "pages": [
            {
              "url": "https://learn.microsoft.com/en-us/linkedin/marketing/integrations/recent-changes",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-08T18:21:42.006346735Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "69c4f2489866"
            }
          ],
          "updatedAt": "2026-10-08T18:22:06.797969043Z"
        }
      },
      {
        "slug": "microsoft-advertising-api",
        "name": "Microsoft Advertising API",
        "vendor": "Microsoft",
        "vendorUrl": "https://learn.microsoft.com/en-us/advertising/guides/",
        "kind": "http-api",
        "category": "advertising",
        "summary": "Microsoft's API for Microsoft Advertising (formerly Bing Ads) search, shopping and audience campaigns. It covers campaign management, bulk upload and download, reporting, ad insight, billing and account management over REST and SOAP.",
        "url": "https://www.anchorterminal.com/tools/microsoft-advertising-api",
        "markdownUrl": "https://www.anchorterminal.com/tools/microsoft-advertising-api.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/microsoft-advertising-api.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/microsoft-advertising-api.json",
        "repo": "https://github.com/BingAds/BingAds-Python-SDK",
        "license": "Proprietary service. The .NET, Java, Python and PHP SDKs are MIT",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://campaign.api.bingads.microsoft.com/CampaignManagement/v13",
        "packages": [
          {
            "registry": "pypi",
            "name": "msads"
          }
        ],
        "auth": "oauth",
        "authNotes": "OAuth 2.0 authorisation code grant through Microsoft Entra ID with the single scope `https://ads.microsoft.com/msads.manage`, or Google OAuth 2.0 with an `IdentityProvider` header. Every call also needs a developer token, which a Super Admin requests self-serve in the Microsoft Advertising developer settings. A person registers the app and grants consent in a browser, and multi-factor authentication is required. Access follows the user's role (Super Admin, Standard, Advertiser Campaign Manager, Viewer). No partner or sales approval was found in the reviewed documentation.",
        "pricing": "free",
        "pricingNotes": "No fee for API access was found in the reviewed documentation, and no statement that it is free either. Advertising spend is billed to the advertiser's account. The sandbox needs no payment method (sign-up has a Skip payment information step) and takes the shared developer token BBD37VB98, so testing can start without a contract or card (checked 2026-10-08).",
        "priceSummary": "Free",
        "where": "hosted",
        "x402": {
          "level": "no",
          "evidence": "No x402, MPP or L402 in the Microsoft Advertising guides or reference pages (checked 2026-10-08).",
          "endpoints": []
        },
        "toolCount": 7,
        "popularity": {
          "githubStars": 128,
          "npmWeekly": null,
          "pypiWeekly": 18920,
          "asOf": "2026-10-08"
        },
        "docsUrl": "https://learn.microsoft.com/en-us/advertising/guides/",
        "capabilities": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "tags": [
          "hosted",
          "official",
          "oauth",
          "rest",
          "soap",
          "sandbox",
          "mcp",
          "python",
          "java",
          "dotnet",
          "php",
          "status-page"
        ],
        "lastRelease": "2026-09-29",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 60.3,
          "grade": "C",
          "agentReady": false,
          "rank": 360,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 4,
          "methodology": "0.4",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 63,
            "maintenance": 61,
            "payments": 30,
            "reliability": 60,
            "schema": 79,
            "security": 60,
            "transparency": 64
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-08"
          },
          "negative": 0,
          "verdict": "Version 13 covers campaigns, budgets, audiences, ads and reports over REST with JSON, with a sandbox that needs no payment method and four official SDKs. Call-rate limits are unpublished, no public OpenAPI file or idempotency key was found, and one OAuth scope covers every operation. The SOAP interface retires on 31 January 2027.",
          "bestFor": "Agents that manage or report on Microsoft Advertising accounts, including Google Ads imports.",
          "strengths": [
            "Sandbox with its own endpoints, a shared developer token (BBD37VB98) and sign-up that skips payment information. Ads created there are never served",
            "REST with JSON on every operation page beside SOAP, and Learn returns any page as Markdown for `Accept: text/markdown`",
            "Monthly dated release notes, and SDK 13.0.30 for .NET, Java, Python and PHP published on 29 September 2026",
            "Viewer role is read-only, and a developer token adds no access beyond the signed-in user's role",
            "Official MCP server in open beta with seven read-only tools, filters, sorting and page tokens"
          ],
          "weaknesses": [
            "Call-rate limits carry no numbers. The docs describe a 60-second sliding window, and call the Bulk and Reporting limits internal and subject to change",
            "No public OpenAPI file found. The contract is six WSDLs for SOAP, which retires on 31 January 2027, and a generated client inside the SDKs",
            "One OAuth scope, `msads.manage`, covers reads and writes alike",
            "21 status posts tagged Reporting API between 20 July and 7 October 2026, all for delayed reporting data, one lasting six days",
            "No idempotency key or validate-only mode found, so a retried add can create a duplicate"
          ],
          "agentNotes": [
            "Build and test against the sandbox hosts (`*.api.sandbox.bingads.microsoft.com`) with developer token BBD37VB98. Sandbox and production credentials are separate",
            "Send `Authorization: Bearer \u003ctoken\u003e`, `DeveloperToken`, `CustomerId` and `CustomerAccountId` on REST calls. Use the account ID, never the eight-character account number",
            "Create campaigns with `Status` set to `Paused`, then read them back before activating. No validate-only mode was found",
            "On error 117 (CallRateExceeded) wait 60 seconds. On Bulk error 4204 wait up to 15 minutes",
            "Read `PartialErrors` on every add, update and delete. A call can succeed for some items and fail for others"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 0,
          "avgRating": 0,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "C",
              "methodology": "0.4",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 60.3
            }
          ],
          "editorialScores": {
            "ergonomics": 63,
            "maintenance": 61,
            "payments": 30,
            "reliability": 60,
            "schema": 79,
            "security": 60,
            "transparency": 38
          },
          "provenanceScore": 90
        },
        "connect": {
          "install": "pip install msads",
          "http": "curl -X POST https://clientcenter.api.sandbox.bingads.microsoft.com/CustomerManagement/v13/User/Query \\\n  -H \"Authorization: Bearer $MSADS_ACCESS_TOKEN\" \\\n  -H \"DeveloperToken: BBD37VB98\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"UserId\": null}'",
          "config": {
            "servers": {
              "microsoft-ads-mcp": {
                "oauth": {
                  "clientId": "\u003cclient-id\u003e"
                },
                "type": "http",
                "url": "https://partner.api.bingads.microsoft.com/ext/mcp/vnext?toolSetNames=OpenBeta"
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/ads.reporting",
          "tool": "https://letme.dev/microsoft-advertising-api"
        },
        "sameCompany": [
          "azure-foundry-fine-tuning",
          "azure-ai-content-safety",
          "azure-speech-to-text",
          "azure-text-to-speech",
          "microsoft-agent-framework",
          "microsoft-execution-containers",
          "microsoft-entra-agent-id",
          "azure-key-vault",
          "azure-devops-mcp",
          "microsoft-learn-mcp",
          "playwright-mcp",
          "azure-mcp",
          "azure-translator",
          "microsoft-graph-calendar",
          "dynamics-365-sales",
          "microsoft-excel-graph",
          "outlook-mail-graph"
        ],
        "area": "communication",
        "provenance": {
          "legalEntity": "Microsoft Corporation",
          "domain": "microsoft.com",
          "domainRegistered": "1991-05-02",
          "domainNote": "The endpoints are on api.bingads.microsoft.com and the status page on status.ads.microsoft.com. microsoft.com publishes a security.txt, but it passed its Expires date on 2026-09-23.",
          "endpointOnVendorDomain": true,
          "terms": "https://about.ads.microsoft.com/en/resources/policies/microsoft-advertising-agreement",
          "privacy": "https://www.microsoft.com/en-us/privacy/privacystatement",
          "statusPage": "https://status.ads.microsoft.com",
          "changelog": "https://learn.microsoft.com/en-us/advertising/guides/release-notes?view=bingads-13",
          "securityTxt": "expired",
          "checked": "2026-10-08",
          "notes": [
            "The Microsoft Advertising Agreement link redirects to help.ads.microsoft.com, which renders only with JavaScript, so we couldn't read the terms.",
            "www.microsoft.com/.well-known/security.txt carries Expires: 2026-09-23T16:00:00.000Z and points to the MSRC researcher portal, bounty policy and coordinated disclosure policy.",
            "ads.microsoft.com/.well-known/security.txt redirects to a page-not-found error.",
            "RDAP for microsoft.com gives a registration date of 1991-05-02.",
            "The status page is a WordPress blog whose posts are readable through its RSS feed and JSON API."
          ],
          "score": 90
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/microsoft-advertising-api.json",
        "live": {
          "slug": "microsoft-advertising-api",
          "probe": {
            "target": "https://campaign.api.bingads.microsoft.com/CampaignManagement/v13",
            "method": "get",
            "lastAt": "2026-10-08T18:20:34.798467368Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 439,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 442,
            "p95ms24h": 542,
            "samples24h": 33,
            "samples30d": 33,
            "days": [
              {
                "date": "2026-10-08",
                "probes": 33,
                "ok": 33
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.ads.microsoft.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-08T17:50:51.532385114Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "BingAds/BingAds-Python-SDK",
              "version": "v13.0.30",
              "released": "2026-09-29",
              "seenAt": "2026-10-08T16:20:36.673165866Z"
            },
            {
              "registry": "pypi",
              "name": "msads",
              "version": "13.0.30",
              "released": "2026-09-30",
              "seenAt": "2026-10-08T16:20:34.683272294Z"
            }
          ],
          "githubStars": 128,
          "pypiWeekly": 18920,
          "securityTxt": {
            "url": "https://microsoft.com/.well-known/security.txt",
            "state": "expired",
            "expires": "2026-09-23T16:00:00.000Z",
            "checkedAt": "2026-10-08T15:39:08.216544687Z"
          },
          "pages": [
            {
              "url": "https://learn.microsoft.com/en-us/advertising/guides/release-notes?view=bingads-13",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-08T18:21:19.962608646Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "a3c1ed0e4724"
            },
            {
              "url": "https://about.ads.microsoft.com/en/resources/policies/microsoft-advertising-agreement",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-08T18:14:55.315820849Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "7abf9893ad2d"
            }
          ],
          "updatedAt": "2026-10-08T18:21:19.962608646Z"
        }
      },
      {
        "slug": "amazon-ads-api",
        "name": "Amazon Ads API",
        "vendor": "Amazon",
        "vendorUrl": "https://advertising.amazon.com/about-api",
        "kind": "http-api",
        "category": "advertising",
        "summary": "Amazon's REST API for its advertising products, covering campaigns, budgets, targets, audiences, creative assets and performance reports for sponsored ads and Amazon DSP. An Amazon Ads MCP Server in open beta exposes the same operations as tools.",
        "url": "https://www.anchorterminal.com/tools/amazon-ads-api",
        "markdownUrl": "https://www.anchorterminal.com/tools/amazon-ads-api.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/amazon-ads-api.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/amazon-ads-api.json",
        "repo": "https://github.com/amzn/ads-advanced-tools-docs",
        "license": "Proprietary service under the Amazon Advertising API Licence Agreement. The Postman collections and samples in amzn/ads-advanced-tools-docs are MIT-0",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://advertising-api.amazon.com",
        "packages": [],
        "auth": "oauth",
        "authNotes": "Access needs approval. A developer creates a Login with Amazon (LwA) application, then applies as a direct advertiser or through the Amazon Ads Partner Network. Review may take up to one business day. An advertiser then grants consent through the LwA OAuth 2.0 authorisation code flow. Access tokens last 60 minutes. Refresh tokens issued from 30 July 2026 expire 365 days after consent. Each call carries the client ID, the Bearer token and usually a profile ID. The MCP server accepts the same tokens or an OAuth 2.1 browser flow.",
        "pricing": "free",
        "pricingNotes": "No API fee. Amazon states that the only costs are standard selling account fees and campaign spend. Test accounts serve no ads and have no active billing, so an approved developer can test without a contract or ad spend (https://advertising.amazon.com/about-api, checked 2026-10-08).",
        "priceSummary": "Free",
        "where": "hosted",
        "x402": {
          "level": "no",
          "evidence": "No x402, MPP or L402 in the developer documentation, the OpenAPI specifications or the API product page (checked 2026-10-08).",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": null,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-10-08"
        },
        "docsUrl": "https://advertising.amazon.com/API/docs/en-us/",
        "openapi": "https://d1y2lf8k3vrkfu.cloudfront.net/openapi/en-us/dest/AmazonAdsAPIALLMerged_prod_3p.json",
        "capabilities": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "tags": [
          "official",
          "hosted",
          "oauth",
          "approval-required",
          "free",
          "sandbox",
          "openapi",
          "mcp",
          "status-page",
          "bug-bounty"
        ],
        "lastRelease": "2026-10-05",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 59,
          "grade": "C",
          "agentReady": false,
          "rank": 388,
          "ranked": true,
          "rankOf": 629,
          "categoryRank": 5,
          "methodology": "0.4",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 62,
            "maintenance": 65,
            "payments": 40,
            "reliability": 45,
            "schema": 76,
            "security": 60,
            "transparency": 73
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-08"
          },
          "negative": 0,
          "verdict": "Public OpenAPI specifications, test accounts that serve no ads and a six-month shutoff notice policy support agent use. Access needs an approved application and an advertiser's OAuth consent, rate limits are dynamic with no published numbers, and the status feed shows three reporting disruptions since July 2026. The MCP server is in open beta.",
          "bestFor": "Agents managing sponsored ads and Amazon DSP for an advertiser or agency that already has API approval, and teams that want a vendor-run MCP server.",
          "strengths": [
            "OpenAPI 3.0.1 specifications download without a login. The merged Ads API v1 file has 104 operations and 1,729 schemas",
            "Test accounts created through the API serve no ads and have no active billing, so campaign writes can be rehearsed",
            "Versioning policy promises at least six months' notice before a resource version is shut off",
            "MCP Lite endpoint at /mcp/lite reduces the tool list to three (search, describe, invoke)",
            "41 dated release notes between 10 July and 5 October 2026, with an RSS feed"
          ],
          "weaknesses": [
            "Access needs an approved application (review may take up to one business day) and an advertiser's consent in a browser",
            "Rate limits are dynamic and based on system load, with no published numbers",
            "Status feed lists reporting interruptions on 16 July, 13 to 15 August and 1 to 3 September 2026",
            "No official SDK. The docs describe generating a client from the OpenAPI files",
            "One OAuth scope, advertising::campaign_management, covers most reads and writes",
            "No llms.txt, and the documentation site returns a JavaScript shell to a plain fetch"
          ],
          "agentNotes": [
            "Send Amazon-Advertising-API-ClientId and a Bearer access token on every call, and Amazon-Advertising-API-Scope with a profile ID from GET /v2/profiles on most",
            "Call the host for the advertiser's region. advertising-api.amazon.com is North America, advertising-api-eu Europe and advertising-api-fe Far East",
            "Refresh the access token every 60 minutes. Refresh tokens issued from 30 July 2026 expire 365 days after consent",
            "On 429, wait the Retry-After seconds and back off exponentially. Request an export instead of listing every entity",
            "Rehearse writes in a test account, or create campaigns in the PAUSED state, before anything can spend",
            "For MCP, prefer https://advertising-ai.amazon.com/mcp/lite and disable delete tools in the client configuration"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 0,
          "avgRating": 0,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "C",
              "methodology": "0.4",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 59
            }
          ],
          "editorialScores": {
            "ergonomics": 62,
            "maintenance": 65,
            "payments": 40,
            "reliability": 45,
            "schema": 76,
            "security": 60,
            "transparency": 51
          },
          "provenanceScore": 94
        },
        "connect": {
          "http": "curl https://advertising-api.amazon.com/v2/profiles -H \"Amazon-Advertising-API-ClientId: $CLIENT_ID\" -H \"Authorization: Bearer $ACCESS_TOKEN\""
        },
        "letme": {
          "capability": "https://letme.dev/ads.reporting",
          "tool": "https://letme.dev/amazon-ads-api"
        },
        "sameCompany": [
          "amazon-bedrock-guardrails",
          "amazon-transcribe",
          "amazon-polly",
          "aws-secrets-manager",
          "aws-mcp-servers",
          "amazon-ses",
          "amazon-translate"
        ],
        "area": "communication",
        "unitPrices": [
          {
            "item": "API access",
            "unit": "call",
            "usd": 0,
            "note": "No API fee. Campaign spend and selling account fees are billed separately"
          }
        ],
        "provenance": {
          "legalEntity": "Amazon.com Services LLC",
          "domain": "amazon.com",
          "domainRegistered": "1994-11-01",
          "endpointOnVendorDomain": true,
          "terms": "https://advertising.amazon.com/API/docs/license-agreement",
          "privacy": "https://www.amazon.com/gp/help/customer/display.html?nodeId=468496",
          "statusPage": "https://status.ads.amazon.com",
          "changelog": "https://advertising.amazon.com/API/docs/en-us/release-notes/index",
          "securityTxt": "valid",
          "checked": "2026-10-08",
          "notes": [
            "The Amazon Advertising API Licence Agreement, last updated 1 June 2024, names Amazon.com Services LLC as the contracting party where the elected country is the United States. Other countries have other Amazon contracting parties.",
            "The API answers at advertising-api.amazon.com, advertising-api-eu.amazon.com and advertising-api-fe.amazon.com, and the MCP server at advertising-ai.amazon.com.",
            "www.amazon.com/.well-known/security.txt names the Amazon Vulnerability Research Program on HackerOne and carries no Expires field. advertising.amazon.com/.well-known/security.txt returns 404.",
            "RDAP for amazon.com gives a registration date of 1994-11-01.",
            "The documentation footer links the Amazon.com Privacy Notice, last updated 30 June 2026."
          ],
          "score": 94
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/amazon-ads-api.json",
        "live": {
          "slug": "amazon-ads-api",
          "probe": {
            "target": "https://advertising-api.amazon.com",
            "method": "get",
            "lastAt": "2026-10-08T18:20:23.947030107Z",
            "lastOk": true,
            "lastStatus": 400,
            "lastMs": 118,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 123,
            "p95ms24h": 229,
            "samples24h": 33,
            "samples30d": 33,
            "days": [
              {
                "date": "2026-10-08",
                "probes": 33,
                "ok": 33
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.ads.amazon.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-08T17:50:20.865650557Z"
          },
          "githubStars": 180,
          "securityTxt": {
            "url": "https://amazon.com/.well-known/security.txt",
            "state": "valid",
            "checkedAt": "2026-10-08T15:38:45.56973403Z"
          },
          "pages": [
            {
              "url": "https://advertising.amazon.com/API/docs/en-us/release-notes/index",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-08T18:14:58.33428128Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "e3b0c44298fc"
            },
            {
              "url": "https://advertising.amazon.com/API/docs/license-agreement",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-08T18:15:00.59395112Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "e3b0c44298fc"
            }
          ],
          "updatedAt": "2026-10-08T18:20:23.947030107Z"
        }
      }
    ]
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/categories/advertising",
    "json": "https://www.anchorterminal.com/categories/advertising.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/categories/advertising.md",
    "slim": "https://www.anchorterminal.com/categories/advertising.min.md"
  },
  "markdown": "The advertising platforms' own APIs for campaigns, budgets, audiences and performance reports. Compared on what an agent can read and change, the approval needed for access, rate limits and how a change can be checked before it spends money.\n\n- Tools ranked: 5 · agent-ready (BB or better): 1 · accept x402: 0 · hosted endpoints: 4 · desk reviews by the panel: 0\n- JSON: https://www.anchorterminal.com/api/v1/tools.json (list) · https://www.anchorterminal.com/api/v1/rankings.json (ranked) · https://www.anchorterminal.com/api/v1/x402.json (payable) · https://www.anchorterminal.com/api/v1/capabilities.json (by capability)\n- Grades run AA, A, BB, B, C, D, E, F · methodology: https://www.anchorterminal.com/benchmark/\n\n- Capabilities in this category: ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives\n- https://letme.dev/ads.reporting picks the top-graded tool in this list and says how to call it direct; calling through letme comes later (https://www.anchorterminal.com/letme/index.md)\n\n## Ranking\n\n| # | Tool | Vendor | Kind | Category | Grade | Score | Confidence | x402 | Auth | Where | Reviews | Page |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| 31 | Google Ads API | Google | HTTP API | Advertising | BB | 76.4 | medium | no | OAuth | hosted + local | none | https://www.anchorterminal.com/tools/google-ads-api.md |\n| 187 | Meta Marketing API | Meta Platforms, Inc. | HTTP API | Advertising | B | 67.7 | medium | no | OAuth | hosted | none | https://www.anchorterminal.com/tools/meta-marketing-api.md |\n| 304 | LinkedIn Marketing APIs | LinkedIn Corporation | HTTP API | Advertising | B | 62.4 | medium | no | OAuth | local | none | https://www.anchorterminal.com/tools/linkedin-marketing-api.md |\n| 360 | Microsoft Advertising API | Microsoft | HTTP API | Advertising | C | 60.3 | medium | no | OAuth | hosted | none | https://www.anchorterminal.com/tools/microsoft-advertising-api.md |\n| 388 | Amazon Ads API | Amazon | HTTP API | Advertising | C | 59 | medium | no | OAuth | hosted | none | https://www.anchorterminal.com/tools/amazon-ads-api.md |\n\nScores are from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/), with Performance and Task success pending. p95 latency and context cost come from our probes, which haven't run yet.\n\n## Summaries\n\n### 31. Google Ads API, BB (76.4)\n\nGoogle'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. 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- Page: https://www.anchorterminal.com/tools/google-ads-api · Markdown: https://www.anchorterminal.com/tools/google-ads-api.md · JSON: https://www.anchorterminal.com/api/v1/tools/google-ads-api.json\n- Capabilities: ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives · endpoint: `https://googleads.googleapis.com`\n\n### 187. Meta Marketing API, B (67.7)\n\nMeta's Marketing API creates and manages campaigns, ad sets, ads, creatives and audiences across Facebook, Instagram, Messenger and WhatsApp, and reports performance through Ads Insights. It is a versioned Graph API with OAuth access tokens. Reporting, campaign, budget, audience and creative endpoints sit behind `ads_read` and `ads_management` scopes, with a `validate_only` option and sandbox ad accounts for checking a change before it spends. New apps are held to a score of 60 per ad account, with a 300-second block at the limit, and the documented requests pass the access token as a parameter.\n\n- Page: https://www.anchorterminal.com/tools/meta-marketing-api · Markdown: https://www.anchorterminal.com/tools/meta-marketing-api.md · JSON: https://www.anchorterminal.com/api/v1/tools/meta-marketing-api.json\n- Capabilities: ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives · endpoint: `https://graph.facebook.com`\n\n### 304. LinkedIn Marketing APIs, B (62.4)\n\nLinkedIn's advertising APIs for campaign management, performance reporting, matched audiences, conversions and lead sync. Agents call versioned REST endpoints at api.linkedin.com/rest with a member's OAuth token, after LinkedIn approves the developer application. Monthly API versions are each supported for at least a year, with dated sunsets and a changelog, and a test ad account lets an agent create campaigns that are never served or billed. Access needs LinkedIn's approval and a member's OAuth consent, standard rate limits are not published, and no OpenAPI specification was found.\n\n- Page: https://www.anchorterminal.com/tools/linkedin-marketing-api · Markdown: https://www.anchorterminal.com/tools/linkedin-marketing-api.md · JSON: https://www.anchorterminal.com/api/v1/tools/linkedin-marketing-api.json\n- Capabilities: ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives\n\n### 360. Microsoft Advertising API, C (60.3)\n\nMicrosoft's API for Microsoft Advertising (formerly Bing Ads) search, shopping and audience campaigns. It covers campaign management, bulk upload and download, reporting, ad insight, billing and account management over REST and SOAP. Version 13 covers campaigns, budgets, audiences, ads and reports over REST with JSON, with a sandbox that needs no payment method and four official SDKs. Call-rate limits are unpublished, no public OpenAPI file or idempotency key was found, and one OAuth scope covers every operation. The SOAP interface retires on 31 January 2027.\n\n- Page: https://www.anchorterminal.com/tools/microsoft-advertising-api · Markdown: https://www.anchorterminal.com/tools/microsoft-advertising-api.md · JSON: https://www.anchorterminal.com/api/v1/tools/microsoft-advertising-api.json\n- Capabilities: ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives · endpoint: `https://campaign.api.bingads.microsoft.com/CampaignManagement/v13`\n\n### 388. Amazon Ads API, C (59)\n\nAmazon's REST API for its advertising products, covering campaigns, budgets, targets, audiences, creative assets and performance reports for sponsored ads and Amazon DSP. An Amazon Ads MCP Server in open beta exposes the same operations as tools. Public OpenAPI specifications, test accounts that serve no ads and a six-month shutoff notice policy support agent use. Access needs an approved application and an advertiser's OAuth consent, rate limits are dynamic with no published numbers, and the status feed shows three reporting disruptions since July 2026. The MCP server is in open beta.\n\n- Page: https://www.anchorterminal.com/tools/amazon-ads-api · Markdown: https://www.anchorterminal.com/tools/amazon-ads-api.md · JSON: https://www.anchorterminal.com/api/v1/tools/amazon-ads-api.json\n- Capabilities: ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives · endpoint: `https://advertising-api.amazon.com`\n\n## How we test this category\n\nOne test account on each platform. The same tasks run through its API (read last month's performance by campaign, create a paused campaign with a budget, change a bid, build an audience). We check the access steps, validation before a change is live and reporting delay. In this run listings are graded from public evidence against the published checklist. This test hasn't run yet, so Task success is pending and the grades here come from the categories assessed from public evidence.\n\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": ""
      }
    ],
    "description": "5 advertising \u0026 campaign operations ranked by the Anchor benchmark. Leader Google Ads API (BB). The advertising platforms' own APIs for campaigns, budgets, audiences and performance reports. Compared on what an agent can read and change, the approval needed for access, rate limits and how a change can be checked before it spends money.",
    "facts": [
      "Google Ads API BB",
      "Meta Marketing API B",
      "LinkedIn Marketing APIs B"
    ],
    "h1": "Advertising platform APIs for AI agents",
    "image": "https://www.anchorterminal.com/assets/og/categories-advertising.png",
    "path": "/categories/advertising",
    "published": "",
    "section": "tools",
    "title": "Advertising platform APIs for AI agents, ranked | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/categories/advertising"
  },
  "tokens": {
    "markdown": 2100,
    "slim": 380
  },
  "version": 1
}
