HomeLearnAmazon Ads Reporting API: How It Actually Works
Comparison

The Amazon Ads Reporting API, Explained With Real Numbers

Updated 2026-08-21 · 1874 words · Written against what currently ranked for “amazon ads reporting api”
The short answer

The Amazon Ads Reporting API is the programmatic endpoint that returns campaign data — impressions, clicks, spend, attributed sales — for Sponsored Products, Sponsored Brands, Sponsored Display, and DSP. You request a report, poll until it's ready, then download it. Sales figures can keep restating for days after.

What this looks like in a real account

$89,885
of ad spend — 33.6% of everything the account spent — went to search terms that produced zero orders
Walkize · Amazon account data, Dec 2025–Aug 2026
89,045
individual search terms took money over the same period and returned nothing at all
Walkize · Amazon account data, Dec 2025–Aug 2026
75.5%
of all sales came from the top 1% of search terms. The other 99% is where the decisions actually are
Walkize · Amazon account data, Dec 2025–Aug 2026
2.25x
$267,131 of spend against $601,614 of sales — a 44.4% ACoS, with all of the waste above still sitting inside it
Walkize · Amazon account data, Dec 2025–Aug 2026

What it actually returns, and what it doesn't

There isn't one Amazon Ads reporting API — there are three, and mixing them up is the first mistake most people make. The sponsored ads reporting API (v3) covers Sponsored Products, Sponsored Brands, and Sponsored Display in one unified schema. DSP has its own separate reporting API with different fields, different report types, and different attribution logic. Amazon Marketing Cloud sits above both and works on signal-level data rather than pre-aggregated rows.

None of the three is a live dashboard. Every one of them works on an asynchronous request-poll-download model: you submit a report definition, Amazon builds it in the background, and you come back later to collect it. There is no endpoint that streams today's numbers as they happen. If a tool claims real-time Amazon Ads data, it is either polling very aggressively or rounding the truth.

Fields available include impressions, clicks, spend, attributed sales (7-day and 14-day windows depending on ad product), units sold, and new-to-brand purchases. What's absent by default: any statement about whether a sale would have happened anyway. The API tells you what happened after an ad ran. It does not tell you what happened because the ad ran — that's a different question, and it needs a different method.

The request-poll-download cycle, worked on real numbers

The mechanics: you POST a report request specifying the ad product, the reportTypeId, the columns you want, and a date range. Amazon returns a reportId with status PENDING. You poll a status endpoint until it flips to COMPLETED — this can take anywhere from a couple of minutes to over an hour depending on the size of the pull and Amazon's queue. Once complete, you get a download URL for a gzipped file, usually JSON or CSV, that you then have to parse yourself.

Here's what that looks like on an actual book of business. Across 30 advertisers we managed in July 2026, the DSP reporting pull returned 78.4 million impressions at a $4.00 CPM. Run that through the API's own numbers: 78.4 million impressions ÷ 1,000 × $4.00 CPM = roughly $313,600 in DSP spend for the period. Divide that spend by the blended cost-per-acquisition the same report showed — $5.49 — and you land on almost exactly 57,137 attributed purchases, which is the actual purchase count the report returned. The numbers reconcile because they're rows from the same pull, not separate claims stitched together.

That same portfolio ran a blended $1.42 cost-per-click — worth flagging because the $0.41 CPC figure that gets quoted constantly in this category is an online-video-only number, not a whole-book average. If your API pull returns a blended CPC nowhere near $0.41, your numbers aren't wrong. The comparison you're making them against was never the same metric.

Where the numbers disagree with each other, and why

Pull sponsored ads data and DSP data separately and add the sales together, and you will overstate performance. If a shopper sees a DSP display ad and later clicks a Sponsored Products ad for the same product, both reports can claim the sale under their own attribution window. Neither report is lying — they're just not built to talk to each other.

This is the actual reason Amazon Marketing Cloud exists. AMC works on signal-level, deduplicated data across DSP and sponsored ads, so a purchase gets counted once, not once per channel that touched it. Without that reconciliation step, any cross-channel ROAS number built by summing separate API pulls is inflated by an unknown amount — and it's usually inflated most for advertisers running both DSP and sponsored ads hard at the same time, which is exactly when the incremental question matters most.

Last-click attribution, which is what both sponsored ads and DSP reports default to, has the same structural limit: it can tell you which touchpoint came last, not whether the sale would have happened without it. That's not a reporting bug to fix with a different column. It's a question the reporting API was never built to answer — you need holdouts or matched controls for that, not a different report type.

The mistakes people make with this API — including ones we've made

Pulling a report the same day a campaign ran and treating the sales figure as final is the most common one. Amazon's attribution windows mean a purchase can attach to an ad click up to 14 days later, and reports restate as that window closes. Read a report on day one and you will see a lower number than the same report pulled on day ten. That's not a data error — it's the window doing its job.

  • Timezone mismatches: reports are built in the advertiser's account timezone, not UTC. A date range boundary that looks off by a day is usually this.
  • Comparing sponsored ads spend to DSP spend as if they're the same unit of currency: they're priced and auctioned differently; a blended average across both without labeling which is which misleads whoever reads it next.
  • Assuming a completed report status means finished data: COMPLETED means the file is ready to download, not that every attributed sale has landed yet.
  • Filtering out paused campaigns by habit: a campaign paused mid-month still has spend and sales rows for the days it ran; excluding it by default understates total spend.

We've made the restatement mistake ourselves early on — reporting a week-one ROAS number to a client as final when it was going to move for another ten days as attribution caught up. The fix wasn't a better dashboard. It was agreeing up front on which day of the reporting cycle counts as the reporting date.

When the number looks wrong, check these before you assume the API is broken

Start with the date range, not the metric. Confirm it's rendered in the account's timezone and that you're comparing like periods — a 30-day pull against a 31-day pull will never match. Then check the report status field directly rather than trusting a cached download; a stale file from an earlier poll is a common source of numbers that look frozen.

Next, confirm which report type and ad product the columns actually belong to. A metric named identically across Sponsored Products and Sponsored Display can carry different attribution logic underneath. Pull one day's numbers from the ads console by hand and compare them line by line against the API output for that same day — if they match there, the API isn't the problem, and something changed after the pull (a filter, a currency conversion, a rollup step) is.

If the numbers still don't reconcile after that, the honest answer is usually double counting across DSP and sponsored ads, not a broken API call. That's a reconciliation problem, and it needs a reconciliation tool — not a different set of report parameters.

Where reMKTR fits into this

reMKTR runs Amazon DSP as a managed service and reconciles every book in Amazon Marketing Cloud specifically to stop DSP and sponsored ads from double-counting each other — the API problem described above, solved the only way it actually gets solved. We hold real DSP seats across 109 live advertisers, and the numbers used in the worked example in this piece — the 78.4 million impressions, the $5.49 blended CPA, the $1.42 blended CPC — come from that book, not a vendor deck. reMKTR is part of the Full Circle group, which has managed more than $500M in Amazon spend across 100+ brands, working with names including HexClad, Ridge, BK Beauty, Beardbrand, Epic Gardening, The Woobles, and Walkize. None of that changes what the Reporting API can and can't tell you on its own — it just means someone downstream of the API is already doing the reconciliation this page describes.

Side by side — amazon ads reporting api
Report sourceWhat it coversTypical lagGranularity
Sponsored Products APICampaign, ad group, keyword, product performanceNext day, can restate ~3 days for attributed salesCampaign / ad group / keyword / ASIN
Sponsored Brands APIHeadline, brand store, video ad performanceNext day, similar restatement windowCampaign / ad group / keyword
Sponsored Display APIAudience and product targeting performanceNext day, similar restatement windowCampaign / ad group / targeting
DSP Reporting APIImpressions, clicks, spend, DSP-attributed salesUp to 48 hours; view-through data settles slowerLine item / creative / site / device
Amazon Marketing CloudDeduplicated cross-channel signal-level dataBatch query, hours rather than minutesAggregated user-level, cross-channel

Which one you should actually pick

Anyone pulling their own reports needs to know the async model, the attribution lag, and the double-counting risk between DSP and sponsored ads — that part is true whether or not you ever hire anyone. Advertisers running DSP at real scale, where that double-counting has actual dollars behind it, are the ones who benefit from having it reconciled for them rather than caught after the fact.

What to do with this

Shortlist on the job, not the feature grid. Pull your search-term report for the last 90 days and total the spend against terms that produced no orders — 33.6% on the account above. Then ask each vendor on your list what they would do about it in week one, and see who answers with a process rather than a screenshot.

Common questions

Why don't my Amazon Ads API numbers match the console?

Usually a timezone or date-range mismatch — reports render in the advertiser's account timezone, not UTC, and a boundary that's off by a day looks like a data error but isn't. The second most common cause is comparing a report pulled today against sales that haven't finished attributing yet; sales figures can restate for up to 14 days.

Can I get real-time data from the Amazon Ads Reporting API?

No. Every version — sponsored ads, DSP, or Amazon Marketing Cloud — works on an asynchronous request-poll-download cycle. You submit a report request, wait for it to build, then download it. There is no streaming endpoint for live spend or sales.

Does the Reporting API tell me if my DSP ads are incremental?

No, and this is worth being direct about. The reporting API returns last-click attributed sales, which tells you which ad touched a purchase last, not whether the purchase would have happened without it. Proving incrementality requires a holdout or matched-control test design, not a different report type.

Do I need Amazon Marketing Cloud if I already pull the sponsored ads and DSP reporting APIs?

If you run both DSP and sponsored ads at meaningful volume, yes — otherwise a shopper touched by both channels can get counted as a sale in each report separately, inflating combined ROAS by an amount you can't quantify without deduplicating at the signal level, which is what AMC does.

How long should I wait before treating an Amazon Ads report as final?

Give attributed sales at least the length of the attribution window before treating the number as settled — up to 14 days for standard sponsored ads windows. Reporting the week-one figure as final is a common mistake, because it will still move for the following ten days.

We show the method before the number.

Claim the free audit
Written against what currently ranked for “amazon ads reporting api”, checked 2026-08-21. Vendor prices change without notice — check the vendor's own page before you budget. Our own figures are labelled with the account and period they came from.