{
  "data": {
    "a": {
      "slug": "apple-ads",
      "name": "Apple Ads Platform API",
      "vendor": "Apple",
      "vendorUrl": "https://ads.apple.com",
      "kind": "http-api",
      "category": "advertising",
      "summary": "Apple's Ads Platform API creates and manages App Store and Apple Maps campaigns, ad groups, keywords, ads, creatives and budgets, and returns performance reports. Agents call REST endpoints at api.ads.apple.com/v1 with an OAuth 2 client credentials token.",
      "url": "https://www.anchorterminal.com/tools/apple-ads",
      "markdownUrl": "https://www.anchorterminal.com/tools/apple-ads.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/apple-ads.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/apple-ads.json",
      "repo": "https://github.com/apple/apple-ads-platform-api-python",
      "license": "Proprietary service under the Apple Advertising Services Terms of Service. The client libraries are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.ads.apple.com/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@apple/apple-ads-platform"
        },
        {
          "registry": "pypi",
          "name": "apple-ads-platform"
        }
      ],
      "auth": "oauth",
      "authNotes": "Access is self-serve for an advertiser. An account administrator invites a user with an API role, and that user uploads a public key in the Apple Ads interface and signs a JWT client secret with the private key. The OAuth 2 client credentials grant at appleid.apple.com returns a one-hour bearer token with the single scope `searchadsorg`. The role (read and write, or read only, account-wide or for one campaign group) limits what calls can do. A third-party provider acting for advertisers registers an OAuth 2 application with Apple by email.",
      "pricing": "free",
      "pricingNotes": "No fee for API access is stated in the docs, the help article or the terms. Ad spend is billed per tap up to a maximum the advertiser sets, and no rates or minimum are published. Apple advertises a 100 USD credit for eligible new App Store advertisers. No sandbox or test account was found, and whether an account needs a payment method before API use was not established (checked 2026-10-09).",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Apple Ads Platform API documentation or the Apple Advertising Services Terms of Service (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://developer.apple.com/documentation/apple-ads-platform-api",
      "capabilities": [
        "ads.reporting",
        "ads.campaigns",
        "ads.budgets",
        "ads.creatives"
      ],
      "tags": [
        "hosted",
        "free",
        "oauth",
        "sdk",
        "audit-log",
        "bug-bounty",
        "closed-source",
        "self-serve"
      ],
      "lastRelease": "2026-08-14",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 53.8,
        "grade": "D",
        "agentReady": false,
        "rank": 699,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 69,
          "maintenance": 48,
          "payments": 20,
          "reliability": 35,
          "schema": 69,
          "security": 68,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "Every response carries `RateLimit-*` headers and a 429 carries `Retry-After`, Apple maintains MIT client libraries in four languages, and read-only API roles exist. The API was first released in August 2026. No status page, SLA, published OpenAPI file, idempotency key or test account was found, and a person must create the credentials in the Apple Ads interface.",
        "bestFor": "An agent that manages or reports on App Store search campaigns, or Apple Maps campaigns, for an advertiser whose administrator can grant an API role.",
        "strengths": [
          "Every response carries `RateLimit-Limit`, `RateLimit-Remaining` and `RateLimit-Reset` headers, and a 429 adds `Retry-After`, with a sample backoff client in the docs",
          "Apple maintains client libraries for Swift, Python, Java and Node.js under the MIT licence, generated from its OpenAPI document and handling the token cycle",
          "API roles include API Account Read Only and a campaign group API Read Only role, so a reporting agent needs no write access",
          "Each documentation page links a Markdown twin at the same address with `.md`",
          "Change history endpoints return audit summaries and change detail records for entities in an ad account"
        ],
        "weaknesses": [
          "The Platform API was first released in August 2026 and its changelog has one entry. The Campaign Management API 5 it replaces is sunset on 26 January 2027",
          "No status page, incident history or SLA was found in the pages read, and the rate limit quota is given only in response headers",
          "The OpenAPI document the client libraries are generated from is not published, and developer.apple.com has no llms.txt",
          "No idempotency key, validate-only mode or test account was found. A PUT that includes an array replaces the whole array",
          "The terms let Apple use advertiser and campaign data to develop and train AI models, retain account data after use ends, and require written approval of any announcement about the services"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer {access_token}` and `X-AP-Context: adAccountId={adAccountId}` on every ad account call. Get the account id from `GET /v1/acls`",
          "Request a new access token every 3,600 seconds from `https://appleid.apple.com/auth/oauth2/token` with scope `searchadsorg`. The signed client secret lasts at most 180 days",
          "Read `RateLimit-Remaining` on each response. On a 429 wait the `Retry-After` seconds, then double the wait up to 16 seconds",
          "List and filter with POST to a `/query` endpoint, not GET with query parameters. Deleted entities return only when a filter asks for them",
          "On PUT send only the fields to change, and send the complete desired array for any array field. Create campaigns with `\"status\": \"PAUSED\"` before review"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 53.8
          }
        ],
        "editorialScores": {
          "ergonomics": 69,
          "maintenance": 48,
          "payments": 20,
          "reliability": 35,
          "schema": 69,
          "security": 68,
          "transparency": 49
        },
        "provenanceScore": 83
      },
      "connect": {
        "install": "npm install @apple/apple-ads-platform",
        "http": "curl \"https://api.ads.apple.com/v1/acls\" \\\n  -H \"Authorization: Bearer {access_token}\""
      },
      "letme": {
        "capability": "https://letme.dev/ads.reporting",
        "tool": "https://letme.dev/apple-ads"
      },
      "sameCompany": [
        "mlx-lm"
      ],
      "area": "communication",
      "provenance": {
        "legalEntity": "Apple Inc.",
        "domain": "apple.com",
        "domainRegistered": "1987-02-19",
        "endpointOnVendorDomain": true,
        "terms": "https://ads.apple.com/terms-of-service",
        "privacy": "https://www.apple.com/legal/privacy/",
        "statusPage": "",
        "changelog": "https://developer.apple.com/documentation/Apple-Ads-Platform-API/changelog-apple-ads-platform-api",
        "securityTxt": "valid",
        "checked": "2026-10-09",
        "notes": [
          "The Apple Advertising Services Terms of Service (effective 28 July 2026) govern the advertising services. They do not mention the API, and no separate API terms were found.",
          "The contracting entity is Apple Inc. for ad content served in the United States and Apple Distribution International Ltd. for most other locations, with other entities for Canada, Latin America, Japan, Australia and New Zealand, Southeast Asia and mainland China (Countries and Regions Specific Terms, 1 May 2026).",
          "The terms cite Apple's Privacy Policy at www.apple.com/privacy. The policy page at www.apple.com/legal/privacy/ is drawn by script and its text did not reach our reader. The Apple Advertising and Privacy notice (11 May 2026) was read.",
          "API calls go to https://api.ads.apple.com/v1 and token requests to https://appleid.apple.com/auth/oauth2/token. The documentation is at developer.apple.com.",
          "www.apple.com/.well-known/security.txt has Contact, Acknowledgments, Policy and Expires (2027-10-06) lines.",
          "No status page for Apple Ads was linked from the pages read.",
          "RDAP gives a registration date of 1987-02-19 for apple.com."
        ],
        "score": 83
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/apple-ads.json",
      "live": {
        "slug": "apple-ads",
        "probe": {
          "target": "https://api.ads.apple.com/v1",
          "method": "get",
          "lastAt": "2026-10-10T02:54:46.302868079Z",
          "lastOk": false,
          "lastStatus": 503,
          "lastMs": 486,
          "lastNote": "server error",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 115,
          "samples30d": 115,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 0
            },
            {
              "date": "2026-10-10",
              "probes": 30,
              "ok": 0
            }
          ],
          "outages": [
            {
              "start": "2026-10-09T15:42:56.297965171Z",
              "end": "0001-01-01T00:00:00Z",
              "note": "HTTP 503 server error"
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "apple/apple-ads-platform-api-python",
            "version": "v1.109.0",
            "released": "2026-08-14",
            "seenAt": "2026-10-09T16:40:00.215659958Z"
          },
          {
            "registry": "npm",
            "name": "@apple/apple-ads-platform",
            "version": "1.109.0",
            "seenAt": "2026-10-09T16:39:58.989527402Z"
          },
          {
            "registry": "pypi",
            "name": "apple-ads-platform",
            "version": "1.109.0",
            "released": "2026-08-14",
            "seenAt": "2026-10-09T16:40:00.003963299Z"
          }
        ],
        "githubStars": 32,
        "npmWeekly": 6024,
        "pypiWeekly": 394,
        "pages": [
          {
            "url": "https://developer.apple.com/documentation/Apple-Ads-Platform-API/changelog-apple-ads-platform-api",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:35:01.531863928Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e4a638dcba02"
          },
          {
            "url": "https://www.apple.com/legal/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:48:09.045163836Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "26c270f23c46"
          },
          {
            "url": "https://ads.apple.com/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:32:14.161112367Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6ab5918e07a0"
          }
        ],
        "updatedAt": "2026-10-10T02:54:46.302868079Z"
      }
    },
    "answer": "Microsoft Advertising API scores 60.3 (C) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 4 of 7 scored categories. Apple Ads Platform API leads on agent ergonomics and security \u0026 auth.",
    "b": {
      "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"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Apple",
        "b": "Microsoft",
        "name": "Vendor"
      },
      {
        "a": "https://api.ads.apple.com/v1",
        "b": "https://campaign.api.bingads.microsoft.com/CampaignManagement/v13",
        "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 under the Apple Advertising Services Terms of Service. The client libraries are MIT",
        "b": "Proprietary service. The .NET, Java, Python and PHP SDKs are MIT",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "7",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-08-14",
        "b": "2026-09-29",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "2026-09-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "128 stars, 19k PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Microsoft Advertising API scores 60.3 (C) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 4 of 7 scored categories. Apple Ads Platform API leads on agent ergonomics and security \u0026 auth.",
        "question": "Which is better for AI agents, Apple Ads Platform API or Microsoft Advertising API?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do Apple Ads Platform API and Microsoft Advertising API need an API key?"
      },
      {
        "answer": "Yes. Apple Ads Platform API has a hosted endpoint at https://api.ads.apple.com/v1 and Microsoft Advertising API at https://campaign.api.bingads.microsoft.com/CampaignManagement/v13.",
        "question": "Can an agent call Apple Ads Platform API and Microsoft Advertising API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 69 against 63",
          "Security \u0026 auth, 68 against 60"
        ],
        "also": null,
        "goodFor": "An agent that manages or reports on App Store search campaigns, or Apple Maps campaigns, for an advertiser whose administrator can grant an API role.",
        "slug": "apple-ads",
        "watchFor": "The Platform API was first released in August 2026 and its changelog has one entry. The Campaign Management API 5 it replaces is sunset on 26 January 2027"
      },
      {
        "aheadOn": [
          "Reliability, 60 against 35",
          "Schema \u0026 documentation, 79 against 69",
          "Payments \u0026 pricing, 30 against 20",
          "Maintenance \u0026 community, 61 against 48"
        ],
        "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"
      }
    ],
    "job": {
      "capability": "ads.reporting",
      "name": "Ad reporting"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-apple-ads.json",
        "title": "Amazon Ads API vs Apple Ads Platform API",
        "url": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-apple-ads"
      },
      {
        "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/apple-ads-vs-google-ads-api.json",
        "title": "Apple Ads Platform API vs Google Ads API",
        "url": "https://www.anchorterminal.com/compare/apple-ads-vs-google-ads-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api.json",
        "title": "Apple Ads Platform API vs LinkedIn Marketing APIs",
        "url": "https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api.json",
        "title": "Apple Ads Platform API vs Meta Marketing API",
        "url": "https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apple-ads-vs-snapchat-ads.json",
        "title": "Apple Ads Platform API vs Snapchat Ads API",
        "url": "https://www.anchorterminal.com/compare/apple-ads-vs-snapchat-ads"
      },
      {
        "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/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/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/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/microsoft-advertising-api-vs-x-ads.json",
        "title": "Microsoft Advertising API vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-x-ads"
      }
    ],
    "scores": [
      {
        "apple-ads": 35,
        "by": 25,
        "edge": "microsoft-advertising-api",
        "key": "reliability",
        "microsoft-advertising-api": 60,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "apple-ads": 69,
        "by": 10,
        "edge": "microsoft-advertising-api",
        "key": "schema",
        "microsoft-advertising-api": 79,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "apple-ads": 69,
        "by": 6,
        "edge": "apple-ads",
        "key": "ergonomics",
        "microsoft-advertising-api": 63,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "apple-ads": 68,
        "by": 8,
        "edge": "apple-ads",
        "key": "security",
        "microsoft-advertising-api": 60,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "apple-ads": 20,
        "by": 10,
        "edge": "microsoft-advertising-api",
        "key": "payments",
        "microsoft-advertising-api": 30,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "apple-ads": 48,
        "by": 13,
        "edge": "microsoft-advertising-api",
        "key": "maintenance",
        "microsoft-advertising-api": 61,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "apple-ads": 66,
        "by": 2,
        "edge": "apple-ads",
        "key": "transparency",
        "microsoft-advertising-api": 64,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Microsoft Advertising API scores 60.3 (C) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 4 of 7 scored categories. Apple Ads Platform API leads on agent ergonomics and security \u0026 auth. Both do ad reporting.",
    "verdicts": {
      "apple-ads": "Every response carries `RateLimit-*` headers and a 429 carries `Retry-After`, Apple maintains MIT client libraries in four languages, and read-only API roles exist. The API was first released in August 2026. No status page, SLA, published OpenAPI file, idempotency key or test account was found, and a person must create the credentials in the Apple Ads interface.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api",
    "json": "https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api.md",
    "slim": "https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api.min.md"
  },
  "markdown": "Microsoft Advertising API scores 60.3 (C) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 4 of 7 scored categories. Apple Ads Platform API leads on agent ergonomics and security \u0026 auth. Both do ad reporting.\n\n- Apple Ads Platform API: grade D, 53.8/100, rank #699 of 950. Markdown https://www.anchorterminal.com/tools/apple-ads.md · JSON https://www.anchorterminal.com/api/v1/tools/apple-ads.json\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- 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### Apple Ads Platform API (D)\n\nGood for: An agent that manages or reports on App Store search campaigns, or Apple Maps campaigns, for an advertiser whose administrator can grant an API role.\n\nAhead on:\n- Agent ergonomics, 69 against 63\n- Security \u0026 auth, 68 against 60\n\nWatch for: The Platform API was first released in August 2026 and its changelog has one entry. The Campaign Management API 5 it replaces is sunset on 26 January 2027\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- Reliability, 60 against 35\n- Schema \u0026 documentation, 79 against 69\n- Payments \u0026 pricing, 30 against 20\n- Maintenance \u0026 community, 61 against 48\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\n## Score by category\n\n| Category | Weight | Apple Ads Platform API | Microsoft Advertising API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 35 | 60 | Microsoft Advertising API +25 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 69 | 79 | Microsoft Advertising API +10 |\n| Agent ergonomics | 13% (16.2 this run) | 69 | 63 | Apple Ads Platform API +6 |\n| Security \u0026 auth | 14% (17.5 this run) | 68 | 60 | Apple Ads Platform API +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | 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) | 48 | 61 | Microsoft Advertising API +13 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 66 | 64 | Apple Ads Platform API +2 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **53.8 · D** | **60.3 · C** | |\n\n## Facts side by side\n\n| Fact | Apple Ads Platform API | Microsoft Advertising API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Apple | Microsoft |\n| Hosted endpoint | `https://api.ads.apple.com/v1` | `https://campaign.api.bingads.microsoft.com/CampaignManagement/v13` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth | OAuth |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Proprietary service under the Apple Advertising Services Terms of Service. The client libraries are MIT | Proprietary service. The .NET, Java, Python and PHP SDKs are MIT |\n| Tools exposed | none | 7 |\n| Read-only variant documented | no | yes |\n| llms.txt | no | no |\n| Last release | 2026-08-14 | 2026-09-29 |\n| Terms last updated | no date given | couldn't be read |\n| Privacy policy last updated | couldn't be read | 2026-09-01 |\n| Customer content may train models | yes | yes |\n| Terms restrict automated access | not found in the text | couldn't be read |\n| Terms restrict benchmarking | not found in the text | couldn't be read |\n| Terms or service can change without notice | not found in the text | couldn't be read |\n| Arbitration or class-action waiver | not found in the text | couldn't be read |\n| Popularity | none | 128 stars, 19k PyPI/wk |\n\n## Verdicts\n\n**Apple Ads Platform API.** Every response carries `RateLimit-*` headers and a 429 carries `Retry-After`, Apple maintains MIT client libraries in four languages, and read-only API roles exist. The API was first released in August 2026. No status page, SLA, published OpenAPI file, idempotency key or test account was found, and a person must create the credentials in the Apple Ads interface.\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## Before you call either\n\n### Apple Ads Platform API\n\n1. Send `Authorization: Bearer {access_token}` and `X-AP-Context: adAccountId={adAccountId}` on every ad account call. Get the account id from `GET /v1/acls`\n2. Request a new access token every 3,600 seconds from `https://appleid.apple.com/auth/oauth2/token` with scope `searchadsorg`. The signed client secret lasts at most 180 days\n3. Read `RateLimit-Remaining` on each response. On a 429 wait the `Retry-After` seconds, then double the wait up to 16 seconds\n4. List and filter with POST to a `/query` endpoint, not GET with query parameters. Deleted entities return only when a filter asks for them\n5. On PUT send only the fields to change, and send the complete desired array for any array field. Create campaigns with `\"status\": \"PAUSED\"` before review\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## Questions\n\n### Which is better for AI agents, Apple Ads Platform API or Microsoft Advertising API?\n\nMicrosoft Advertising API scores 60.3 (C) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 4 of 7 scored categories. Apple Ads Platform API leads on agent ergonomics and security \u0026 auth.\n\n### Do Apple Ads Platform API and Microsoft Advertising API need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call Apple Ads Platform API and Microsoft Advertising API without installing anything?\n\nYes. Apple Ads Platform API has a hosted endpoint at https://api.ads.apple.com/v1 and Microsoft Advertising API at https://campaign.api.bingads.microsoft.com/CampaignManagement/v13.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api.json, and with the fewest tokens: https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"apple-ads\", \"b\": \"microsoft-advertising-api\"}`. From a terminal: `anchor compare apple-ads microsoft-advertising-api`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/apple-ads.json and https://www.anchorterminal.com/api/v1/tools/microsoft-advertising-api.json\n\n## Other comparisons with Apple Ads Platform API or Microsoft Advertising API\n\n- [Amazon Ads API vs Apple Ads Platform API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-apple-ads.md)\n- [Amazon Ads API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-microsoft-advertising-api.md)\n- [Apple Ads Platform API vs Google Ads API](https://www.anchorterminal.com/compare/apple-ads-vs-google-ads-api.md)\n- [Apple Ads Platform API vs LinkedIn Marketing APIs](https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api.md)\n- [Apple Ads Platform API vs Meta Marketing API](https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api.md)\n- [Apple Ads Platform API vs Snapchat Ads API](https://www.anchorterminal.com/compare/apple-ads-vs-snapchat-ads.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- [LinkedIn Marketing APIs vs Microsoft Advertising API](https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-microsoft-advertising-api.md)\n- [Meta Marketing API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/meta-marketing-api-vs-microsoft-advertising-api.md)\n- [Microsoft Advertising API vs Snapchat Ads API](https://www.anchorterminal.com/compare/microsoft-advertising-api-vs-snapchat-ads.md)\n- [Microsoft Advertising API vs X Ads API](https://www.anchorterminal.com/compare/microsoft-advertising-api-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": "Apple Ads Platform API vs Microsoft Advertising API",
        "url": ""
      }
    ],
    "description": "Microsoft Advertising scores 60.3 (C) to Apple Ads Platform's 53.8 (D) for ad reporting. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Apple Ads Platform API D 53.8",
      "Microsoft Advertising API C 60.3",
      "scores"
    ],
    "h1": "Apple Ads Platform API vs Microsoft Advertising API",
    "image": "https://www.anchorterminal.com/assets/og/compare-apple-ads-vs-microsoft-advertising-api.png",
    "path": "/compare/apple-ads-vs-microsoft-advertising-api",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Apple Ads Platform vs Microsoft Advertising for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api"
  },
  "tokens": {
    "markdown": 2450,
    "slim": 730
  },
  "version": 1
}
