{
  "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": "LinkedIn Marketing APIs scores 62.4 (B) 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.",
    "b": {
      "slug": "linkedin-marketing-api",
      "name": "LinkedIn Marketing APIs",
      "vendor": "LinkedIn Corporation",
      "vendorUrl": "https://www.linkedin.com",
      "kind": "http-api",
      "category": "advertising",
      "summary": "LinkedIn's advertising APIs for campaign management, performance reporting, matched audiences, conversions and lead sync. Agents call versioned REST endpoints at api.linkedin.com/rest with a member's OAuth token, after LinkedIn approves the developer application.",
      "url": "https://www.anchorterminal.com/tools/linkedin-marketing-api",
      "markdownUrl": "https://www.anchorterminal.com/tools/linkedin-marketing-api.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/linkedin-marketing-api.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/linkedin-marketing-api.json",
      "license": "Proprietary service under the LinkedIn API terms of use and the Marketing API terms. The beta Python and JavaScript clients carry LinkedIn's API development software licence",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "linkedin-api-client"
        },
        {
          "registry": "npm",
          "name": "linkedin-api-client"
        }
      ],
      "auth": "oauth",
      "authNotes": "Access is by application review. A person creates a LinkedIn Page and a developer application, applies for the Advertising API and completes LinkedIn's vetting. Calls then use a member's three-legged OAuth 2.0 token with scopes such as r_ads, r_ads_reporting and rw_ads. Two-legged OAuth is not available for Marketing APIs. Access tokens last 60 days. The member also needs a role on the ad account, and Development tier limits edits to five ad accounts until LinkedIn approves Standard tier.",
      "pricing": "free",
      "pricingNotes": "No fee for API access was found in the docs or terms, and no price page exists. Ad spend is set by campaign budgets and billed to the ad account. An agent can start without a contract on Development tier, where one test ad account needs no payment details and its campaigns are never served or billed (checked 2026-10-08).",
      "priceSummary": "Free",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Marketing API documentation or the API terms (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 25354,
        "pypiWeekly": 385632,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://learn.microsoft.com/en-us/linkedin/marketing/",
      "capabilities": [
        "ads.reporting",
        "ads.campaigns",
        "ads.budgets",
        "ads.audiences",
        "ads.creatives"
      ],
      "tags": [
        "hosted",
        "free",
        "oauth",
        "app-review",
        "versioned",
        "test-account",
        "status-page",
        "bug-bounty",
        "closed-source",
        "python",
        "javascript"
      ],
      "lastRelease": "2026-09-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.4,
        "grade": "B",
        "agentReady": false,
        "rank": 434,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 64,
          "payments": 30,
          "reliability": 66,
          "schema": 66,
          "security": 66,
          "transparency": 84
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Monthly API versions are each supported for at least a year, with dated sunsets and a changelog, and a test ad account lets an agent create campaigns that are never served or billed. Access needs LinkedIn's approval and a member's OAuth consent, standard rate limits are not published, and no OpenAPI specification was found.",
        "bestFor": "An agent that reports on and manages LinkedIn campaigns for accounts its operator administers, especially read-only reporting, which has no account limit on Development tier.",
        "strengths": [
          "Monthly versions (latest 202609) each supported for at least one year, with a sunset date per version on the migrations page",
          "A test ad account, created through the API with no payment details, holds campaigns and creatives that are never served or billed",
          "Separate read and write scopes (r_ads, r_ads_reporting, rw_ads), and the VIEWER account role stays read-only even with rw_ads",
          "Structured validation errors with a code, field path and allowed value on adAccounts, adCampaignGroups and adCampaigns",
          "Field projections and cursor pagination (pageSize up to 1,000) on campaign search, and a `fields` parameter on adAnalytics"
        ],
        "weaknesses": [
          "Standard rate limits are not published. An app sees its limit in the Developer Portal only after calling the endpoint",
          "No OpenAPI specification, llms.txt or MCP server was found. The contract is reference pages and a Postman workspace",
          "Access needs a LinkedIn Page, an approved developer application and member consent. Standard tier review can take up to 30 business days",
          "No idempotency keys or Retry-After header were found in the reviewed documentation",
          "The official Python and JavaScript clients are marked beta and were last released in 2023"
        ],
        "agentNotes": [
          "Send `Linkedin-Version: YYYYMM` and `X-Restli-Protocol-Version: 2.0.0` on every call. A missing or sunset version returns an error (426 for a deprecated one)",
          "Create one test ad account with `\"test\": true` and build there first. Its creatives are auto-rejected and never billed, and it returns no reporting data",
          "Create campaigns as DRAFT or PAUSED and check `servingStatuses` before activating. Some validation is postponed until activation",
          "Pass `fields=` on adAnalytics. Responses stop at 15,000 elements and the endpoint throttles at 45 million metric values per 5 minutes",
          "On Development tier, map each ad account to the app in the Developer Portal. Edits are limited to five accounts"
        ],
        "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": 62.4
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 64,
          "payments": 30,
          "reliability": 66,
          "schema": 66,
          "security": 66,
          "transparency": 74
        },
        "provenanceScore": 94
      },
      "connect": {
        "http": "curl -X GET 'https://api.linkedin.com/rest/adAnalytics?accounts=List(urn%3Ali%3AsponsoredAccount%3A511183580)\u0026dateRange=(start:(day:28,month:7,year:2019))\u0026pivot=(MEMBER_COUNTRY_V2)\u0026q=analytics\u0026timeGranularity=ALL\u0026fields=impressions,pivotValues' \\\n  -H 'Authorization: Bearer {INSERT_TOKEN}' \\\n  -H 'Linkedin-Version: 202609' \\\n  -H 'X-Restli-Protocol-Version: 2.0.0'"
      },
      "letme": {
        "capability": "https://letme.dev/ads.reporting",
        "tool": "https://letme.dev/linkedin-marketing-api"
      },
      "area": "communication",
      "provenance": {
        "legalEntity": "LinkedIn Corporation",
        "domain": "linkedin.com",
        "domainRegistered": "2002-11-02",
        "endpointOnVendorDomain": true,
        "terms": "https://www.linkedin.com/legal/l/api-terms-of-use",
        "privacy": "https://www.linkedin.com/legal/privacy-policy",
        "statusPage": "https://www.linkedin-apistatus.com",
        "changelog": "https://learn.microsoft.com/en-us/linkedin/marketing/integrations/recent-changes",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The API terms of use (last revised 13 December 2022) contract with LinkedIn Corporation, 1000 West Maude Avenue, Sunnyvale, California, or with LinkedIn Ireland Unlimited Company for developers in the Designated Countries.",
          "The Marketing API terms at https://www.linkedin.com/legal/l/marketing-api-terms were last revised on 25 July 2025.",
          "API calls go to https://api.linkedin.com/rest. The documentation is hosted by Microsoft at learn.microsoft.com/en-us/linkedin.",
          "www.linkedin.com/.well-known/security.txt has two Contact lines, a Canonical line and a Policy line pointing to hackerone.com/linkedin, and no Expires field.",
          "RDAP for linkedin.com gives a registration date of 2002-11-02."
        ],
        "score": 94
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/linkedin-marketing-api.json",
      "live": {
        "slug": "linkedin-marketing-api",
        "vendorStatus": {
          "page": "https://www.linkedin-apistatus.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T02:50:26.566998668Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "linkedin-api-client",
            "version": "0.3.0",
            "seenAt": "2026-10-09T17:02:23.110389585Z"
          },
          {
            "registry": "pypi",
            "name": "linkedin-api-client",
            "version": "0.3.0",
            "released": "2023-06-29",
            "seenAt": "2026-10-09T17:02:20.85520462Z"
          }
        ],
        "npmWeekly": 19163,
        "pypiWeekly": 367887,
        "securityTxt": {
          "url": "https://linkedin.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-09T15:40:07.59879422Z"
        },
        "pages": [
          {
            "url": "https://learn.microsoft.com/en-us/linkedin/marketing/integrations/recent-changes",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-09T18:41:27.782825387Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "69c4f2489866"
          },
          {
            "url": "https://www.linkedin.com/legal/privacy-policy",
            "kind": "privacy",
            "status": 0,
            "checkedAt": "2026-10-09T18:51:37.72853839Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "blockedByRobots": true
          },
          {
            "url": "https://www.linkedin.com/legal/l/api-terms-of-use",
            "kind": "terms",
            "status": 0,
            "checkedAt": "2026-10-09T18:51:37.522238615Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "blockedByRobots": true
          }
        ],
        "updatedAt": "2026-10-10T02:50:26.566998668Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Apple",
        "b": "LinkedIn Corporation",
        "name": "Vendor"
      },
      {
        "a": "https://api.ads.apple.com/v1",
        "b": "no (local only)",
        "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 LinkedIn API terms of use and the Marketing API terms. The beta Python and JavaScript clients carry LinkedIn's API development software licence",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-08-14",
        "b": "2026-09-16",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "couldn't be read",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "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": "25k npm/wk, 386k PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "LinkedIn Marketing APIs scores 62.4 (B) 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.",
        "question": "Which is better for AI agents, Apple Ads Platform API or LinkedIn Marketing APIs?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do Apple Ads Platform API and LinkedIn Marketing APIs need an API key?"
      },
      {
        "answer": "Apple Ads Platform API has a hosted endpoint at https://api.ads.apple.com/v1. No hosted endpoint is listed for LinkedIn Marketing APIs.",
        "question": "Can an agent call Apple Ads Platform API and LinkedIn Marketing APIs without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 69 against 63"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "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, 66 against 35",
          "Payments \u0026 pricing, 30 against 20",
          "Maintenance \u0026 community, 64 against 48",
          "Transparency \u0026 trust, 84 against 66"
        ],
        "also": null,
        "goodFor": "An agent that reports on and manages LinkedIn campaigns for accounts its operator administers, especially read-only reporting, which has no account limit on Development tier.",
        "slug": "linkedin-marketing-api",
        "watchFor": "Standard rate limits are not published. An app sees its limit in the Developer Portal only after calling the endpoint"
      }
    ],
    "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-linkedin-marketing-api.json",
        "title": "Amazon Ads API vs LinkedIn Marketing APIs",
        "url": "https://www.anchorterminal.com/compare/amazon-ads-api-vs-linkedin-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-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-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-linkedin-marketing-api.json",
        "title": "Google Ads API vs LinkedIn Marketing APIs",
        "url": "https://www.anchorterminal.com/compare/google-ads-api-vs-linkedin-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/linkedin-marketing-api-vs-microsoft-advertising-api.json",
        "title": "LinkedIn Marketing APIs vs Microsoft Advertising API",
        "url": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-microsoft-advertising-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-snapchat-ads.json",
        "title": "LinkedIn Marketing APIs vs Snapchat Ads API",
        "url": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-snapchat-ads"
      },
      {
        "json": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-x-ads.json",
        "title": "LinkedIn Marketing APIs vs X Ads API",
        "url": "https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-x-ads"
      }
    ],
    "scores": [
      {
        "apple-ads": 35,
        "by": 31,
        "edge": "linkedin-marketing-api",
        "key": "reliability",
        "linkedin-marketing-api": 66,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "apple-ads": 69,
        "by": 3,
        "edge": "apple-ads",
        "key": "schema",
        "linkedin-marketing-api": 66,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "apple-ads": 69,
        "by": 6,
        "edge": "apple-ads",
        "key": "ergonomics",
        "linkedin-marketing-api": 63,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "apple-ads": 68,
        "by": 2,
        "edge": "apple-ads",
        "key": "security",
        "linkedin-marketing-api": 66,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "apple-ads": 20,
        "by": 10,
        "edge": "linkedin-marketing-api",
        "key": "payments",
        "linkedin-marketing-api": 30,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "apple-ads": 48,
        "by": 16,
        "edge": "linkedin-marketing-api",
        "key": "maintenance",
        "linkedin-marketing-api": 64,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "apple-ads": 66,
        "by": 18,
        "edge": "linkedin-marketing-api",
        "key": "transparency",
        "linkedin-marketing-api": 84,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "LinkedIn Marketing APIs scores 62.4 (B) 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. 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.",
      "linkedin-marketing-api": "Monthly API versions are each supported for at least a year, with dated sunsets and a changelog, and a test ad account lets an agent create campaigns that are never served or billed. Access needs LinkedIn's approval and a member's OAuth consent, standard rate limits are not published, and no OpenAPI specification was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api",
    "json": "https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api.md",
    "slim": "https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api.min.md"
  },
  "markdown": "LinkedIn Marketing APIs scores 62.4 (B) 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. 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- LinkedIn Marketing APIs: grade B, 62.4/100, rank #434 of 950. Markdown https://www.anchorterminal.com/tools/linkedin-marketing-api.md · JSON https://www.anchorterminal.com/api/v1/tools/linkedin-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- Agent ergonomics, 69 against 63\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\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### LinkedIn Marketing APIs (B)\n\nGood for: An agent that reports on and manages LinkedIn campaigns for accounts its operator administers, especially read-only reporting, which has no account limit on Development tier.\n\nAhead on:\n- Reliability, 66 against 35\n- Payments \u0026 pricing, 30 against 20\n- Maintenance \u0026 community, 64 against 48\n- Transparency \u0026 trust, 84 against 66\n\nWatch for: Standard rate limits are not published. An app sees its limit in the Developer Portal only after calling the endpoint\n\n\n## Score by category\n\n| Category | Weight | Apple Ads Platform API | LinkedIn Marketing APIs | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 35 | 66 | LinkedIn Marketing APIs +31 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 69 | 66 | Apple Ads Platform API +3 |\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 | 66 | Apple Ads Platform API +2 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | LinkedIn Marketing APIs +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 48 | 64 | LinkedIn Marketing APIs +16 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 66 | 84 | LinkedIn Marketing APIs +18 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **53.8 · D** | **62.4 · B** | |\n\n## Facts side by side\n\n| Fact | Apple Ads Platform API | LinkedIn Marketing APIs |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Apple | LinkedIn Corporation |\n| Hosted endpoint | `https://api.ads.apple.com/v1` | no (local only) |\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 LinkedIn API terms of use and the Marketing API terms. The beta Python and JavaScript clients carry LinkedIn's API development software licence |\n| Read-only variant documented | no | yes |\n| llms.txt | no | no |\n| Last release | 2026-08-14 | 2026-09-16 |\n| Terms last updated | no date given | couldn't be read |\n| Privacy policy last updated | couldn't be read | couldn't be read |\n| Customer content may train models | yes | couldn't be read |\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 | 25k npm/wk, 386k 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**LinkedIn Marketing APIs.** Monthly API versions are each supported for at least a year, with dated sunsets and a changelog, and a test ad account lets an agent create campaigns that are never served or billed. Access needs LinkedIn's approval and a member's OAuth consent, standard rate limits are not published, and no OpenAPI specification was found.\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### LinkedIn Marketing APIs\n\n1. Send `Linkedin-Version: YYYYMM` and `X-Restli-Protocol-Version: 2.0.0` on every call. A missing or sunset version returns an error (426 for a deprecated one)\n2. Create one test ad account with `\"test\": true` and build there first. Its creatives are auto-rejected and never billed, and it returns no reporting data\n3. Create campaigns as DRAFT or PAUSED and check `servingStatuses` before activating. Some validation is postponed until activation\n4. Pass `fields=` on adAnalytics. Responses stop at 15,000 elements and the endpoint throttles at 45 million metric values per 5 minutes\n5. On Development tier, map each ad account to the app in the Developer Portal. Edits are limited to five accounts\n\n## Questions\n\n### Which is better for AI agents, Apple Ads Platform API or LinkedIn Marketing APIs?\n\nLinkedIn Marketing APIs scores 62.4 (B) 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.\n\n### Do Apple Ads Platform API and LinkedIn Marketing APIs need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call Apple Ads Platform API and LinkedIn Marketing APIs without installing anything?\n\nApple Ads Platform API has a hosted endpoint at https://api.ads.apple.com/v1. No hosted endpoint is listed for LinkedIn Marketing APIs.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api.json, and with the fewest tokens: https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"apple-ads\", \"b\": \"linkedin-marketing-api\"}`. From a terminal: `anchor compare apple-ads linkedin-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/linkedin-marketing-api.json\n\n## Other comparisons with Apple Ads Platform API or LinkedIn Marketing APIs\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 LinkedIn Marketing APIs](https://www.anchorterminal.com/compare/amazon-ads-api-vs-linkedin-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 Meta Marketing API](https://www.anchorterminal.com/compare/apple-ads-vs-meta-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 LinkedIn Marketing APIs](https://www.anchorterminal.com/compare/google-ads-api-vs-linkedin-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- [LinkedIn Marketing APIs vs Microsoft Advertising API](https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-microsoft-advertising-api.md)\n- [LinkedIn Marketing APIs vs Snapchat Ads API](https://www.anchorterminal.com/compare/linkedin-marketing-api-vs-snapchat-ads.md)\n- [LinkedIn Marketing APIs vs X Ads API](https://www.anchorterminal.com/compare/linkedin-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 LinkedIn Marketing APIs",
        "url": ""
      }
    ],
    "description": "LinkedIn Marketing scores 62.4 (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",
      "LinkedIn Marketing APIs B 62.4",
      "scores"
    ],
    "h1": "Apple Ads Platform API vs LinkedIn Marketing APIs",
    "image": "https://www.anchorterminal.com/assets/og/compare-apple-ads-vs-linkedin-marketing-api.png",
    "path": "/compare/apple-ads-vs-linkedin-marketing-api",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Apple Ads Platform vs LinkedIn Marketing for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/apple-ads-vs-linkedin-marketing-api"
  },
  "tokens": {
    "markdown": 2500,
    "slim": 780
  },
  "version": 1
}
