Ad automation · 10 min read
Amazon SP-API vs Amazon Ads API: Which Data Is Where
The Selling Partner API covers orders, inventory and sales reports; the Amazon Ads API covers campaigns and ad performance. Who can use each, how authorization differs, how SP-API reports work, and how to join them for TACoS.
By The Vexio team Published Updated
Amazon SP-API vs Amazon Ads API: which API has which data?
Amazon SP-API, the Selling Partner API, holds the selling side of the business: orders, inventory, listings, finances and sales reports. The Amazon Ads API holds the advertising side: campaigns, budgets and ad performance. They are separate APIs with separate approvals and credentials.
| You want | Data | API |
|---|---|---|
| Ad spend, clicks, impressions, ad-attributed sales | Ad performance reports | Amazon Ads API (reporting, Marketing Stream) |
| Campaign names, budgets, targets, status | Campaign structure | Amazon Ads API (exports, campaign management) |
| Total sales and page views by ASIN | Sales and traffic | SP-API (Sales and Traffic report, Data Kiosk) |
| Orders, shipment status | Order records | SP-API (Orders API) |
| Stock levels in the fulfilment network | Inventory | SP-API (FBA Inventory API) |
| Fees, refunds, financial events | Finances | SP-API (Finances API) |
| TACoS | Ad spend and total sales | Both |
The rest of this article covers who can use each API, how authorization differs, how the SP-API reporting flow works, and how to join the two for TACoS. Everything was checked against Amazon’s developer documentation on 2026-10-14; the pages are listed under Sources.
Who can use the Selling Partner API, and who can use the Ads API?
Amazon’s SP-API documentation is written for developers building applications for selling partners, meaning sellers, vendors or both (documentation home). Some APIs are sellers only, some vendors only. The Orders API, the Sales API and the FBA Inventory API are listed as sellers only, while the Reports API is listed for sellers and vendors (API models).
Developers register first. Amazon describes three routes: private seller applications (which need a professional selling account), private vendor applications, and public applications that sellers or vendors authorize through OAuth and that must be listed in the Selling Partner Appstore (registration overview).
The Ads API has its own gate. Amazon says direct advertisers, partners and integrators can apply for access and must be approved; the Login with Amazon application itself is free to create (Ads API onboarding). A business that sells and advertises on Amazon therefore needs both approvals. Neither grants access to the other API’s data.
How does Amazon SP-API authorization differ from the Ads API?
Both use Login with Amazon (LwA) and OAuth 2.0, which makes them look alike. The differences are in what you send and what limits access.
| Item | SP-API | Ads API |
|---|---|---|
| Token request | POST to https://api.amazon.com/auth/o2/token |
POST to the token URL for your region; tokens are valid in all regions |
| Grant types | refresh_token for seller-authorized calls, client_credentials with a scope for grantless operations |
Authorization code exchanged for access and refresh tokens |
| Access token life | One hour | 60 minutes |
| Token header | x-amz-access-token, plus a required user-agent |
Authorization: Bearer ..., plus the client ID header |
| Account identity | Seller or vendor who authorized the app | Profile ID or account ID |
| Hosts | sellingpartnerapi-na, -eu, -fe .amazon.com |
advertising-api, -eu, -fe .amazon.com |
| Access control | Roles, and Restricted Data Tokens for personal data | Advertiser consent and the profile scope |
Sources for the table: connecting to the SP-API, SP-API endpoints, Ads authorization overview, Ads authorization grants.
Two SP-API concepts have no Ads equivalent. Roles decide which operations an application may call, and Amazon says calling an operation without the required role returns a 403 (roles). Restricted Data Tokens (RDTs) cover operations that return personally identifiable information: you request one from the Tokens API with createRestrictedDataToken and pass it in x-amz-access-token in place of the normal token (RDT guide). Pure analytics pipelines that read sales and traffic totals usually stay clear of PII, but the Orders API and some report types do not.
On the Ads side, refresh tokens issued on or after 30 July 2026 expire 365 days after consent, per Amazon’s refresh token page. Details of that flow are in Amazon Ads API reporting explained.
How does the SP-API Reports API work?
Bulk SP-API data follows the same asynchronous idea as Ads reporting, with different names (request a report, verify processing, retrieve a report):
createReportwith areportTypeandmarketplaceIds.dataStartTimeanddataEndTimeare optional, and not every report type uses them. The response returns areportId.getReportwith that ID untilprocessingStatusreachesDONE,CANCELLEDorFATAL.IN_QUEUEandIN_PROGRESSmean keep waiting. A report is cancelled automatically when there is no data to return.getReportDocumentwith thereportDocumentId. The response has a pre-signed URL that expires after five minutes and, when present, a compression algorithm.
Amazon states that reports without an explicit retention period are kept for 90 days (report type values), and that getReport serves only requests created within the last 90 days. Amazon also says it adds fields to reports periodically, so parsers must tolerate new columns (Reports API).
The Sales and Traffic report
For TACoS the report that matters is GET_SALES_AND_TRAFFIC_REPORT, which Amazon lists as available to sellers only, with JSON output and sales and traffic metrics aggregated by date and ASIN (analytics report types). Its page documents these details:
reportOptionsacceptdateGranularity(DAY,WEEK,MONTH) andasinGranularity(PARENT,CHILD,SKU).- The role required is Brand Analytics.
dataStartTimemust not be more than two years before the request.- You can request it up to three times every five minutes. Amazon suggests caching results, using date ranges of 7 to 30 days and scheduling outside peak hours.
Amazon’s Data Kiosk API is the other route to the same data: GraphQL queries over a Seller Sales and Traffic dataset, with results in JSONL (Data Kiosk). Its page says reports will be deprecated after they are onboarded to Data Kiosk, so check the deprecation schedule before building on a specific report.
Orders and order metrics
The Orders API lists version v2026-01-01 as current and v0 as deprecated, for sellers only, and notes that orders more than two years old do not appear in responses (Orders API). For aggregate figures without order-level rows, the Sales API offers getOrderMetrics (Sales API).
How do SP-API and Ads API rate limits differ?
SP-API limits use a token bucket per operation. Limits are tied to the pair of selling partner and application, and some operations have dynamic plans that adjust to the seller’s business. Amazon says a 429 is retryable with backoff and that the x-amzn-RateLimit-Limit header, when present, shows the rate, but warns not to depend on it (usage plans).
Ads API limits are dynamic and, for reports, depend on the size of the regional report queue. A 429 carries a Retry-After header (Ads rate limiting). Build one retry wrapper per API with exponential backoff and jitter, because the numbers differ and so do the signals.
How do you join SP-API sales with Ads API spend for TACoS?
TACoS is ad spend divided by total sales, ad and organic together. It is a seller-side metric rather than an Amazon-defined report column; ACOS vs TACoS gives the definitions and the worked arithmetic. The numerator comes from the Ads API and the denominator from SP-API, so the join needs design:
| Join concern | Decision |
|---|---|
| Grain | Pick one, for example marketplace by day or marketplace by ASIN by day. ASIN-level spend needs the advertised-product breakdown from ad reports |
| Keys | Marketplace, date and ASIN (or SKU, mapped to ASIN). Store marketplace ID and profile ID on every row |
| Currency | Profiles carry a currency code. Sales reports have their own. Convert both to a reporting currency and record the rate |
| Time zone | Profiles carry a time zone. Read the time zone rules of the sales report you use and align dates before joining by day |
| Accounts | One seller can have several marketplaces and profiles. Keep a mapping table |
| Restatement | Amazon says Ads conversion data can change for up to 60 days back (reporting overview), so re-pull recent days |
| Order status | Decide whether total sales means ordered, shipped or net of returns, and choose the report that supports it |
Land each source in its own raw table with its own natural key, load with repeatable merges, and build the TACoS view in SQL on top, so the definition stays visible. The load pattern is in idempotent ad reporting pipelines, and marketing ETL explained covers the wider pipeline. Amazon Ads is one of several retail media networks; what retail media advertising is explains the category, and the Amazon platform page covers the wider Amazon advertising picture.
If you want both APIs wired into one warehouse
Vexio builds Amazon data pipelines as custom engagements. For this topic that means setting up authorization for both APIs, extracting ad performance plus the sales, orders and inventory data you need, modelling a warehouse table with a defined TACoS grain, and monitoring for late and restated data. The destination is your choice, for example BigQuery or PostgreSQL. See the advertising data pipelines page or request a demo.
Sources
Checked on 2026-10-14. Amazon Selling Partner API documentation:
- https://developer-docs.amazon.com/sp-api/docs/welcome (audience: sellers and vendors)
- https://developer-docs.amazon.com/sp-api/docs/sp-api-models (API availability by seller and vendor)
- https://developer-docs.amazon.com/sp-api/docs/sp-api-registration-overview (developer registration routes)
- https://developer-docs.amazon.com/sp-api/docs/connecting-to-the-selling-partner-api (LwA token request, headers)
- https://developer-docs.amazon.com/sp-api/docs/sp-api-endpoints (regional endpoints)
- https://developer-docs.amazon.com/sp-api/docs/roles-in-the-selling-partner-api (roles, 403)
- https://developer-docs.amazon.com/sp-api/docs/authorization-with-the-restricted-data-token (Restricted Data Tokens)
- https://developer-docs.amazon.com/sp-api/docs/reports-api (Reports API, schema changes)
- https://developer-docs.amazon.com/sp-api/docs/request-a-report (createReport)
- https://developer-docs.amazon.com/sp-api/docs/verify-that-report-processing-is-complete (getReport statuses)
- https://developer-docs.amazon.com/sp-api/docs/retrieve-a-report (getReportDocument, five-minute URL)
- https://developer-docs.amazon.com/sp-api/docs/report-type-values (90-day retention, report list)
- https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics (Sales and Traffic report)
- https://developer-docs.amazon.com/sp-api/docs/data-kiosk-api (Data Kiosk)
- https://developer-docs.amazon.com/sp-api/docs/sp-api-deprecations (deprecation schedule)
- https://developer-docs.amazon.com/sp-api/docs/orders-api (Orders API versions)
- https://developer-docs.amazon.com/sp-api/docs/sales-api (Sales API)
- https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits (SP-API rate limits)
Amazon Ads API documentation:
- https://advertising.amazon.com/API/docs/en-us/guides/onboarding/overview (Ads API access)
- https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/overview (Ads OAuth flow, headers)
- https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/authorization-grants (token URLs)
- https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/refresh-tokens (365-day expiry)
- https://advertising.amazon.com/API/docs/en-us/guides/reporting/overview (conversion restatement)
- https://advertising.amazon.com/API/docs/en-us/reference/concepts/rate-limiting (Ads rate limits)