# Apple Ads Platform API (slim) > 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. - Full: https://www.anchorterminal.com/tools/apple-ads.md (~8,100 tokens) · this version ~1,930 tokens · JSON https://www.anchorterminal.com/tools/apple-ads.json · canonical https://www.anchorterminal.com/tools/apple-ads - Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · Updated: 2026-10-10 **D · 53.8/100 · rank #699 of 950 · #7 in Advertising & campaign operations · not agent-ready · confidence medium** Assessment: 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. ## Facts - Kind: HTTP API · vendor: Apple · category: Advertising & campaign operations · legal entity: Apple Inc. · provenance 83/100 - Endpoint: `https://api.ads.apple.com/v1` (HTTP) - Auth: OAuth · pricing: Free · x402: no · licence: Proprietary service under the Apple Advertising Services Terms of Service. The client libraries are MIT - Probe metrics: not measured yet (probes haven't run) - Surface graded: The Apple Ads Platform API 1.0 at https://api.ads.apple.com/v1, released in August 2026. The lead named the Campaign Management API 5 at api.searchads.apple.com/api/v5, which is deprecated and sunset on 26 January 2027 - Access: An account administrator invites a user with an API role in Account Settings. The API user uploads a public key in the API tab and receives a `clientId`, `teamId` and `keyId`. A third-party provider registers an OAuth 2 application with Apple by email - Credentials: OAuth 2 client credentials grant at appleid.apple.com. The client secret is a JWT signed with ES256 by the user's P-256 private key, valid for at most 180 days. Access tokens last 3,600 seconds. One scope, `searchadsorg` - Roles: API Account Manager (read and write), API Account Read Only, and for a campaign group API Read & Write and API Read Only. `GET /v1/acls` returns the caller's ad accounts and roles - Rate limits: `RateLimit-Limit`, `RateLimit-Remaining` and `RateLimit-Reset` on every response. HTTP 429 `rate_limit_exceeded` adds `Retry-After`. No fixed quota is stated in the docs - Queries: POST to `/v1/{entity}/query` with `filters`, `sorting` and `pagination` (`offset`, `pageSize`, `fetchTotalCount`). Default sort is by ID ascending - Writes: PUT changes only the fields sent, except arrays, which are replaced whole. Bulk keyword endpoints take `items` with a `correlationId` each and `allowPartialSuccess` - Errors: `error.code`, `error.message` and `error.details[]` with a code, message and field. Documented HTTP codes are 400, 401, 403, 404, 429 and 500 - Audit: Change history endpoints return audit summaries and change detail records for entities in an ad account - Versioning: Version in the path (`/v1`). The Platform API changelog has one entry, 1.0 in August 2026. The earlier API's changelog runs from 5.0 in May 2024 to 5.6 in June 2026, dated by month - Clients: Swift, Python, Java and Node.js libraries in the `apple` GitHub organisation, MIT licence. `@apple/apple-ads-platform` on npm and `apple-ads-platform` on PyPI, both at 1.109.0. The Python library needs Python 3.12 or newer - Docs for agents: Each page links a Markdown twin (`.md`). developer.apple.com/llms.txt answers 404. No OpenAPI file is published - Status: No status page for Apple Ads was linked from the documentation or help pages read - Pricing: No API fee is stated. Ads are billed per tap up to a maximum the advertiser sets. Apple advertises a 100 USD credit for eligible new App Store advertisers and 150 USD for eligible new Apple Maps customers - Security programme: security.txt at www.apple.com expires 6 October 2027 and points to security.apple.com and the Apple Security Bounty guidelines - Scores: Reliability 35, Performance pending, Schema & documentation 69, Agent ergonomics 69, Security & auth 68, Payments & pricing 20, Task success pending, Maintenance & community 48, Transparency & trust 66 · total over the 7 assessed categories - Why: Reliability, Read with the hosted lines, grading the Platform API 1.0. No status page for Apple Ads was linked from the documentation or help pages read… · Schema & documentation, The four client libraries are generated from an OpenAPI document (Apple Ads API Combined Specification 1.0.0) that Apple does not publish. · Agent ergonomics, Queries take `pageSize`, `offset` and filters. · Security & auth, OAuth 2 client credentials with a client secret the user signs (ES256, at most 180 days) and one-hour access tokens. · Payments & pricing, No x402, MPP or L402 (0). · Maintenance & community, The Platform API changelog dates 1.0 to August 2026, and the client libraries are tagged v1.109.0 on 14 August 2026, 56 days before the chec… · Transparency & trust, Editorial half only. - Sources: 25, open questions: 11, both in the full twin - Capabilities: ads.reporting, ads.campaigns, ads.budgets, ads.creatives - JSON: https://www.anchorterminal.com/api/v1/tools/apple-ads.json - Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/apple-ads.svg` or a link to https://www.anchorterminal.com/tools/apple-ads from a page on apple.com or one of its subdomains, or the README of github.com/apple/apple-ads-platform-api-python, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin. ## Before you call it 1. Send `Authorization: Bearer {access_token}` and `X-AP-Context: adAccountId={adAccountId}` on every ad account call. Get the account id from `GET /v1/acls` 2. 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 3. Read `RateLimit-Remaining` on each response. On a 429 wait the `Retry-After` seconds, then double the wait up to 16 seconds 4. List and filter with POST to a `/query` endpoint, not GET with query parameters. Deleted entities return only when a filter asks for them 5. 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 ## Connect ```bash npm install @apple/apple-ads-platform ``` ```bash curl "https://api.ads.apple.com/v1/acls" \ -H "Authorization: Bearer {access_token}" ``` Full config and headless snippets are in the full page. Through letme (picks today, calling later): https://letme.dev/apple-ads ## Similar tools | Tool | Grade | Score | Shared capabilities | Slim | | --- | --- | --- | --- | --- | | Google Ads API | BB | 76.4 | ads.reporting, ads.campaigns, ads.budgets, ads.creatives | https://www.anchorterminal.com/tools/google-ads-api.min.md | | Meta Marketing API | B | 67.7 | ads.reporting, ads.campaigns, ads.budgets, ads.creatives | https://www.anchorterminal.com/tools/meta-marketing-api.min.md | | LinkedIn Marketing APIs | B | 62.4 | ads.reporting, ads.campaigns, ads.budgets, ads.creatives | https://www.anchorterminal.com/tools/linkedin-marketing-api.min.md | | Microsoft Advertising API | C | 60.3 | ads.reporting, ads.campaigns, ads.budgets, ads.creatives | https://www.anchorterminal.com/tools/microsoft-advertising-api.min.md | | Amazon Ads API | C | 59 | ads.reporting, ads.campaigns, ads.budgets, ads.creatives | https://www.anchorterminal.com/tools/amazon-ads-api.min.md | ## Panel reviews (0, desk reviews from public material, no calls made)