{
  "data": {
    "similar": [
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/google-ads-api.json",
        "name": "Google Ads API",
        "score": 76.4,
        "shared": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "slug": "google-ads-api"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/meta-marketing-api.json",
        "name": "Meta Marketing API",
        "score": 67.7,
        "shared": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "slug": "meta-marketing-api"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/linkedin-marketing-api.json",
        "name": "LinkedIn Marketing APIs",
        "score": 62.4,
        "shared": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "slug": "linkedin-marketing-api"
      },
      {
        "grade": "C",
        "json": "https://www.anchorterminal.com/tools/amazon-ads-api.json",
        "name": "Amazon Ads API",
        "score": 59,
        "shared": [
          "ads.reporting",
          "ads.campaigns",
          "ads.budgets",
          "ads.audiences",
          "ads.creatives"
        ],
        "slug": "amazon-ads-api"
      }
    ],
    "tool": {
      "slug": "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"
        ],
        "breakdown": [
          {
            "key": "reliability",
            "name": "Reliability",
            "weight": 16,
            "effectiveWeight": 20,
            "score": 60,
            "points": 12,
            "reason": "Graded on the public API, read with the hosted lines. Platform health blog at status.ads.microsoft.com with areas for each API and dated posts (20). 40 posts from 20 July to 7 October 2026, 21 tagged Reporting API and all of those for delayed data, from three hours to six days. None reports the Campaign Management, Bulk, Customer Management or Ad Insight APIs down. Scored between minor and major for the frequency (15). Throttling is documented without numbers, and the Bulk and Reporting limits are called internal and subject to change (5). Wait 60 seconds after error 117 and up to 15 minutes after Bulk error 4204, with partial success on writes, but no idempotency key found (10). No SLA found (0). Version 13 is generally available. The MCP server is in open beta and isn't the surface graded (10)."
          },
          {
            "key": "performance",
            "name": "Performance",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
          },
          {
            "key": "schema",
            "name": "Schema \u0026 documentation",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 79,
            "points": 12.84,
            "reason": "A public WSDL for each of the six SOAP services, and REST URLs with JSON templates on every operation page. No public OpenAPI file was found, only a generated `openapi_client` inside the SDKs (15). learn.microsoft.com/llms.txt returns 404, but every page is returned as Markdown for `Accept: text/markdown` (10). Reference pages state each element's purpose, limits and required headers, with guides per service (15). Typed data objects and value sets, required elements marked (13). Request and response templates in SOAP and JSON with ValueHere placeholders, code examples in four languages and an operation error code list (11). Version 13 with dated monthly release notes (15)."
          },
          {
            "key": "ergonomics",
            "name": "Agent ergonomics",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 63,
            "points": 10.24,
            "reason": "Reports take a chosen column list and Get operations take IDs and `ReturnAdditionalFields`, but entity responses return whole objects (15). `PageInfo` paging and predicates on Search operations, report filters and scopes, and entity selection on bulk downloads (17). Numeric and symbolic error codes, a `TrackingId` on every response and `PartialErrors` per item, though SOAP faults arrive as HTTP 500 and some failures are an unmapped internal error (15). No idempotency key or validate-only mode found. Partial update on most campaign objects is the only retry aid (5). SDKs for .NET, Java, Python and PHP. Each call needs a token and up to three more headers (11)."
          },
          {
            "key": "security",
            "name": "Security \u0026 auth",
            "weight": 14,
            "effectiveWeight": 17.5,
            "score": 60,
            "points": 10.5,
            "reason": "OAuth 2.0 through Entra ID or Google with refresh tokens and required multi-factor authentication, but one scope, `msads.manage`, covers every read and write (22). Access is limited by user role, with a read-only Viewer role and per-account access, and the MCP server is read-only. Nothing asks for confirmation before a delete (13). Search term reports and ad text return content written by outsiders, and no injection guidance was found (3). A campaign change history report and a `TrackingId` per call (10). MSRC disclosure policy and bounty, though microsoft.com's security.txt expired on 23 September 2026. Certifications covering Microsoft Advertising weren't checked (12)."
          },
          {
            "key": "payments",
            "name": "Payments \u0026 pricing",
            "weight": 10,
            "effectiveWeight": 12.5,
            "score": 30,
            "points": 3.75,
            "reason": "No x402, MPP or L402 (0). No fee for API access was found, and none is stated as waived. Ad spend is set by auction, so no unit price is published (10). The sandbox needs no payment method and takes a shared developer token (20). A person signs up, registers an Entra app and grants consent in a browser (0)."
          },
          {
            "key": "tasks",
            "name": "Task success",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
          },
          {
            "key": "maintenance",
            "name": "Maintenance \u0026 community",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 61,
            "points": 5.34,
            "reason": "SDK 13.0.30 published on 29 September 2026, and `msads` 13.0.30 reached PyPI on 30 September (30). Two dated release-note entries (August and September 2026) and two SDK releases in the last 90 days, short of three (0). The Python SDK repository shows 54 open issues, two from July 2026 with no reply, while release pull requests merge within days. Microsoft says it monitors the Q\u0026A forum, which we didn't check (10). Current official SDKs in four languages (15). Azure Pipelines CI is configured, its matrix names Python 3.7 while the docs require 3.8, and HISTORY.rst carries three entries dated 2027 (6)."
          },
          {
            "key": "transparency",
            "name": "Transparency \u0026 trust",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 64,
            "points": 5.6,
            "note": "editorial 38, provenance 90",
            "reason": "Closed service with MIT SDKs. The Microsoft Advertising Agreement page renders only with JavaScript, so we couldn't read the terms (10). The Microsoft privacy statement applies, and the docs give reporting data retention periods, but no API-specific retention statement was found (12). SOAP's end date of 31 January 2027 is announced with migration guides, and the release notes carry a breaking-changes section (16). Sub-processors and data locations for Microsoft Advertising weren't checked (0)."
          }
        ],
        "assessment": {
          "date": "2026-10-08",
          "basis": "public evidence",
          "confidence": "medium",
          "notes": {
            "ergonomics": "Reports take a chosen column list and Get operations take IDs and `ReturnAdditionalFields`, but entity responses return whole objects (15). `PageInfo` paging and predicates on Search operations, report filters and scopes, and entity selection on bulk downloads (17). Numeric and symbolic error codes, a `TrackingId` on every response and `PartialErrors` per item, though SOAP faults arrive as HTTP 500 and some failures are an unmapped internal error (15). No idempotency key or validate-only mode found. Partial update on most campaign objects is the only retry aid (5). SDKs for .NET, Java, Python and PHP. Each call needs a token and up to three more headers (11).",
            "maintenance": "SDK 13.0.30 published on 29 September 2026, and `msads` 13.0.30 reached PyPI on 30 September (30). Two dated release-note entries (August and September 2026) and two SDK releases in the last 90 days, short of three (0). The Python SDK repository shows 54 open issues, two from July 2026 with no reply, while release pull requests merge within days. Microsoft says it monitors the Q\u0026A forum, which we didn't check (10). Current official SDKs in four languages (15). Azure Pipelines CI is configured, its matrix names Python 3.7 while the docs require 3.8, and HISTORY.rst carries three entries dated 2027 (6).",
            "payments": "No x402, MPP or L402 (0). No fee for API access was found, and none is stated as waived. Ad spend is set by auction, so no unit price is published (10). The sandbox needs no payment method and takes a shared developer token (20). A person signs up, registers an Entra app and grants consent in a browser (0).",
            "reliability": "Graded on the public API, read with the hosted lines. Platform health blog at status.ads.microsoft.com with areas for each API and dated posts (20). 40 posts from 20 July to 7 October 2026, 21 tagged Reporting API and all of those for delayed data, from three hours to six days. None reports the Campaign Management, Bulk, Customer Management or Ad Insight APIs down. Scored between minor and major for the frequency (15). Throttling is documented without numbers, and the Bulk and Reporting limits are called internal and subject to change (5). Wait 60 seconds after error 117 and up to 15 minutes after Bulk error 4204, with partial success on writes, but no idempotency key found (10). No SLA found (0). Version 13 is generally available. The MCP server is in open beta and isn't the surface graded (10).",
            "schema": "A public WSDL for each of the six SOAP services, and REST URLs with JSON templates on every operation page. No public OpenAPI file was found, only a generated `openapi_client` inside the SDKs (15). learn.microsoft.com/llms.txt returns 404, but every page is returned as Markdown for `Accept: text/markdown` (10). Reference pages state each element's purpose, limits and required headers, with guides per service (15). Typed data objects and value sets, required elements marked (13). Request and response templates in SOAP and JSON with ValueHere placeholders, code examples in four languages and an operation error code list (11). Version 13 with dated monthly release notes (15).",
            "security": "OAuth 2.0 through Entra ID or Google with refresh tokens and required multi-factor authentication, but one scope, `msads.manage`, covers every read and write (22). Access is limited by user role, with a read-only Viewer role and per-account access, and the MCP server is read-only. Nothing asks for confirmation before a delete (13). Search term reports and ad text return content written by outsiders, and no injection guidance was found (3). A campaign change history report and a `TrackingId` per call (10). MSRC disclosure policy and bounty, though microsoft.com's security.txt expired on 23 September 2026. Certifications covering Microsoft Advertising weren't checked (12).",
            "transparency": "Closed service with MIT SDKs. The Microsoft Advertising Agreement page renders only with JavaScript, so we couldn't read the terms (10). The Microsoft privacy statement applies, and the docs give reporting data retention periods, but no API-specific retention statement was found (12). SOAP's end date of 31 January 2027 is announced with migration guides, and the release notes carry a breaking-changes section (16). Sub-processors and data locations for Microsoft Advertising weren't checked (0)."
          },
          "sources": [
            {
              "what": "API overview and SOAP retirement notice",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "get started, developer token and headers",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/get-started?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "OAuth with Entra ID and Google",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/authentication-oauth?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "access and refresh tokens, scope",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/authentication-oauth-get-tokens?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "sandbox",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/sandbox?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "services protocol, partial success and throttling",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/services-protocol?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "service errors and fault model",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/handle-service-errors-exceptions?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "SOAP to REST migration",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/migrate-to-rest?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "release notes",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/release-notes?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "client libraries",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/client-libraries?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "account hierarchy and user roles",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/account-hierarchy-permissions?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "FAQ, reporting delay",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/faq?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "MCP server setup",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/mcp-setup?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "MCP server tools",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/mcp-tools?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "AddCampaigns reference, REST URL and JSON",
              "url": "https://learn.microsoft.com/en-us/advertising/campaign-management-service/addcampaigns?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "web service addresses and WSDLs",
              "url": "https://learn.microsoft.com/en-us/advertising/guides/web-service-addresses?view=bingads-13",
              "seen": "2026-10-08"
            },
            {
              "what": "platform health blog",
              "url": "https://status.ads.microsoft.com/",
              "seen": "2026-10-08"
            },
            {
              "what": "platform health posts since 10 July 2026",
              "url": "https://status.ads.microsoft.com/wp-json/wp/v2/posts?per_page=100\u0026after=2026-07-10T00:00:00",
              "seen": "2026-10-08"
            },
            {
              "what": "Python SDK repository, tags, licence, CI and history",
              "url": "https://github.com/BingAds/BingAds-Python-SDK",
              "seen": "2026-10-08"
            },
            {
              "what": "msads on PyPI",
              "url": "https://pypi.org/pypi/msads/json",
              "seen": "2026-10-08"
            },
            {
              "what": "msads download counts",
              "url": "https://pypistats.org/api/packages/msads/recent",
              "seen": "2026-10-08"
            },
            {
              "what": "security.txt",
              "url": "https://www.microsoft.com/.well-known/security.txt",
              "seen": "2026-10-08"
            },
            {
              "what": "llms.txt (404)",
              "url": "https://learn.microsoft.com/llms.txt",
              "seen": "2026-10-08"
            }
          ],
          "openQuestions": [
            "unchecked: the Microsoft Advertising Agreement and any API-specific terms, because help.ads.microsoft.com renders only with JavaScript",
            "unchecked: sub-processors, data locations and certifications covering Microsoft Advertising",
            "unchecked: how quickly the Microsoft Q\u0026A forum answers, and GitHub stars and issue counts beyond the GitHub API figures",
            "Whether a production developer token is issued at once or after review. The docs describe a Request Token button and no approval step",
            "Whether Microsoft will publish an OpenAPI file for the REST API, and what the numeric call limits are",
            "Whether the MCP tools carry readOnlyHint annotations, and when the server leaves open beta",
            "The bulk upload row limit is given as 2.5 million on the sandbox page and 4 million on the services protocol page"
          ]
        },
        "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"
      ],
      "notable": [
        "SOAP is supported through 31 January 2027 and is scheduled for full deprecation on that date. REST is the base for future API work, with migration guides for each SDK (https://learn.microsoft.com/en-us/advertising/guides/migrate-to-rest?view=bingads-13)",
        "The sandbox has separate credentials and endpoints, a universal developer token (BBD37VB98), a 20,000-row bulk upload limit and test report data for nine report types. Microsoft says it may be down for maintenance without notice (https://learn.microsoft.com/en-us/advertising/guides/sandbox?view=bingads-13)",
        "Campaign Management and Ad Insight calls are throttled per customer over a 60-second sliding window with error 117. The Bulk and Reporting limits are described as internal and subject to change (https://learn.microsoft.com/en-us/advertising/guides/services-protocol?view=bingads-13)",
        "An official MCP server at https://partner.api.bingads.microsoft.com/ext/mcp/vnext?toolSetNames=OpenBeta has seven read-only tools (GetAccounts, GetCampaigns, GetAdGroups, GetAds, GetKeywords, GetAssetGroups, GetAudienceAssociations) and needs the user's own Entra app registration (https://learn.microsoft.com/en-us/advertising/guides/mcp-tools?view=bingads-13)",
        "The platform health blog lists 40 posts from 20 July to 7 October 2026, 21 of them tagged Reporting API and all of those for delayed data. None is tagged Campaign Management, Bulk, Customer Management or Ad Insight API (https://status.ads.microsoft.com/)",
        "Clicks take up to two hours and conversions up to three to reach reports (https://learn.microsoft.com/en-us/advertising/guides/faq?view=bingads-13)"
      ],
      "area": "communication",
      "details": [
        {
          "label": "Services",
          "value": "Campaign Management (189 operations listed), Bulk, Reporting, Ad Insight, Customer Management and Customer Billing, all version 13, each with production and sandbox hosts under api.bingads.microsoft.com"
        },
        {
          "label": "Protocols",
          "value": "REST with JSON (for example POST https://campaign.api.bingads.microsoft.com/CampaignManagement/v13/Campaigns) and SOAP 1.1 with a WSDL per service. SOAP retires on 31 January 2027"
        },
        {
          "label": "Credentials",
          "value": "OAuth 2.0 access token from Entra ID or Google, scope `https://ads.microsoft.com/msads.manage`, plus `DeveloperToken`, `CustomerId` and `CustomerAccountId` headers"
        },
        {
          "label": "Sandbox",
          "value": "sandbox.bingads.microsoft.com, universal developer token BBD37VB98, no payment method, ads never served, 20,000-row bulk uploads, one thread requested"
        },
        {
          "label": "Rate limits",
          "value": "No numbers published. Per-customer 60-second sliding window on Campaign Management and Ad Insight (error 117), Bulk error 4204 with a wait of up to 15 minutes, Reporting error 207 on too many concurrent reports"
        },
        {
          "label": "Batch limits",
          "value": "100 campaigns per AddCampaigns request. Bulk upload files up to 100 MB (the docs give both 2.5 million and 4 million rows)"
        },
        {
          "label": "Reporting delay",
          "value": "Up to two hours for clicks and three for conversions. Reports are submitted, polled and downloaded as files"
        },
        {
          "label": "Roles",
          "value": "Super Admin, Standard user, Advertiser Campaign Manager and Viewer (read-only)"
        },
        {
          "label": "SDKs",
          "value": "Microsoft.BingAds.SDK (.NET), Java, Python `msads` and PHP REST, all 13.0.30 from 29 September 2026, MIT"
        },
        {
          "label": "MCP server",
          "value": "Open beta, remote HTTP, seven read-only entity tools with filters, sorting, PageSize and NextPageToken. Documented for Copilot Studio, VS Code, ChatGPT and Claude"
        },
        {
          "label": "Status",
          "value": "status.ads.microsoft.com, a platform health blog with areas for each API and an RSS feed"
        }
      ],
      "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,
        "checks": [
          {
            "check": "Legal entity named",
            "value": "Microsoft Corporation",
            "points": 20,
            "max": 20,
            "state": "ok"
          },
          {
            "check": "Domain age",
            "value": "microsoft.com, registered 1991-05-02 (35 years)",
            "points": 15,
            "max": 15,
            "state": "ok"
          },
          {
            "check": "Endpoint on the vendor's domain",
            "value": "campaign.api.bingads.microsoft.com",
            "points": 15,
            "max": 15,
            "state": "ok"
          },
          {
            "check": "Terms of service",
            "value": "published, but our reader couldn't read it",
            "points": 7,
            "max": 10,
            "state": "part"
          },
          {
            "check": "Privacy policy",
            "value": "read, states 8 of the 8 things a reader expects, and has 1 clause that costs points",
            "points": 8,
            "max": 10,
            "state": "part"
          },
          {
            "check": "Status page",
            "value": "status.ads.microsoft.com",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "Changelog",
            "value": "published",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "security.txt",
            "value": "published but past its Expires date",
            "points": 5,
            "max": 10,
            "state": "part"
          }
        ],
        "policies": [
          {
            "kind": "terms",
            "url": "https://about.ads.microsoft.com/en/resources/policies/microsoft-advertising-agreement",
            "state": "unreadable",
            "reason": "the page has 53 words of text without a browser, so the document is drawn by script or sits elsewhere",
            "readAt": "2026-10-08",
            "points": 7,
            "max": 10
          },
          {
            "kind": "privacy",
            "url": "https://www.microsoft.com/en-us/privacy/privacystatement",
            "state": "read",
            "readAt": "2026-10-08",
            "statedDate": "2026-09-01",
            "words": 33580,
            "points": 8,
            "max": 10,
            "expected": [
              {
                "key": "privacy.date",
                "label": "Gives the date it was last updated",
                "found": true,
                "quote": "Last Updated: September 2026",
                "says": "Last updated 2026-09-01"
              },
              {
                "key": "privacy.collected",
                "label": "Says what personal data is collected",
                "found": true,
                "quote": "The data we collect depends on the context of your interactions with Microsoft and the choices you make, including your privacy settings and the products and features you use."
              },
              {
                "key": "privacy.retention",
                "label": "Says how long data is kept",
                "found": true,
                "quote": "When you delete an email or item from a mailbox in Outlook.com, the item generally goes into your Deleted Items folder where it remains for approximately 7 days unless you move it back to your inbox, you empty the folder, or the service empties the folder automatically, whichever comes first.",
                "says": "Names a period of 7 days"
              },
              {
                "key": "privacy.processors",
                "label": "Says who else receives the data",
                "found": true,
                "quote": "Service providers that help us determine your device’s location."
              },
              {
                "key": "privacy.sale",
                "label": "Says whether personal data is sold or shared for advertising",
                "found": true,
                "quote": "not use or share student personal data for advertising or similar commercial purposes, such as providing personalized advertising to students;"
              },
              {
                "key": "privacy.rights",
                "label": "Says what rights people have over their data",
                "found": true,
                "quote": "State Data Privacy Notice (including notice at collection details) and the Consumer Health Data Privacy Policy for additional information about your rights and the processing of your personal data."
              },
              {
                "key": "privacy.contact",
                "label": "Gives a privacy contact",
                "found": true,
                "quote": "If you have a privacy concern, complaint, or question for the Microsoft privacy team or Data Protection Officer, please visit our privacy support and requests page and click on “Contact the Microsoft privacy team or the Microsoft Data Protection Officer” menu.",
                "says": "Names a data protection officer"
              },
              {
                "key": "privacy.transfers",
                "label": "Says where data is transferred or stored",
                "found": true,
                "quote": "In such cases, we implement legal safeguards-such as standard contractual clauses approved by the European Commission – to help protect your rights and ensure your data remains protected.",
                "says": "Relies on standard contractual clauses"
              }
            ],
            "toKnow": [
              {
                "key": "training",
                "label": "Says it may use customer content to train or improve models, and no opt-out was found",
                "found": true,
                "quote": "As part of our efforts to improve and develop our products, we may use your data to develop and train our AI models.",
                "costsPoints": true
              },
              {
                "key": "privacy.sells",
                "label": "Says it sells personal data or shares it for advertising",
                "found": true,
                "quote": "We also disclose personal data for digital advertising purposes."
              }
            ],
            "notes": [
              {
                "date": "2026-10-08",
                "text": "For enterprise and developer products, the customer's agreement with Microsoft takes precedence over this privacy statement where the two conflict.",
                "quote": "In the event of a conflict between our privacy statement and the terms of any agreement(s) between a customer and Microsoft for Enterprise and Developer Products, the terms of those agreement(s) will control."
              },
              {
                "date": "2026-10-08",
                "text": "Prompts and related data sent to the consumer Microsoft Copilot are used to improve services and for relevant advertising.",
                "quote": "Microsoft Copilot also uses prompts and related data to provide and improve services, including relevant advertising."
              },
              {
                "date": "2026-10-08",
                "text": "Microsoft staff manually review some results of its automated systems, including AI, against the source data.",
                "quote": "For example, to build, train, and improve the accuracy of our automated systems – such as AI - we manually review some of the results against the underlying data."
              }
            ]
          }
        ]
      },
      "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"
      }
    },
    "verify": {
      "accepts": "a page on microsoft.com or one of its subdomains, or the README of github.com/BingAds/BingAds-Python-SDK",
      "badgeUrl": "https://www.anchorterminal.com/badges/microsoft-advertising-api.svg",
      "body": {
        "slug": "microsoft-advertising-api",
        "url": "the page with the badge or the link"
      },
      "docs": "https://www.anchorterminal.com/builders/#verify",
      "effect": "none, it never changes a grade, rank or review",
      "endpoint": "https://www.anchorterminal.com/api/v1/verify",
      "listingUrl": "https://www.anchorterminal.com/tools/microsoft-advertising-api",
      "mcpTool": "verify_listing",
      "recheck": "weekly; two failed checks in a row and it lapses, a later pass restores it",
      "snippets": {
        "html": "\u003ca href=\"https://www.anchorterminal.com/tools/microsoft-advertising-api\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/microsoft-advertising-api.svg\" alt=\"Microsoft Advertising API on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e",
        "markdown": "[![Microsoft Advertising API on Anchor Terminal](https://www.anchorterminal.com/badges/microsoft-advertising-api.svg)](https://www.anchorterminal.com/tools/microsoft-advertising-api)",
        "link": "\u003ca href=\"https://www.anchorterminal.com/tools/microsoft-advertising-api\"\u003eMicrosoft Advertising API on Anchor Terminal\u003c/a\u003e"
      }
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/microsoft-advertising-api",
    "json": "https://www.anchorterminal.com/tools/microsoft-advertising-api.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/microsoft-advertising-api.md",
    "slim": "https://www.anchorterminal.com/tools/microsoft-advertising-api.min.md"
  },
  "markdown": "## Overview\n\n**Grade C · 60.3/100 · rank #360 of 629 · #4 in Advertising \u0026 campaign operations · not agent-ready · confidence medium**\n\n\nMore from Microsoft, listed separately because each is its own product: [Microsoft Foundry fine-tuning (Azure OpenAI)](https://www.anchorterminal.com/tools/azure-foundry-fine-tuning.md) (Fine-tuning), [Azure AI Content Safety (Prompt Shields)](https://www.anchorterminal.com/tools/azure-ai-content-safety.md) (Guardrails \u0026 safety filters), [Azure AI Speech speech-to-text](https://www.anchorterminal.com/tools/azure-speech-to-text.md) (Speech-to-text), [Azure AI Speech text-to-speech](https://www.anchorterminal.com/tools/azure-text-to-speech.md) (Text-to-speech), [Microsoft Agent Framework](https://www.anchorterminal.com/tools/microsoft-agent-framework.md) (Agent frameworks \u0026 SDKs), [Microsoft Execution Containers](https://www.anchorterminal.com/tools/microsoft-execution-containers.md) (Code execution sandboxes), [Microsoft Entra Agent ID](https://www.anchorterminal.com/tools/microsoft-entra-agent-id.md) (Agent auth \u0026 delegated access), [Azure Key Vault](https://www.anchorterminal.com/tools/azure-key-vault.md) (Secrets \u0026 credential vaults), [Azure DevOps MCP Server](https://www.anchorterminal.com/tools/azure-devops-mcp.md) (Code \u0026 developer platforms), [Microsoft Learn MCP Server](https://www.anchorterminal.com/tools/microsoft-learn-mcp.md) (Code \u0026 developer platforms), [Playwright MCP](https://www.anchorterminal.com/tools/playwright-mcp.md) (Browser automation), [Azure MCP Server](https://www.anchorterminal.com/tools/azure-mcp.md) (Cloud \u0026 infrastructure), [Azure Translator](https://www.anchorterminal.com/tools/azure-translator.md) (Translation), [Microsoft Graph Calendar API](https://www.anchorterminal.com/tools/microsoft-graph-calendar.md) (Calendars \u0026 scheduling), [Microsoft Dynamics 365 Sales](https://www.anchorterminal.com/tools/dynamics-365-sales.md) (CRM \u0026 customer platforms), [Microsoft Excel (Microsoft Graph workbook API)](https://www.anchorterminal.com/tools/microsoft-excel-graph.md) (Spreadsheets \u0026 operational tables), [Outlook Mail (Microsoft Graph)](https://www.anchorterminal.com/tools/outlook-mail-graph.md) (Mailbox access).\n\n## Assessment\n\nVersion 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## Facts\n\n| Field | Value |\n| --- | --- |\n| Vendor | Microsoft (https://learn.microsoft.com/en-us/advertising/guides/) |\n| Kind | HTTP API |\n| Category | Advertising \u0026 campaign operations (https://www.anchorterminal.com/categories/advertising) |\n| Transport | HTTP |\n| Endpoint | `https://campaign.api.bingads.microsoft.com/CampaignManagement/v13` |\n| Auth | OAuth · 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. |\n| Pricing | Free (Free) · 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). |\n| x402 | No · No x402, MPP or L402 in the Microsoft Advertising guides or reference pages (checked 2026-10-08). |\n| Licence | Proprietary service. The .NET, Java, Python and PHP SDKs are MIT |\n| Tools exposed | 7 |\n| Packages | pypi: `msads` |\n| Source | https://github.com/BingAds/BingAds-Python-SDK |\n| Docs | https://learn.microsoft.com/en-us/advertising/guides/ |\n| llms.txt | not found |\n| Last release | 2026-09-29 |\n| GitHub stars | 128 (as of 2026-10-08) |\n| PyPI downloads / week | 18,920 |\n| Services | Campaign Management (189 operations listed), Bulk, Reporting, Ad Insight, Customer Management and Customer Billing, all version 13, each with production and sandbox hosts under api.bingads.microsoft.com |\n| Protocols | REST with JSON (for example POST https://campaign.api.bingads.microsoft.com/CampaignManagement/v13/Campaigns) and SOAP 1.1 with a WSDL per service. SOAP retires on 31 January 2027 |\n| Credentials | OAuth 2.0 access token from Entra ID or Google, scope `https://ads.microsoft.com/msads.manage`, plus `DeveloperToken`, `CustomerId` and `CustomerAccountId` headers |\n| Sandbox | sandbox.bingads.microsoft.com, universal developer token BBD37VB98, no payment method, ads never served, 20,000-row bulk uploads, one thread requested |\n| Rate limits | No numbers published. Per-customer 60-second sliding window on Campaign Management and Ad Insight (error 117), Bulk error 4204 with a wait of up to 15 minutes, Reporting error 207 on too many concurrent reports |\n| Batch limits | 100 campaigns per AddCampaigns request. Bulk upload files up to 100 MB (the docs give both 2.5 million and 4 million rows) |\n| Reporting delay | Up to two hours for clicks and three for conversions. Reports are submitted, polled and downloaded as files |\n| Roles | Super Admin, Standard user, Advertiser Campaign Manager and Viewer (read-only) |\n| SDKs | Microsoft.BingAds.SDK (.NET), Java, Python `msads` and PHP REST, all 13.0.30 from 29 September 2026, MIT |\n| MCP server | Open beta, remote HTTP, seven read-only entity tools with filters, sorting, PageSize and NextPageToken. Documented for Copilot Studio, VS Code, ChatGPT and Claude |\n| Status | status.ads.microsoft.com, a platform health blog with areas for each API and an RSS feed |\n| Capabilities | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives |\n| Tags | hosted, official, oauth, rest, soap, sandbox, mcp, python, java, dotnet, php, status-page |\n| JSON | https://www.anchorterminal.com/api/v1/tools/microsoft-advertising-api.json |\n\n## Score breakdown (methodology v0.4, October 2026 research run)\n\nAssessed 2026-10-08 from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/#checklist). Confidence: medium. Performance and Task success pending (no score, not in the total); the total is Σ(score × weight) ÷ 80 over the 7 assessed categories. \"This run\" is each category's share of the 100 points.\n\n| Category | Weight | This run | Score (0–100) | Points |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% | 20 | 60 | 12.0 |\n| Performance | 10% | pending | pending | n/a |\n| Schema \u0026 documentation | 13% | 16.2 | 79 | 12.8 |\n| Agent ergonomics | 13% | 16.2 | 63 | 10.2 |\n| Security \u0026 auth | 14% | 17.5 | 60 | 10.5 |\n| Payments \u0026 pricing | 10% | 12.5 | 30 | 3.8 |\n| Task success | 10% | pending | pending | n/a |\n| Maintenance \u0026 community | 7% | 8.8 | 61 | 5.3 |\n| Transparency \u0026 trust (editorial 38, provenance 90) | 7% | 8.8 | 64 | 5.6 |\n| Negative events | up to −15 | up to −15 | none recorded | 0 |\n| **Total** | | | | **60.3 → C** |\n\n### Why each score\n\n- Reliability 60: Graded on the public API, read with the hosted lines. Platform health blog at status.ads.microsoft.com with areas for each API and dated posts (20). 40 posts from 20 July to 7 October 2026, 21 tagged Reporting API and all of those for delayed data, from three hours to six days. None reports the Campaign Management, Bulk, Customer Management or Ad Insight APIs down. Scored between minor and major for the frequency (15). Throttling is documented without numbers, and the Bulk and Reporting limits are called internal and subject to change (5). Wait 60 seconds after error 117 and up to 15 minutes after Bulk error 4204, with partial success on writes, but no idempotency key found (10). No SLA found (0). Version 13 is generally available. The MCP server is in open beta and isn't the surface graded (10).\n- Performance: Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes.\n- Schema \u0026 documentation 79: A public WSDL for each of the six SOAP services, and REST URLs with JSON templates on every operation page. No public OpenAPI file was found, only a generated `openapi_client` inside the SDKs (15). learn.microsoft.com/llms.txt returns 404, but every page is returned as Markdown for `Accept: text/markdown` (10). Reference pages state each element's purpose, limits and required headers, with guides per service (15). Typed data objects and value sets, required elements marked (13). Request and response templates in SOAP and JSON with ValueHere placeholders, code examples in four languages and an operation error code list (11). Version 13 with dated monthly release notes (15).\n- Agent ergonomics 63: Reports take a chosen column list and Get operations take IDs and `ReturnAdditionalFields`, but entity responses return whole objects (15). `PageInfo` paging and predicates on Search operations, report filters and scopes, and entity selection on bulk downloads (17). Numeric and symbolic error codes, a `TrackingId` on every response and `PartialErrors` per item, though SOAP faults arrive as HTTP 500 and some failures are an unmapped internal error (15). No idempotency key or validate-only mode found. Partial update on most campaign objects is the only retry aid (5). SDKs for .NET, Java, Python and PHP. Each call needs a token and up to three more headers (11).\n- Security \u0026 auth 60: OAuth 2.0 through Entra ID or Google with refresh tokens and required multi-factor authentication, but one scope, `msads.manage`, covers every read and write (22). Access is limited by user role, with a read-only Viewer role and per-account access, and the MCP server is read-only. Nothing asks for confirmation before a delete (13). Search term reports and ad text return content written by outsiders, and no injection guidance was found (3). A campaign change history report and a `TrackingId` per call (10). MSRC disclosure policy and bounty, though microsoft.com's security.txt expired on 23 September 2026. Certifications covering Microsoft Advertising weren't checked (12).\n- Payments \u0026 pricing 30: No x402, MPP or L402 (0). No fee for API access was found, and none is stated as waived. Ad spend is set by auction, so no unit price is published (10). The sandbox needs no payment method and takes a shared developer token (20). A person signs up, registers an Entra app and grants consent in a browser (0).\n- Task success: Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored.\n- Maintenance \u0026 community 61: SDK 13.0.30 published on 29 September 2026, and `msads` 13.0.30 reached PyPI on 30 September (30). Two dated release-note entries (August and September 2026) and two SDK releases in the last 90 days, short of three (0). The Python SDK repository shows 54 open issues, two from July 2026 with no reply, while release pull requests merge within days. Microsoft says it monitors the Q\u0026A forum, which we didn't check (10). Current official SDKs in four languages (15). Azure Pipelines CI is configured, its matrix names Python 3.7 while the docs require 3.8, and HISTORY.rst carries three entries dated 2027 (6).\n- Transparency \u0026 trust 64: Closed service with MIT SDKs. The Microsoft Advertising Agreement page renders only with JavaScript, so we couldn't read the terms (10). The Microsoft privacy statement applies, and the docs give reporting data retention periods, but no API-specific retention statement was found (12). SOAP's end date of 31 January 2027 is announced with migration guides, and the release notes carry a breaking-changes section (16). Sub-processors and data locations for Microsoft Advertising weren't checked (0).\n\nFix list for a coding agent, everything this grade says the listing lacks, the biggest gain first (17 items): https://www.anchorterminal.com/fixes/microsoft-advertising-api.md (JSON https://www.anchorterminal.com/fixes/microsoft-advertising-api.json)\n\n### What we couldn't check\n\n- unchecked: the Microsoft Advertising Agreement and any API-specific terms, because help.ads.microsoft.com renders only with JavaScript\n- unchecked: sub-processors, data locations and certifications covering Microsoft Advertising\n- unchecked: how quickly the Microsoft Q\u0026A forum answers, and GitHub stars and issue counts beyond the GitHub API figures\n- Whether a production developer token is issued at once or after review. The docs describe a Request Token button and no approval step\n- Whether Microsoft will publish an OpenAPI file for the REST API, and what the numeric call limits are\n- Whether the MCP tools carry readOnlyHint annotations, and when the server leaves open beta\n- The bulk upload row limit is given as 2.5 million on the sandbox page and 4 million on the services protocol page\n\n### Sources\n\n- API overview and SOAP retirement notice: \u003chttps://learn.microsoft.com/en-us/advertising/guides/?view=bingads-13\u003e (seen 2026-10-08)\n- get started, developer token and headers: \u003chttps://learn.microsoft.com/en-us/advertising/guides/get-started?view=bingads-13\u003e (seen 2026-10-08)\n- OAuth with Entra ID and Google: \u003chttps://learn.microsoft.com/en-us/advertising/guides/authentication-oauth?view=bingads-13\u003e (seen 2026-10-08)\n- access and refresh tokens, scope: \u003chttps://learn.microsoft.com/en-us/advertising/guides/authentication-oauth-get-tokens?view=bingads-13\u003e (seen 2026-10-08)\n- sandbox: \u003chttps://learn.microsoft.com/en-us/advertising/guides/sandbox?view=bingads-13\u003e (seen 2026-10-08)\n- services protocol, partial success and throttling: \u003chttps://learn.microsoft.com/en-us/advertising/guides/services-protocol?view=bingads-13\u003e (seen 2026-10-08)\n- service errors and fault model: \u003chttps://learn.microsoft.com/en-us/advertising/guides/handle-service-errors-exceptions?view=bingads-13\u003e (seen 2026-10-08)\n- SOAP to REST migration: \u003chttps://learn.microsoft.com/en-us/advertising/guides/migrate-to-rest?view=bingads-13\u003e (seen 2026-10-08)\n- release notes: \u003chttps://learn.microsoft.com/en-us/advertising/guides/release-notes?view=bingads-13\u003e (seen 2026-10-08)\n- client libraries: \u003chttps://learn.microsoft.com/en-us/advertising/guides/client-libraries?view=bingads-13\u003e (seen 2026-10-08)\n- account hierarchy and user roles: \u003chttps://learn.microsoft.com/en-us/advertising/guides/account-hierarchy-permissions?view=bingads-13\u003e (seen 2026-10-08)\n- FAQ, reporting delay: \u003chttps://learn.microsoft.com/en-us/advertising/guides/faq?view=bingads-13\u003e (seen 2026-10-08)\n- MCP server setup: \u003chttps://learn.microsoft.com/en-us/advertising/guides/mcp-setup?view=bingads-13\u003e (seen 2026-10-08)\n- MCP server tools: \u003chttps://learn.microsoft.com/en-us/advertising/guides/mcp-tools?view=bingads-13\u003e (seen 2026-10-08)\n- AddCampaigns reference, REST URL and JSON: \u003chttps://learn.microsoft.com/en-us/advertising/campaign-management-service/addcampaigns?view=bingads-13\u003e (seen 2026-10-08)\n- web service addresses and WSDLs: \u003chttps://learn.microsoft.com/en-us/advertising/guides/web-service-addresses?view=bingads-13\u003e (seen 2026-10-08)\n- platform health blog: \u003chttps://status.ads.microsoft.com/\u003e (seen 2026-10-08)\n- platform health posts since 10 July 2026: \u003chttps://status.ads.microsoft.com/wp-json/wp/v2/posts?per_page=100\u0026after=2026-07-10T00:00:00\u003e (seen 2026-10-08)\n- Python SDK repository, tags, licence, CI and history: \u003chttps://github.com/BingAds/BingAds-Python-SDK\u003e (seen 2026-10-08)\n- msads on PyPI: \u003chttps://pypi.org/pypi/msads/json\u003e (seen 2026-10-08)\n- msads download counts: \u003chttps://pypistats.org/api/packages/msads/recent\u003e (seen 2026-10-08)\n- security.txt: \u003chttps://www.microsoft.com/.well-known/security.txt\u003e (seen 2026-10-08)\n- llms.txt (404): \u003chttps://learn.microsoft.com/llms.txt\u003e (seen 2026-10-08)\n\n## Who's behind it (provenance 90/100, checked 2026-10-08)\n\n| Check | Finding | Points |\n| --- | --- | --- |\n| Legal entity named | Microsoft Corporation | 20/20 |\n| Domain age | microsoft.com, registered 1991-05-02 (35 years) | 15/15 |\n| Endpoint on the vendor's domain | campaign.api.bingads.microsoft.com | 15/15 |\n| Terms of service | published, but our reader couldn't read it | 7/10 |\n| Privacy policy | read, states 8 of the 8 things a reader expects, and has 1 clause that costs points | 8/10 |\n| Status page | status.ads.microsoft.com | 10/10 |\n| Changelog | published | 10/10 |\n| security.txt | published but past its Expires date | 5/10 |\n\nThe 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.\n\nThe Microsoft Advertising Agreement link redirects to help.ads.microsoft.com, which renders only with JavaScript, so we couldn't read the terms.\n\nwww.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.\n\nads.microsoft.com/.well-known/security.txt redirects to a page-not-found error.\n\nRDAP for microsoft.com gives a registration date of 1991-05-02.\n\nThe status page is a WordPress blog whose posts are readable through its RSS feed and JSON API.\n\n### Terms and privacy, as read\n\nA reading by a fixed set of rules, each answered with the vendor's own sentence. Not legal advice.\n\n**Terms of service** (https://about.ads.microsoft.com/en/resources/policies/microsoft-advertising-agreement), read 2026-10-08. Our reader couldn't read it (the page has 53 words of text without a browser, so the document is drawn by script or sits elsewhere).\n\n\n**Privacy policy** (https://www.microsoft.com/en-us/privacy/privacystatement), read 2026-10-08, dated 2026-09-01, states 8 of the 8 things a reader expects.\n\n- To know. Says it may use customer content to train or improve models, and no opt-out was found (costs points). \"As part of our efforts to improve and develop our products, we may use your data to develop and train our AI models.\"\n- To know. Says it sells personal data or shares it for advertising. \"We also disclose personal data for digital advertising purposes.\"\n- Gives the date it was last updated. Last updated 2026-09-01.\n- Says how long data is kept. Names a period of 7 days.\n- Gives a privacy contact. Names a data protection officer.\n- Says where data is transferred or stored. Relies on standard contractual clauses.\n- Also in the text (2026-10-08). For enterprise and developer products, the customer's agreement with Microsoft takes precedence over this privacy statement where the two conflict. \"In the event of a conflict between our privacy statement and the terms of any agreement(s) between a customer and Microsoft for Enterprise and Developer Products, the terms of those agreement(s) will control.\"\n- Also in the text (2026-10-08). Prompts and related data sent to the consumer Microsoft Copilot are used to improve services and for relevant advertising. \"Microsoft Copilot also uses prompts and related data to provide and improve services, including relevant advertising.\"\n- Also in the text (2026-10-08). Microsoft staff manually review some results of its automated systems, including AI, against the source data. \"For example, to build, train, and improve the accuracy of our automated systems – such as AI - we manually review some of the results against the underlying data.\"\n\n## Live (updated 2026-10-08 18:21 UTC)\n\n- Right now: up, HTTP 404, 439 ms, checked 2026-10-08 18:20 UTC (get on `https://campaign.api.bingads.microsoft.com/CampaignManagement/v13`)\n- Uptime 24h 100.0% (33 probes) · 30 days 100.0% (33 probes) · p50 442 ms · p95 542 ms\n- Vendor status page: unknown, no machine-readable status found\n- github `BingAds/BingAds-Python-SDK` v13.0.30, released 2026-09-29\n- pypi `msads` 13.0.30, released 2026-09-30\n- security.txt: expired, expires 2026-09-23T16:00:00.000Z\n- Watching changelog \u003chttps://learn.microsoft.com/en-us/advertising/guides/release-notes?view=bingads-13\u003e\n- Watching terms \u003chttps://about.ads.microsoft.com/en/resources/policies/microsoft-advertising-agreement\u003e\n- Always current: https://www.anchorterminal.com/api/v1/live/microsoft-advertising-api.json\n\n## Probe metrics\n\nNot measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. Live uptime, where we poll the endpoint, is under Live and doesn't change the score.\n\n## Strengths\n\n- Sandbox with its own endpoints, a shared developer token (BBD37VB98) and sign-up that skips payment information. Ads created there are never served\n- REST with JSON on every operation page beside SOAP, and Learn returns any page as Markdown for `Accept: text/markdown`\n- Monthly dated release notes, and SDK 13.0.30 for .NET, Java, Python and PHP published on 29 September 2026\n- Viewer role is read-only, and a developer token adds no access beyond the signed-in user's role\n- Official MCP server in open beta with seven read-only tools, filters, sorting and page tokens\n\n## Weaknesses\n\n- 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- 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\n- One OAuth scope, `msads.manage`, covers reads and writes alike\n- 21 status posts tagged Reporting API between 20 July and 7 October 2026, all for delayed reporting data, one lasting six days\n- No idempotency key or validate-only mode found, so a retried add can create a duplicate\n\n## Before you call it (notes for agents)\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## Connect\n\nInstall:\n\n```bash\npip install msads\n```\n\nFirst request:\n\n```bash\ncurl -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}'\n```\n\nMCP client configuration:\n\n```json\n{\n  \"servers\": {\n    \"microsoft-ads-mcp\": {\n      \"oauth\": {\n        \"clientId\": \"\\u003cclient-id\\u003e\"\n      },\n      \"type\": \"http\",\n      \"url\": \"https://partner.api.bingads.microsoft.com/ext/mcp/vnext?toolSetNames=OpenBeta\"\n    }\n  }\n}\n```\n\nThrough letme (picks today, calling later): https://letme.dev/microsoft-advertising-api. letme answers with the pick and how to call it direct; calling through letme (one key, the vendor's own price) comes later. How it works: https://www.anchorterminal.com/letme/index.md\n\n## Similar tools\n\nRanked by shared capabilities, then score. Same-category tools with no shared capability key are listed last.\n\n| Tool | Grade | Score | Rank | Shared capabilities | x402 | Markdown |\n| --- | --- | --- | --- | --- | --- | --- |\n| Google Ads API | BB | 76.4 | 31 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | no | https://www.anchorterminal.com/tools/google-ads-api.md |\n| Meta Marketing API | B | 67.7 | 187 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | no | https://www.anchorterminal.com/tools/meta-marketing-api.md |\n| LinkedIn Marketing APIs | B | 62.4 | 304 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | no | https://www.anchorterminal.com/tools/linkedin-marketing-api.md |\n| Amazon Ads API | C | 59 | 388 | ads.reporting, ads.campaigns, ads.budgets, ads.audiences, ads.creatives | no | https://www.anchorterminal.com/tools/amazon-ads-api.md |\n\n## Panel reviews (0)\n\nReviewed by the Anchor panel (https://www.anchorterminal.com/reviewers/index.md): .\n\nDesk reviews, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. For a desk review, the outcome says whether the reviewer's questions could be answered from public material: success, partial or failure. How reviews work: https://www.anchorterminal.com/reviews/how-it-works.md\n\n## Notable\n\n- SOAP is supported through 31 January 2027 and is scheduled for full deprecation on that date. REST is the base for future API work, with migration guides for each SDK (source: \u003chttps://learn.microsoft.com/en-us/advertising/guides/migrate-to-rest?view=bingads-13\u003e)\n- The sandbox has separate credentials and endpoints, a universal developer token (BBD37VB98), a 20,000-row bulk upload limit and test report data for nine report types. Microsoft says it may be down for maintenance without notice (source: \u003chttps://learn.microsoft.com/en-us/advertising/guides/sandbox?view=bingads-13\u003e)\n- Campaign Management and Ad Insight calls are throttled per customer over a 60-second sliding window with error 117. The Bulk and Reporting limits are described as internal and subject to change (source: \u003chttps://learn.microsoft.com/en-us/advertising/guides/services-protocol?view=bingads-13\u003e)\n- An official MCP server at https://partner.api.bingads.microsoft.com/ext/mcp/vnext?toolSetNames=OpenBeta has seven read-only tools (GetAccounts, GetCampaigns, GetAdGroups, GetAds, GetKeywords, GetAssetGroups, GetAudienceAssociations) and needs the user's own Entra app registration (source: \u003chttps://learn.microsoft.com/en-us/advertising/guides/mcp-tools?view=bingads-13\u003e)\n- The platform health blog lists 40 posts from 20 July to 7 October 2026, 21 of them tagged Reporting API and all of those for delayed data. None is tagged Campaign Management, Bulk, Customer Management or Ad Insight API (source: \u003chttps://status.ads.microsoft.com/\u003e)\n- Clicks take up to two hours and conversions up to three to reach reports (source: \u003chttps://learn.microsoft.com/en-us/advertising/guides/faq?view=bingads-13\u003e)\n\n## Compare\n\n- [Amazon Ads API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-microsoft-advertising-api.md): C 59 vs C 60.3\n- [Google Ads API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/google-ads-api-vs-microsoft-advertising-api.md): BB 76.4 vs C 60.3\n- [LinkedIn Marketing APIs vs Microsoft Advertising API](https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-microsoft-advertising-api.md): B 62.4 vs C 60.3\n- [Meta Marketing API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/meta-marketing-api-vs-microsoft-advertising-api.md): B 67.7 vs C 60.3\n\n## Verify this listing\n\nFor the vendor. The badge or a plain link to this page verifies the listing, from a page on microsoft.com or one of its subdomains, or the README of github.com/BingAds/BingAds-Python-SDK. It shows the listing is the vendor's and that the vendor knows it's here, and it never changes a grade, rank or review. The vendor sends the page's address to `POST https://www.anchorterminal.com/api/v1/verify` as `{\"slug\": \"microsoft-advertising-api\", \"url\": \"…\"}`, or calls the `verify_listing` tool at https://www.anchorterminal.com/mcp. We fetch the page once, then again every week; two failed checks in a row and the verification lapses, and a later pass restores it. What we check: https://www.anchorterminal.com/builders/index.md#verify\n\nHTML badge:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/microsoft-advertising-api\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/microsoft-advertising-api.svg\" alt=\"Microsoft Advertising API on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e\n```\n\nMarkdown badge, for a README:\n\n```markdown\n[![Microsoft Advertising API on Anchor Terminal](https://www.anchorterminal.com/badges/microsoft-advertising-api.svg)](https://www.anchorterminal.com/tools/microsoft-advertising-api)\n```\n\nPlain link:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/microsoft-advertising-api\"\u003eMicrosoft Advertising API on Anchor Terminal\u003c/a\u003e\n```\n\n## Share this listing\n\nFor the vendor. Sharing assets for social media, two PNGs of 1200 × 630 that say Microsoft Advertising API is listed on Anchor Terminal, with the vendor's logo and this page's address and no grade or score.\n\n- Dark: https://www.anchorterminal.com/assets/share/microsoft-advertising-api-dark.png\n- Light: https://www.anchorterminal.com/assets/share/microsoft-advertising-api-light.png\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Advertising \u0026 campaign operations",
        "url": "https://www.anchorterminal.com/categories/advertising"
      },
      {
        "name": "Microsoft Advertising API",
        "url": ""
      }
    ],
    "description": "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.",
    "facts": [
      "rank #360 of 629",
      "OAuth auth",
      "0 desk reviews"
    ],
    "h1": "Microsoft Advertising API",
    "image": "https://www.anchorterminal.com/assets/og/tools-microsoft-advertising-api.png",
    "path": "/tools/microsoft-advertising-api",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Microsoft Advertising API review for AI agents, grade C (60.3/100)",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/tools/microsoft-advertising-api"
  },
  "tokens": {
    "markdown": 7500,
    "slim": 1680
  },
  "version": 1
}
