{
  "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-10T03:53:18.974563937Z",
          "lastOk": false,
          "lastStatus": 503,
          "lastMs": 482,
          "lastNote": "server error",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 125,
          "samples30d": 125,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 0
            },
            {
              "date": "2026-10-10",
              "probes": 40,
              "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-10T03:53:18.974563937Z"
      }
    },
    "answer": "Meta Marketing API scores 67.7 (B) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 6 of 7 scored categories. Apple Ads Platform API leads on security \u0026 auth.",
    "b": {
      "slug": "meta-marketing-api",
      "name": "Meta Marketing API",
      "vendor": "Meta Platforms, Inc.",
      "vendorUrl": "https://developers.facebook.com",
      "kind": "http-api",
      "category": "advertising",
      "summary": "Meta's Marketing API creates and manages campaigns, ad sets, ads, creatives and audiences across Facebook, Instagram, Messenger and WhatsApp, and reports performance through Ads Insights. It is a versioned Graph API with OAuth access tokens.",
      "url": "https://www.anchorterminal.com/tools/meta-marketing-api",
      "markdownUrl": "https://www.anchorterminal.com/tools/meta-marketing-api.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/meta-marketing-api.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/meta-marketing-api.json",
      "repo": "https://github.com/facebook/facebook-python-business-sdk",
      "license": "Proprietary service under the Meta Platform Terms. The Business SDKs and the codegen specs on GitHub carry Meta's own platform licence, which allows use only with Meta's APIs",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://graph.facebook.com",
      "packages": [
        {
          "registry": "pypi",
          "name": "facebook-business"
        },
        {
          "registry": "npm",
          "name": "facebook-nodejs-business-sdk"
        },
        {
          "registry": "pypi",
          "name": "meta-ads"
        }
      ],
      "auth": "oauth",
      "authNotes": "Every call needs an access token from a Meta developer app with the Marketing API product added. Access is self-serve at the Limited tier. A user token comes from the Facebook Login OAuth dialogue with the `ads_read` or `ads_management` scope, and a system user token, created in Meta Business Suite, doesn't expire. Managing ad accounts owned by other businesses needs advanced access to those permissions through App Review, and business verification may be required. Full access (higher rate limits and the Business Manager API) is granted from the App Dashboard after 500 successful calls in 15 days with an error rate under 15 per cent.",
      "pricing": "free",
      "pricingNotes": "No charge for API calls was found in the Platform Terms or the Marketing API documentation. Access tiers differ by rate limit, and ad spend is billed to the ad account. An agent can start without a contract. Limited access is automatic when the Marketing API product is added to an app, and a sandbox ad account takes read and write calls with no funding source (checked 2026-10-08).",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Marketing API documentation, the llms.txt indexes or the Platform Terms (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 1604,
        "npmWeekly": 500852,
        "pypiWeekly": 1089043,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.facebook.com/docs/marketing-apis/",
      "llmsTxt": "https://developers.facebook.com/documentation/ads-commerce/llms.txt",
      "capabilities": [
        "ads.reporting",
        "ads.campaigns",
        "ads.budgets",
        "ads.audiences",
        "ads.creatives"
      ],
      "tags": [
        "hosted",
        "free",
        "oauth",
        "app-review",
        "sandbox",
        "mcp",
        "cli",
        "llms-txt",
        "python",
        "typescript",
        "php",
        "ruby",
        "java",
        "status-page",
        "bug-bounty"
      ],
      "lastRelease": "2026-09-21",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.7,
        "grade": "B",
        "agentReady": false,
        "rank": 243,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 77,
          "maintenance": 74,
          "payments": 30,
          "reliability": 80,
          "schema": 76,
          "security": 61,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Reporting, campaign, budget, audience and creative endpoints sit behind `ads_read` and `ads_management` scopes, with a `validate_only` option and sandbox ad accounts for checking a change before it spends. New apps are held to a score of 60 per ad account, with a 300-second block at the limit, and the documented requests pass the access token as a parameter.",
        "bestFor": "The direct route to Facebook, Instagram, Messenger, WhatsApp and Threads advertising for reporting, campaign and budget changes, audiences and creatives.",
        "strengths": [
          "`execution_options=validate_only` runs the validation rules on a campaign write without performing it, and sandbox ad accounts accept writes with no funding source",
          "`ads_read` is a read-only scope, and system users hold only the ad accounts, Pages and catalogues assigned to them",
          "llms.txt indexes and a Markdown copy of every guide and reference page, with a section of rules for AI agents",
          "Rate limits are published with numbers per tier, with usage headers that estimate the time until access returns",
          "Breaking changes ship only in numbered versions with at least 90 days' notice, and v26.0 followed on 29 July 2026"
        ],
        "weaknesses": [
          "Default Limited access allows a score of 60 per ad account (read 1, write 3) and blocks for 300 seconds at the limit",
          "The documented request style passes `access_token` as a request parameter, and system user tokens don't expire",
          "No idempotency key was found in the reviewed documentation, so a retried create can make a second campaign",
          "npm's `facebook-nodejs-business-sdk` is still 24.0.1 from 21 November 2025, while GitHub is at v26.0.2 and v24.0 expired on 6 October 2026",
          "The Marketing API changelog and versioning pages still name v25.0 as current, ten weeks after v26.0"
        ],
        "agentNotes": [
          "Put a version in every path, such as /v26.0/act_\u003cAD_ACCOUNT_ID\u003e/campaigns. Unversioned Marketing API calls fail",
          "Create campaigns, ad sets and ads with `status=PAUSED`, and send `execution_options=[\"validate_only\"]` first to test a write without making it",
          "Ask for `ads_read` alone when the task is reporting. `ads_management` can change budgets and activate spend",
          "Read `X-Business-Use-Case-Usage` and `X-Ad-Account-Usage` after each call and wait for `estimated_time_to_regain_access` on errors 17, 613 and 80004",
          "Change an ad set budget at most four times an hour and an account spending limit at most ten times a day"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.7
          }
        ],
        "editorialScores": {
          "ergonomics": 77,
          "maintenance": 74,
          "payments": 30,
          "reliability": 80,
          "schema": 76,
          "security": 61,
          "transparency": 41
        },
        "provenanceScore": 94
      },
      "connect": {
        "install": "pip install facebook_business",
        "http": "curl -G \\\n  -d \"access_token=\u003cACCESS_TOKEN\u003e\" \\\n  \"https://graph.facebook.com/v25.0/me/adaccounts\"",
        "claudeCode": "claude mcp add --transport http --client-id \u003cMETA_APP_ID\u003e meta-ads https://mcp.facebook.com/ads"
      },
      "letme": {
        "capability": "https://letme.dev/ads.reporting",
        "tool": "https://letme.dev/meta-marketing-api"
      },
      "sameCompany": [
        "whatsapp-cloud-api"
      ],
      "area": "communication",
      "provenance": {
        "legalEntity": "Meta Platforms, Inc.",
        "domain": "facebook.com",
        "domainRegistered": "1997-03-29",
        "endpointOnVendorDomain": true,
        "terms": "https://developers.facebook.com/terms",
        "privacy": "https://www.facebook.com/privacy/policy/",
        "statusPage": "https://metastatus.com",
        "changelog": "https://developers.facebook.com/documentation/ads-commerce/marketing-api/marketing-api-changelog",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The Meta Platform Terms (last updated 3 February 2026) name Meta Platforms, Inc. for UK data transfers and Meta Platforms Ireland Limited as controller of EEA data.",
          "The API answers at graph.facebook.com and the Ads MCP server at mcp.facebook.com, both facebook.com subdomains.",
          "www.facebook.com/.well-known/security.txt names a contact, the bug bounty policy at bugbounty.meta.com and a vulnerability disclosure policy, and expires on 7 November 2026. developers.facebook.com has no security.txt of its own.",
          "RDAP for facebook.com gives a registration date of 1997-03-29.",
          "The privacy policy and the data processing terms on facebook.com render only with JavaScript, so their text wasn't read.",
          "The Marketing API changelog page still shows v25.0 as the latest version. The Graph API changelog and the v26.0 changelog page show v26.0 from 29 July 2026."
        ],
        "score": 94
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/meta-marketing-api.json",
      "live": {
        "slug": "meta-marketing-api",
        "probe": {
          "target": "https://graph.facebook.com",
          "method": "get",
          "lastAt": "2026-10-10T03:53:34.365815389Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 127,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 127,
          "p95ms24h": 180,
          "samples24h": 249,
          "samples30d": 383,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 40,
              "ok": 40
            }
          ]
        },
        "vendorStatus": {
          "page": "https://metastatus.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-10T00:50:48.085600167Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "facebook/facebook-python-business-sdk",
            "version": "26.0.2",
            "released": "2026-09-21",
            "seenAt": "2026-10-09T17:05:06.367506366Z"
          },
          {
            "registry": "npm",
            "name": "facebook-nodejs-business-sdk",
            "version": "24.0.1",
            "seenAt": "2026-10-09T17:05:04.481232157Z"
          },
          {
            "registry": "pypi",
            "name": "facebook-business",
            "version": "26.0.2",
            "released": "2026-09-21",
            "seenAt": "2026-10-09T17:05:04.289808496Z"
          },
          {
            "registry": "pypi",
            "name": "meta-ads",
            "version": "1.2.0",
            "released": "2026-09-29",
            "seenAt": "2026-10-09T17:05:05.318261432Z"
          }
        ],
        "githubStars": 1605,
        "npmWeekly": 405163,
        "pypiWeekly": 1084992,
        "securityTxt": {
          "url": "https://facebook.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2026-11-08T07:40:25-08:00",
          "checkedAt": "2026-10-09T15:40:24.746158975Z"
        },
        "llmsTxt": {
          "url": "https://developers.facebook.com/documentation/ads-commerce/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-09T14:02:17.714523845Z"
        },
        "pages": [
          {
            "url": "https://developers.facebook.com/documentation/ads-commerce/marketing-api/marketing-api-changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:35:40.938555035Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f3469d786112"
          },
          {
            "url": "https://www.facebook.com/privacy/policy/",
            "kind": "privacy",
            "status": 0,
            "checkedAt": "2026-10-09T18:50:02.423108259Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "blockedByRobots": true
          },
          {
            "url": "https://developers.facebook.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:35:45.248331142Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b317e3abcc1f"
          }
        ],
        "updatedAt": "2026-10-10T03:53:34.365815389Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Apple",
        "b": "Meta Platforms, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.ads.apple.com/v1",
        "b": "https://graph.facebook.com",
        "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 under the Meta Platform Terms. The Business SDKs and the codegen specs on GitHub carry Meta's own platform licence, which allows use only with Meta's APIs",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-08-14",
        "b": "2026-09-21",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-02-03",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "1.6k stars, 501k npm/wk, 1.1M PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Meta Marketing API scores 67.7 (B) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 6 of 7 scored categories. Apple Ads Platform API leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Apple Ads Platform API or Meta Marketing API?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do Apple Ads Platform API and Meta Marketing API need an API key?"
      },
      {
        "answer": "Yes. Apple Ads Platform API has a hosted endpoint at https://api.ads.apple.com/v1 and Meta Marketing API at https://graph.facebook.com.",
        "question": "Can an agent call Apple Ads Platform API and Meta Marketing API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 68 against 61"
        ],
        "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, 80 against 35",
          "Schema \u0026 documentation, 76 against 69",
          "Agent ergonomics, 77 against 69",
          "Payments \u0026 pricing, 30 against 20",
          "Maintenance \u0026 community, 74 against 48"
        ],
        "also": null,
        "goodFor": "The direct route to Facebook, Instagram, Messenger, WhatsApp and Threads advertising for reporting, campaign and budget changes, audiences and creatives.",
        "slug": "meta-marketing-api",
        "watchFor": "Default Limited access allows a score of 60 per ad account (read 1, write 3) and blocks for 300 seconds at the limit"
      }
    ],
    "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-meta-marketing-api.json",
        "title": "Amazon Ads API vs Meta Marketing API",
        "url": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-meta-marketing-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-microsoft-advertising-api.json",
        "title": "Apple Ads Platform API vs Microsoft Advertising API",
        "url": "https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apple-ads-vs-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-meta-marketing-api.json",
        "title": "Google Ads API vs Meta Marketing API",
        "url": "https://www.anchorterminal.com/compare/google-ads-api-vs-meta-marketing-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-meta-marketing-api.json",
        "title": "LinkedIn Marketing APIs vs Meta Marketing API",
        "url": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-meta-marketing-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/meta-marketing-api-vs-snapchat-ads.json",
        "title": "Meta Marketing API vs Snapchat Ads API",
        "url": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-snapchat-ads"
      },
      {
        "json": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-x-ads.json",
        "title": "Meta Marketing API vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/meta-marketing-api-vs-x-ads"
      }
    ],
    "scores": [
      {
        "apple-ads": 35,
        "by": 45,
        "edge": "meta-marketing-api",
        "key": "reliability",
        "meta-marketing-api": 80,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "apple-ads": 69,
        "by": 7,
        "edge": "meta-marketing-api",
        "key": "schema",
        "meta-marketing-api": 76,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "apple-ads": 69,
        "by": 8,
        "edge": "meta-marketing-api",
        "key": "ergonomics",
        "meta-marketing-api": 77,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "apple-ads": 68,
        "by": 7,
        "edge": "apple-ads",
        "key": "security",
        "meta-marketing-api": 61,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "apple-ads": 20,
        "by": 10,
        "edge": "meta-marketing-api",
        "key": "payments",
        "meta-marketing-api": 30,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "apple-ads": 48,
        "by": 26,
        "edge": "meta-marketing-api",
        "key": "maintenance",
        "meta-marketing-api": 74,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "apple-ads": 66,
        "by": 2,
        "edge": "meta-marketing-api",
        "key": "transparency",
        "meta-marketing-api": 68,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Meta Marketing API scores 67.7 (B) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 6 of 7 scored categories. Apple Ads Platform API leads on 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.",
      "meta-marketing-api": "Reporting, campaign, budget, audience and creative endpoints sit behind `ads_read` and `ads_management` scopes, with a `validate_only` option and sandbox ad accounts for checking a change before it spends. New apps are held to a score of 60 per ad account, with a 300-second block at the limit, and the documented requests pass the access token as a parameter."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api",
    "json": "https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api.md",
    "slim": "https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api.min.md"
  },
  "markdown": "Meta Marketing API scores 67.7 (B) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 6 of 7 scored categories. Apple Ads Platform API leads on 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- Meta Marketing API: grade B, 67.7/100, rank #243 of 950. Markdown https://www.anchorterminal.com/tools/meta-marketing-api.md · JSON https://www.anchorterminal.com/api/v1/tools/meta-marketing-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- Security \u0026 auth, 68 against 61\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### Meta Marketing API (B)\n\nGood for: The direct route to Facebook, Instagram, Messenger, WhatsApp and Threads advertising for reporting, campaign and budget changes, audiences and creatives.\n\nAhead on:\n- Reliability, 80 against 35\n- Schema \u0026 documentation, 76 against 69\n- Agent ergonomics, 77 against 69\n- Payments \u0026 pricing, 30 against 20\n- Maintenance \u0026 community, 74 against 48\n\nWatch for: Default Limited access allows a score of 60 per ad account (read 1, write 3) and blocks for 300 seconds at the limit\n\n\n## Score by category\n\n| Category | Weight | Apple Ads Platform API | Meta Marketing API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 35 | 80 | Meta Marketing API +45 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 69 | 76 | Meta Marketing API +7 |\n| Agent ergonomics | 13% (16.2 this run) | 69 | 77 | Meta Marketing API +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 68 | 61 | Apple Ads Platform API +7 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | Meta Marketing API +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 48 | 74 | Meta Marketing API +26 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 66 | 68 | Meta Marketing API +2 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **53.8 · D** | **67.7 · B** | |\n\n## Facts side by side\n\n| Fact | Apple Ads Platform API | Meta Marketing API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Apple | Meta Platforms, Inc. |\n| Hosted endpoint | `https://api.ads.apple.com/v1` | `https://graph.facebook.com` |\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 under the Meta Platform Terms. The Business SDKs and the codegen specs on GitHub carry Meta's own platform licence, which allows use only with Meta's APIs |\n| Read-only variant documented | no | yes |\n| llms.txt | no | yes |\n| Last release | 2026-08-14 | 2026-09-21 |\n| Terms last updated | no date given | 2026-02-03 |\n| Privacy policy last updated | couldn't be read | couldn't be read |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | none | 1.6k stars, 501k npm/wk, 1.1M 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**Meta Marketing API.** Reporting, campaign, budget, audience and creative endpoints sit behind `ads_read` and `ads_management` scopes, with a `validate_only` option and sandbox ad accounts for checking a change before it spends. New apps are held to a score of 60 per ad account, with a 300-second block at the limit, and the documented requests pass the access token as a parameter.\n\n## 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### Meta Marketing API\n\n1. Put a version in every path, such as /v26.0/act_\u003cAD_ACCOUNT_ID\u003e/campaigns. Unversioned Marketing API calls fail\n2. Create campaigns, ad sets and ads with `status=PAUSED`, and send `execution_options=[\"validate_only\"]` first to test a write without making it\n3. Ask for `ads_read` alone when the task is reporting. `ads_management` can change budgets and activate spend\n4. Read `X-Business-Use-Case-Usage` and `X-Ad-Account-Usage` after each call and wait for `estimated_time_to_regain_access` on errors 17, 613 and 80004\n5. Change an ad set budget at most four times an hour and an account spending limit at most ten times a day\n\n## Questions\n\n### Which is better for AI agents, Apple Ads Platform API or Meta Marketing API?\n\nMeta Marketing API scores 67.7 (B) on agent readiness against Apple Ads Platform API's 53.8 (D), and leads in 6 of 7 scored categories. Apple Ads Platform API leads on security \u0026 auth.\n\n### Do Apple Ads Platform API and Meta Marketing API need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call Apple Ads Platform API and Meta Marketing API without installing anything?\n\nYes. Apple Ads Platform API has a hosted endpoint at https://api.ads.apple.com/v1 and Meta Marketing API at https://graph.facebook.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api.json, and with the fewest tokens: https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"apple-ads\", \"b\": \"meta-marketing-api\"}`. From a terminal: `anchor compare apple-ads meta-marketing-api`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/apple-ads.json and https://www.anchorterminal.com/api/v1/tools/meta-marketing-api.json\n\n## Other comparisons with Apple Ads Platform API or Meta Marketing 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 Meta Marketing API](https://www.anchorterminal.com/compare/amazon-ads-api-vs-meta-marketing-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 Microsoft Advertising API](https://www.anchorterminal.com/compare/apple-ads-vs-microsoft-advertising-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 Meta Marketing API](https://www.anchorterminal.com/compare/google-ads-api-vs-meta-marketing-api.md)\n- [LinkedIn Marketing APIs vs Meta Marketing API](https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-meta-marketing-api.md)\n- [Meta Marketing API vs Microsoft Advertising API](https://www.anchorterminal.com/compare/meta-marketing-api-vs-microsoft-advertising-api.md)\n- [Meta Marketing API vs Snapchat Ads API](https://www.anchorterminal.com/compare/meta-marketing-api-vs-snapchat-ads.md)\n- [Meta Marketing API vs X Ads API](https://www.anchorterminal.com/compare/meta-marketing-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 Meta Marketing API",
        "url": ""
      }
    ],
    "description": "Meta Marketing scores 67.7 (B) 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",
      "Meta Marketing API B 67.7",
      "scores"
    ],
    "h1": "Apple Ads Platform API vs Meta Marketing API",
    "image": "https://www.anchorterminal.com/assets/og/compare-apple-ads-vs-meta-marketing-api.png",
    "path": "/compare/apple-ads-vs-meta-marketing-api",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Apple Ads Platform vs Meta Marketing for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/apple-ads-vs-meta-marketing-api"
  },
  "tokens": {
    "markdown": 2450,
    "slim": 680
  },
  "version": 1
}
