# Amazon SP-API vs Amazon Ads API: Which Data Is Where

> Amazon SP-API vs Amazon Ads API: which holds orders, sales, inventory and ad spend, how auth and rate limits differ, and how to join both for TACoS.

- Canonical URL: https://www.vexio.ai/insights/amazon-sp-api-vs-amazon-ads-api/
- Published: 2026-10-14
- Updated: 2026-10-14
- Category: Ad automation
- Author: Vexio engineering team

## 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](https://developer-docs.amazon.com/sp-api/docs/welcome)). 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](https://developer-docs.amazon.com/sp-api/docs/sp-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](https://developer-docs.amazon.com/sp-api/docs/sp-api-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](https://advertising.amazon.com/API/docs/en-us/guides/onboarding/overview)). 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.

| | 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](https://developer-docs.amazon.com/sp-api/docs/connecting-to-the-selling-partner-api), [SP-API endpoints](https://developer-docs.amazon.com/sp-api/docs/sp-api-endpoints), [Ads authorization overview](https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/overview), [Ads authorization grants](https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/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](https://developer-docs.amazon.com/sp-api/docs/roles-in-the-selling-partner-api)). 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](https://developer-docs.amazon.com/sp-api/docs/authorization-with-the-restricted-data-token)). 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](https://advertising.amazon.com/API/docs/en-us/guides/account-management/authorization/refresh-tokens). Details of that flow are in [Amazon Ads API reporting explained](https://www.vexio.ai/insights/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](https://developer-docs.amazon.com/sp-api/docs/request-a-report), [verify processing](https://developer-docs.amazon.com/sp-api/docs/verify-that-report-processing-is-complete), [retrieve a report](https://developer-docs.amazon.com/sp-api/docs/retrieve-a-report)):

1. **`createReport`** with a `reportType` and `marketplaceIds`. `dataStartTime` and `dataEndTime` are optional, and not every report type uses them. The response returns a `reportId`.
2. **`getReport`** with that ID until `processingStatus` reaches `DONE`, `CANCELLED` or `FATAL`. `IN_QUEUE` and `IN_PROGRESS` mean keep waiting. A report is cancelled automatically when there is no data to return.
3. **`getReportDocument`** with the `reportDocumentId`. 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](https://developer-docs.amazon.com/sp-api/docs/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](https://developer-docs.amazon.com/sp-api/docs/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](https://developer-docs.amazon.com/sp-api/docs/report-type-values-analytics)). Its page documents these details:

- `reportOptions` accept `dateGranularity` (`DAY`, `WEEK`, `MONTH`) and `asinGranularity` (`PARENT`, `CHILD`, `SKU`).
- The role required is Brand Analytics.
- `dataStartTime` must 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](https://developer-docs.amazon.com/sp-api/docs/data-kiosk-api)). Its page says reports will be deprecated after they are onboarded to Data Kiosk, so check the [deprecation schedule](https://developer-docs.amazon.com/sp-api/docs/sp-api-deprecations) 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](https://developer-docs.amazon.com/sp-api/docs/orders-api)). For aggregate figures without order-level rows, the Sales API offers `getOrderMetrics` ([Sales API](https://developer-docs.amazon.com/sp-api/docs/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](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits)).

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](https://advertising.amazon.com/API/docs/en-us/reference/concepts/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](https://www.vexio.ai/insights/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](https://advertising.amazon.com/API/docs/en-us/guides/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](https://www.vexio.ai/insights/idempotent-ad-reporting-pipelines-backfills-late-data/), and [marketing ETL explained](https://www.vexio.ai/insights/marketing-etl-explained/) covers the wider pipeline. Amazon Ads is one of several retail media networks; [what retail media advertising is](https://www.vexio.ai/insights/what-is-retail-media-advertising/) explains the category, and the [Amazon platform page](https://www.vexio.ai/platforms/amazon/) 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](https://www.vexio.ai/etl/) or [request a demo](https://www.vexio.ai/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)

## Frequently asked questions

### What is the difference between Amazon SP-API and the Amazon Ads API?

The Selling Partner API serves the selling side of an Amazon business: orders, inventory, listings, finances and sales reports. The Amazon Ads API serves advertising: campaigns, targeting, budgets and ad performance reports. They have separate approval, credentials and data, so analytics that combine ad spend with total sales need both integrations.

### Who can use the Amazon Selling Partner API?

Amazon documents it for developers building applications for sellers, vendors or both. Private seller applications need a professional selling account and are self-authorized. Public applications are authorized by sellers or vendors through OAuth and must be listed in the Selling Partner Appstore. Some operations and reports are available to sellers only or vendors only.

### How does authorization differ between SP-API and the Ads API?

Both use Login with Amazon. SP-API sends the access token in the x-amz-access-token header, uses roles to control which operations an app may call, and supports Restricted Data Tokens for personal data. The Ads API needs advertiser consent, a client ID header and a profile or account ID. Each requires its own approval and tokens.

### How do I calculate TACoS with Amazon data?

TACoS is advertising spend divided by total sales, paid and organic together. Spend comes from Ads API reports. Total sales can come from the SP-API Sales and Traffic report for sellers. Join on marketplace, date and ASIN where possible, align currency and time zones, and re-pull recent days because ad data is restated.

### How long do SP-API reports stay available?

Amazon states that reports without an explicit retention period are kept for 90 days, and getReport serves requests created within the last 90 days. The pre-signed URL from getReportDocument expires after five minutes, so download the file promptly and store it yourself. If a report is not downloaded in time, request it again.

---

Source: Vexio, https://www.vexio.ai/insights/amazon-sp-api-vs-amazon-ads-api/
Talk to Vexio: request a demo at https://www.vexio.ai/demo/, call +1 778 896 4353 or email hello@vexio.ai.
