{
  "data": {
    "a": {
      "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": 522,
        "ranked": true,
        "rankOf": 950,
        "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-document-intelligence",
        "azure-devops-mcp",
        "microsoft-learn-mcp",
        "playwright-mcp",
        "azure-mcp",
        "azure-maps",
        "azure-translator",
        "microsoft-graph-calendar",
        "azure-blob-storage",
        "onedrive-sharepoint",
        "microsoft-teams",
        "dynamics-365-sales",
        "power-automate",
        "foundry-local",
        "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-10T02:55:02.372276706Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 436,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 440,
          "p95ms24h": 514,
          "samples24h": 249,
          "samples30d": 373,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 30,
              "ok": 30
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.ads.microsoft.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-10T00:50:48.289658364Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "BingAds/BingAds-Python-SDK",
            "version": "v13.0.30",
            "released": "2026-09-29",
            "seenAt": "2026-10-09T17:05:21.248703514Z"
          },
          {
            "registry": "pypi",
            "name": "msads",
            "version": "13.0.30",
            "released": "2026-09-30",
            "seenAt": "2026-10-09T17:05:21.060149742Z"
          }
        ],
        "githubStars": 128,
        "pypiWeekly": 19862,
        "securityTxt": {
          "url": "https://microsoft.com/.well-known/security.txt",
          "state": "expired",
          "expires": "2026-09-23T16:00:00.000Z",
          "checkedAt": "2026-10-09T15:40:16.790821018Z"
        },
        "pages": [
          {
            "url": "https://learn.microsoft.com/en-us/advertising/guides/release-notes?view=bingads-13",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-09T18:41:01.613259047Z",
            "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-09T18:32:09.873722633Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7abf9893ad2d"
          }
        ],
        "updatedAt": "2026-10-10T02:55:02.372276706Z"
      }
    },
    "answer": "Microsoft Advertising API scores 60.3 (C) on agent readiness against X Ads API's 57.3 (C), and leads in 5 of 7 scored categories. X Ads API leads on reliability.",
    "b": {
      "slug": "x-ads",
      "name": "X Ads API",
      "vendor": "X Corp.",
      "vendorUrl": "https://docs.x.com/x-ads-api/introduction",
      "kind": "http-api",
      "category": "advertising",
      "summary": "X's Ads API creates and manages campaigns, line items, targeting, creatives and audiences on X and returns performance analytics. Agents call versioned REST endpoints at ads-api.x.com with OAuth 1.0a, or use the X Ads MCP server with OAuth 2.0.",
      "url": "https://www.anchorterminal.com/tools/x-ads",
      "markdownUrl": "https://www.anchorterminal.com/tools/x-ads.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/x-ads.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/x-ads.json",
      "license": "Proprietary service under the X Developer Agreement and its incorporated Developer Policy",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://ads-api.x.com/mcp",
      "packages": [],
      "auth": "oauth",
      "authNotes": "Access needs approval. A person creates an app in the X Developer Console and requests Ads API access with the Ads API Access Form, which the docs say is reviewed within three business days, at the Conversion Only or Standard Access tier. The MCP page instead says selecting Ads Project under Project Access enables Ads API access for the app. REST calls are signed with OAuth 1.0a using the app key and a user access token from the three-legged or PIN flow. The docs say these tokens do not expire and the user can revoke them. The X Ads MCP server uses OAuth 2.0 with PKCE and the scopes `ads.read`, `ads.write`, `media.write` and `offline.access`. Calls act with the user's ad account role.",
      "pricing": "free",
      "pricingNotes": "No fee for Ads API access was found in the pages read, and the X API pricing page does not mention the Ads API. Ad spend is billed to the ad account's funding instrument, and advertising prices were not read. The sandbox host creates test accounts and funding instruments and never serves ads, so an approved app can start without spend. Whether a developer account needs a payment card was not established (checked 2026-10-09).",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Ads API documentation, the X API pricing page or the Developer Agreement (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.x.com/x-ads-api/introduction",
      "llmsTxt": "https://docs.x.com/x-ads-api/llms.txt",
      "capabilities": [
        "ads.reporting",
        "ads.campaigns",
        "ads.budgets",
        "ads.audiences",
        "ads.creatives"
      ],
      "tags": [
        "hosted",
        "free",
        "oauth",
        "mcp",
        "llms-txt",
        "sandbox",
        "approval-required",
        "closed-source"
      ],
      "lastRelease": "2026-09-17",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57.3,
        "grade": "C",
        "agentReady": false,
        "rank": 616,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 62,
          "maintenance": 63,
          "payments": 20,
          "reliability": 75,
          "schema": 64,
          "security": 48,
          "transparency": 62
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "Rate limits are published per endpoint type, a sandbox host never serves ads, and the X Ads MCP server has separate read and write scopes and creates campaigns paused. The REST API needs OAuth 1.0a signing and an approved app, no OpenAPI file covers it, and the official Python and Ruby SDKs were last released in May 2022.",
        "bestFor": "An agent that manages or reports on X campaigns for an advertiser with an approved developer app, especially through the MCP server, where scopes separate reads from writes and writes start paused.",
        "strengths": [
          "Rate limits are published by endpoint type, such as 450 writes a minute and 250 synchronous analytics requests per 15 minutes, with remaining quota in `x-rate-limit-*` headers",
          "The sandbox host `ads-api-sandbox.x.com` creates test ad accounts and funding instruments, and campaigns made there are not served",
          "The X Ads MCP server at `https://ads-api.x.com/mcp` lists 74 tools, with `ads.read`, `ads.write` and `media.write` as separate OAuth 2.0 scopes",
          "The MCP docs say campaigns and line items are always created paused, and spending starts only after `activate_campaign` or `activate_line_item`",
          "Every docs page has a Markdown twin, and https://docs.x.com/x-ads-api/llms.txt indexes the Ads API pages"
        ],
        "weaknesses": [
          "No OpenAPI file covers the Ads API. The published file (version 2.170, 178 paths) describes api.x.com only",
          "REST calls need an OAuth 1.0a signature on each request, and the docs say user access tokens do not expire",
          "The official Python and Ruby SDKs were last released on 27 May 2022 at v11.0.0, while the current API version is 12",
          "No idempotency key, audit log endpoint or SLA was found in the reviewed documentation",
          "The Developer Agreement treats statistics on the X API's performance and responsiveness as Confidential Information for internal, non-commercial use, which matters before any probe is run",
          "The `video_total_views` metric was redefined in place on 13 August 2026 with no version change"
        ],
        "agentNotes": [
          "Build against `https://ads-api-sandbox.x.com/12/` first. Create a test account with `POST accounts` and a funding instrument there before touching a live account",
          "On HTTP 429 wait until the time in `x-rate-limit-reset`. On 503 wait for `retry-after`. The docs say apps that ignore these can be throttled or lose access without notice",
          "Read the account-level limit from `x-account-rate-limit-*` when present and use `x-rate-limit-*` only when it is absent",
          "For a read-only MCP session request `ads.read offline.access` only. Without `offline.access` the token expires in about two hours with no refresh",
          "Page with `count` (1 to 1,000, default 200) and `cursor` until `next_cursor` is null. Analytics endpoints page by time range instead, and `with_total_count` cannot be combined with `cursor`"
        ],
        "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": 57.3
          }
        ],
        "editorialScores": {
          "ergonomics": 62,
          "maintenance": 63,
          "payments": 20,
          "reliability": 75,
          "schema": 64,
          "security": 48,
          "transparency": 40
        },
        "provenanceScore": 84
      },
      "connect": {
        "http": "twurl -H ads-api.x.com \"/11/accounts\"",
        "claudeCode": "claude mcp add x-ads https://ads-api.x.com/mcp \\\n  --transport http \\\n  --client-id YOUR_OAUTH2_CLIENT_ID \\\n  --callback-port 8080"
      },
      "letme": {
        "capability": "https://letme.dev/ads.reporting",
        "tool": "https://letme.dev/x-ads"
      },
      "sameCompany": [
        "x-mcp"
      ],
      "area": "communication",
      "provenance": {
        "legalEntity": "X Corp.",
        "domain": "x.com",
        "domainRegistered": "1993-04-02",
        "endpointOnVendorDomain": true,
        "terms": "https://docs.x.com/developer-terms/agreement",
        "privacy": "https://x.com/privacy",
        "statusPage": "https://developer.x.com/status",
        "changelog": "https://docs.x.com/changelog",
        "securityTxt": "unknown",
        "checked": "2026-10-09",
        "notes": [
          "The Developer Agreement (last updated 27 April 2026) governs use of the X API and incorporates the Developer Policy and the API Restricted Use Rules. The contracting entity is X Corp. (Bastrop, Texas), or X Internet Unlimited Company (Dublin) for a developer in the EU, EFTA or the United Kingdom.",
          "The privacy link is the one the Developer Policy cites. x.com's robots.txt disallows every path for unnamed agents, so the policy was not read.",
          "No advertiser agreement or data processing agreement was found in the pages read. business.x.com was not read.",
          "API calls go to https://ads-api.x.com and https://ads-api-sandbox.x.com, and OAuth 2.0 tokens come from api.x.com. The documentation is at docs.x.com.",
          "x.com/.well-known/security.txt is closed to us by robots.txt. developer.x.com and docs.x.com return 404 for the file.",
          "The status page at developer.x.com/status is script-drawn and its components were not read. The incident history is at https://docs.x.com/incidents.",
          "RDAP gives a registration date of 1993-04-02 for x.com."
        ],
        "score": 84
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/x-ads.json",
      "live": {
        "slug": "x-ads",
        "probe": {
          "target": "https://ads-api.x.com/mcp",
          "method": "get",
          "lastAt": "2026-10-10T02:55:16.388656573Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 122,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 136,
          "p95ms24h": 287,
          "samples24h": 115,
          "samples30d": 115,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 30,
              "ok": 30
            }
          ]
        },
        "vendorStatus": {
          "page": "https://developer.x.com/status",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-10T00:51:26.152185931Z"
        },
        "pages": [
          {
            "url": "https://docs.x.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:38:47.238452338Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d1064f68558e"
          },
          {
            "url": "https://x.com/privacy",
            "kind": "privacy",
            "status": 0,
            "checkedAt": "2026-10-09T18:56:08.988834251Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "blockedByRobots": true
          },
          {
            "url": "https://docs.x.com/developer-terms/agreement",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:38:49.524865418Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "69ecb268f31a"
          }
        ],
        "updatedAt": "2026-10-10T02:55:16.388656573Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Microsoft",
        "b": "X Corp.",
        "name": "Vendor"
      },
      {
        "a": "https://campaign.api.bingads.microsoft.com/CampaignManagement/v13",
        "b": "https://ads-api.x.com/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "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. The .NET, Java, Python and PHP SDKs are MIT",
        "b": "Proprietary service under the X Developer Agreement and its incorporated Developer Policy",
        "name": "Licence"
      },
      {
        "a": "7",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-29",
        "b": "2026-09-17",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-04-27",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-01",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "128 stars, 19k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Microsoft Advertising API scores 60.3 (C) on agent readiness against X Ads API's 57.3 (C), and leads in 5 of 7 scored categories. X Ads API leads on reliability.",
        "question": "Which is better for AI agents, Microsoft Advertising API or X Ads API?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do Microsoft Advertising API and X Ads API need an API key?"
      },
      {
        "answer": "Yes. Microsoft Advertising API has a hosted endpoint at https://campaign.api.bingads.microsoft.com/CampaignManagement/v13 and X Ads API at https://ads-api.x.com/mcp.",
        "question": "Can an agent call Microsoft Advertising API and X Ads API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 79 against 64",
          "Security \u0026 auth, 60 against 48",
          "Payments \u0026 pricing, 30 against 20"
        ],
        "also": null,
        "goodFor": "Agents that manage or report on Microsoft Advertising accounts, including Google Ads imports.",
        "slug": "microsoft-advertising-api",
        "watchFor": "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"
      },
      {
        "aheadOn": [
          "Reliability, 75 against 60"
        ],
        "also": null,
        "goodFor": "An agent that manages or reports on X campaigns for an advertiser with an approved developer app, especially through the MCP server, where scopes separate reads from writes and writes start paused.",
        "slug": "x-ads",
        "watchFor": "No OpenAPI file covers the Ads API. The published file (version 2.170, 178 paths) describes api.x.com only"
      }
    ],
    "job": {
      "capability": "ads.reporting",
      "name": "Ad reporting"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-microsoft-advertising-api.json",
        "title": "Amazon Ads API vs Microsoft Advertising API",
        "url": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-microsoft-advertising-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-x-ads.json",
        "title": "Amazon Ads API vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-x-ads"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api.json",
        "title": "Apple Ads Platform API vs Microsoft Advertising API",
        "url": "https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apple-ads-vs-x-ads.json",
        "title": "Apple Ads Platform API vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/apple-ads-vs-x-ads"
      },
      {
        "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/google-ads-api-vs-x-ads.json",
        "title": "Google Ads API vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/google-ads-api-vs-x-ads"
      },
      {
        "json": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-microsoft-advertising-api.json",
        "title": "LinkedIn Marketing APIs vs Microsoft Advertising API",
        "url": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-microsoft-advertising-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-x-ads.json",
        "title": "LinkedIn Marketing APIs vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-x-ads"
      },
      {
        "json": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-microsoft-advertising-api.json",
        "title": "Meta Marketing API vs Microsoft Advertising API",
        "url": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-microsoft-advertising-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-x-ads.json",
        "title": "Meta Marketing API vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-x-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"
      },
      {
        "json": "https://www.anchorterminal.com/compare/snapchat-ads-vs-x-ads.json",
        "title": "Snapchat Ads API vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/snapchat-ads-vs-x-ads"
      }
    ],
    "scores": [
      {
        "by": 15,
        "edge": "x-ads",
        "key": "reliability",
        "microsoft-advertising-api": 60,
        "name": "Reliability",
        "weight": 16,
        "x-ads": 75
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 15,
        "edge": "microsoft-advertising-api",
        "key": "schema",
        "microsoft-advertising-api": 79,
        "name": "Schema \u0026 documentation",
        "weight": 13,
        "x-ads": 64
      },
      {
        "by": 1,
        "edge": "microsoft-advertising-api",
        "key": "ergonomics",
        "microsoft-advertising-api": 63,
        "name": "Agent ergonomics",
        "weight": 13,
        "x-ads": 62
      },
      {
        "by": 12,
        "edge": "microsoft-advertising-api",
        "key": "security",
        "microsoft-advertising-api": 60,
        "name": "Security \u0026 auth",
        "weight": 14,
        "x-ads": 48
      },
      {
        "by": 10,
        "edge": "microsoft-advertising-api",
        "key": "payments",
        "microsoft-advertising-api": 30,
        "name": "Payments \u0026 pricing",
        "weight": 10,
        "x-ads": 20
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "edge": "x-ads",
        "key": "maintenance",
        "microsoft-advertising-api": 61,
        "name": "Maintenance \u0026 community",
        "weight": 7,
        "x-ads": 63
      },
      {
        "by": 2,
        "edge": "microsoft-advertising-api",
        "key": "transparency",
        "microsoft-advertising-api": 64,
        "name": "Transparency \u0026 trust",
        "weight": 7,
        "x-ads": 62
      }
    ],
    "summary": "Microsoft Advertising API scores 60.3 (C) on agent readiness against X Ads API's 57.3 (C), and leads in 5 of 7 scored categories. X Ads API leads on reliability. Both do ad reporting.",
    "verdicts": {
      "microsoft-advertising-api": "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.",
      "x-ads": "Rate limits are published per endpoint type, a sandbox host never serves ads, and the X Ads MCP server has separate read and write scopes and creates campaigns paused. The REST API needs OAuth 1.0a signing and an approved app, no OpenAPI file covers it, and the official Python and Ruby SDKs were last released in May 2022."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-x-ads",
    "json": "https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-x-ads.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-x-ads.md",
    "slim": "https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-x-ads.min.md"
  },
  "markdown": "Microsoft Advertising API scores 60.3 (C) on agent readiness against X Ads API's 57.3 (C), and leads in 5 of 7 scored categories. X Ads API leads on reliability. Both do ad reporting.\n\n- Microsoft Advertising API: grade C, 60.3/100, rank #522 of 950. Markdown https://www.anchorterminal.com/tools/microsoft-advertising-api.md · JSON https://www.anchorterminal.com/api/v1/tools/microsoft-advertising-api.json\n- X Ads API: grade C, 57.3/100, rank #616 of 950. Markdown https://www.anchorterminal.com/tools/x-ads.md · JSON https://www.anchorterminal.com/api/v1/tools/x-ads.json\n- Best advertising platform APIs for AI agents: https://www.anchorterminal.com/best/advertising/index.md\n- All 28 advertising comparisons: https://www.anchorterminal.com/compare/advertising/index.md\n\n## Which one, for what\n\n### Microsoft Advertising API (C)\n\nGood for: Agents that manage or report on Microsoft Advertising accounts, including Google Ads imports.\n\nAhead on:\n- Schema \u0026 documentation, 79 against 64\n- Security \u0026 auth, 60 against 48\n- Payments \u0026 pricing, 30 against 20\n\nWatch for: 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\n\n### X Ads API (C)\n\nGood for: An agent that manages or reports on X campaigns for an advertiser with an approved developer app, especially through the MCP server, where scopes separate reads from writes and writes start paused.\n\nAhead on:\n- Reliability, 75 against 60\n\nWatch for: No OpenAPI file covers the Ads API. The published file (version 2.170, 178 paths) describes api.x.com only\n\n\n## Score by category\n\n| Category | Weight | Microsoft Advertising API | X Ads API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 60 | 75 | X Ads API +15 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 79 | 64 | Microsoft Advertising API +15 |\n| Agent ergonomics | 13% (16.2 this run) | 63 | 62 | Microsoft Advertising API +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 60 | 48 | Microsoft Advertising API +12 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 20 | Microsoft Advertising API +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 61 | 63 | X Ads API +2 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 62 | Microsoft Advertising API +2 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **60.3 · C** | **57.3 · C** | |\n\n## Facts side by side\n\n| Fact | Microsoft Advertising API | X Ads API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Microsoft | X Corp. |\n| Hosted endpoint | `https://campaign.api.bingads.microsoft.com/CampaignManagement/v13` | `https://ads-api.x.com/mcp` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth | OAuth |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Proprietary service. The .NET, Java, Python and PHP SDKs are MIT | Proprietary service under the X Developer Agreement and its incorporated Developer Policy |\n| Tools exposed | 7 | none |\n| Read-only variant documented | yes | yes |\n| llms.txt | no | yes |\n| Last release | 2026-09-29 | 2026-09-17 |\n| Terms last updated | couldn't be read | 2026-04-27 |\n| Privacy policy last updated | 2026-09-01 | couldn't be read |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | couldn't be read | not found in the text |\n| Terms restrict benchmarking | couldn't be read | yes |\n| Terms or service can change without notice | couldn't be read | not found in the text |\n| Arbitration or class-action waiver | couldn't be read | yes |\n| Popularity | 128 stars, 19k PyPI/wk | none |\n\n## Verdicts\n\n**Microsoft Advertising API.** 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**X Ads API.** Rate limits are published per endpoint type, a sandbox host never serves ads, and the X Ads MCP server has separate read and write scopes and creates campaigns paused. The REST API needs OAuth 1.0a signing and an approved app, no OpenAPI file covers it, and the official Python and Ruby SDKs were last released in May 2022.\n\n## Before you call either\n\n### Microsoft Advertising API\n\n1. Build and test against the sandbox hosts (`*.api.sandbox.bingads.microsoft.com`) with developer token BBD37VB98. Sandbox and production credentials are separate\n2. Send `Authorization: Bearer \u003ctoken\u003e`, `DeveloperToken`, `CustomerId` and `CustomerAccountId` on REST calls. Use the account ID, never the eight-character account number\n3. Create campaigns with `Status` set to `Paused`, then read them back before activating. No validate-only mode was found\n4. On error 117 (CallRateExceeded) wait 60 seconds. On Bulk error 4204 wait up to 15 minutes\n5. Read `PartialErrors` on every add, update and delete. A call can succeed for some items and fail for others\n\n### X Ads API\n\n1. Build against `https://ads-api-sandbox.x.com/12/` first. Create a test account with `POST accounts` and a funding instrument there before touching a live account\n2. On HTTP 429 wait until the time in `x-rate-limit-reset`. On 503 wait for `retry-after`. The docs say apps that ignore these can be throttled or lose access without notice\n3. Read the account-level limit from `x-account-rate-limit-*` when present and use `x-rate-limit-*` only when it is absent\n4. For a read-only MCP session request `ads.read offline.access` only. Without `offline.access` the token expires in about two hours with no refresh\n5. Page with `count` (1 to 1,000, default 200) and `cursor` until `next_cursor` is null. Analytics endpoints page by time range instead, and `with_total_count` cannot be combined with `cursor`\n\n## Questions\n\n### Which is better for AI agents, Microsoft Advertising API or X Ads API?\n\nMicrosoft Advertising API scores 60.3 (C) on agent readiness against X Ads API's 57.3 (C), and leads in 5 of 7 scored categories. X Ads API leads on reliability.\n\n### Do Microsoft Advertising API and X Ads API need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call Microsoft Advertising API and X Ads API without installing anything?\n\nYes. Microsoft Advertising API has a hosted endpoint at https://campaign.api.bingads.microsoft.com/CampaignManagement/v13 and X Ads API at https://ads-api.x.com/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-x-ads.json, and with the fewest tokens: https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-x-ads.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"microsoft-advertising-api\", \"b\": \"x-ads\"}`. From a terminal: `anchor compare microsoft-advertising-api x-ads`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/microsoft-advertising-api.json and https://www.anchorterminal.com/api/v1/tools/x-ads.json\n\n## Other comparisons with Microsoft Advertising API or X Ads API\n\n- [Amazon Ads API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-microsoft-advertising-api.md)\n- [Amazon Ads API vs X Ads API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-x-ads.md)\n- [Apple Ads Platform API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api.md)\n- [Apple Ads Platform API vs X Ads API](https://www.anchorterminal.com/compare/apple-ads-vs-x-ads.md)\n- [Google Ads API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/google-ads-api-vs-microsoft-advertising-api.md)\n- [Google Ads API vs X Ads API](https://www.anchorterminal.com/compare/google-ads-api-vs-x-ads.md)\n- [LinkedIn Marketing APIs vs Microsoft Advertising API](https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-microsoft-advertising-api.md)\n- [LinkedIn Marketing APIs vs X Ads API](https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-x-ads.md)\n- [Meta Marketing API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/meta-marketing-api-vs-microsoft-advertising-api.md)\n- [Meta Marketing API vs X Ads API](https://www.anchorterminal.com/compare/meta-marketing-api-vs-x-ads.md)\n- [Microsoft Advertising API vs Snapchat Ads API](https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-snapchat-ads.md)\n- [Snapchat Ads API vs X Ads API](https://www.anchorterminal.com/compare/snapchat-ads-vs-x-ads.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "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": "Microsoft Advertising API vs X Ads API",
        "url": ""
      }
    ],
    "description": "Microsoft Advertising scores 60.3 (C) to X Ads's 57.3 (C) for ad reporting. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Microsoft Advertising API C 60.3",
      "X Ads API C 57.3",
      "scores"
    ],
    "h1": "Microsoft Advertising API vs X Ads API",
    "image": "https://www.anchorterminal.com/assets/og/compare-microsoft-advertising-api-vs-x-ads.png",
    "path": "/compare/microsoft-advertising-api-vs-x-ads",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Microsoft Advertising vs X Ads for AI agents (2026) | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-x-ads"
  },
  "tokens": {
    "markdown": 2350,
    "slim": 680
  },
  "version": 1
}
