What this report contains
The Sales and Traffic report by child ASIN answers one question: for a single variation, on a single day, how many shoppers arrived and how many of them bought. Each row carries the traffic side — sessions, page_views, and the buy_box_percentage that records how often the buy box appeared on the page for a shopper to add your product to the cart — beside the outcome side: units_ordered, total_order_items, and ordered_product_sales.
Amazon splits nearly every traffic column three ways: a browser figure, an Amazon-app figure, and a combined total. It then repeats the whole set for Amazon Business buyers, suffixed _b2b. The B2B columns are a subset of the main ones, never an addition, so a report that adds units_ordered and units_ordered_b2b together double-counts every business order.
The row's identity is the triple child_asin + start_date + reported_marketplace_id. A single pull can span marketplaces, each row carrying its own currency code, so a sales total that ignores ordered_product_sales_currency_code silently adds pounds to dollars.
How to get it
In Seller Central, it lives under Reports → Business Reports, where Amazon lists it among the By ASIN reports as Detail Page Sales and Traffic By Child Item. Pick a date range, then download it as CSV. Amazon refreshes this grain daily — only the by date reports update hourly — so the UI is fine for a spot check, and the API is the better route for anything recurring.
Through the Selling Partner API, it comes from Data Kiosk rather than the older Reports API. You submit a GraphQL query against the analytics_salesAndTraffic_2024_04_24 dataset, calling salesAndTrafficByAsin with aggregateBy: CHILD and a start and end date, then poll the query until Amazon hands back a document ID and download the JSONL. Data Kiosk checks roles per field when the query is created, and Amazon lists Brand Analytics as a required role on every one of its operations. That is a role the developer applies for and Amazon approves for the calling application — not an entitlement the seller buys — so it is not a prerequisite you can go and purchase.
One detail catches everyone: salesAndTrafficByAsin aggregates its whole date range into one row per ASIN. Ask for a month and you get one row per ASIN for that month, not thirty daily rows. To keep daily grain you have to issue one query per day — and to re-issue the most recent days, because Amazon keeps restating them, so a day fetched once and never revisited will drift.
Data Kiosk also refuses more than one root field per query ("Versioned domain cannot select multiple query fields"), so the by-date, by-ASIN and by-SKU grains cannot be fetched together.
Sample rows
Illustrative values, not data from a real account. Shown to give the shape of the file.
| start_date | parent_asin | child_asin | sessions | page_views | buy_box_percentage | units_ordered | unit_session_percentage | ordered_product_sales | ordered_product_sales_currency_code |
|---|---|---|---|---|---|---|---|---|---|
| 2026-09-14 | B08N5WRWNW | B08N5WRWNW | 1842 | 2610 | 98.4 | 213 | 11.56 | 6178.71 | USD |
| 2026-09-14 | B07FZ8S74R | B07FZ8S74R | 967 | 1204 | 91.2 | 74 | 7.65 | 1848.26 | USD |
| 2026-09-14 | B09B8V1LZ3 | B09B8V1LZ5 | 412 | 533 | 100.0 | 38 | 9.22 | 949.62 | USD |
| 2026-09-14 | B09B8V1LZ3 | B09B8V1LZ7 | 388 | 455 | 100.0 | 21 | 5.41 | 524.79 | USD |
| 2026-09-14 | B0BDJ279KF | B0BDJ279KF | 96 | 141 | 0.0 | 0 | 0.0 | 0.00 | USD |
Field reference
| Column | Type | Description |
|---|---|---|
start_date | timestamp_ms | The day the row covers. When the query aggregates by day — which is how this report is pulled — start_date and end_date are the same date. |
end_date | timestamp_ms | The last day the row covers. Equal to start_date on a daily pull; it differs only if someone widens the query window, in which case the row is a range total rather than a day. |
reported_marketplace_id | string | The marketplace this row belongs to, as Amazon labelled it. A single query can return rows for several marketplaces at once, so never assume one file is one marketplace. |
parent_asin | string | The parent ASIN of the variation family. Repeated across every child in the family, so grouping on it gives family-level totals. |
child_asin | string | The child ASIN this row is about — the actual buyable variation. This is the row's identity together with start_date and reported_marketplace_id. |
ordered_product_sales | decimal | Revenue from units ordered during the day, before returns and before any Amazon fees. Denominated in the marketplace's own currency, not converted. |
ordered_product_sales_currency_code | string | The currency ordered_product_sales is in. Carried per row because a multi-marketplace pull mixes currencies in one file; summing the sales column without grouping on this is the single most common mistake made with this report. |
ordered_product_sales_b2b | decimal | The portion of ordered_product_sales that came from Amazon Business buyers. A subset, not an addition — do not add it to the total. |
ordered_product_sales_b2b_currency_code | string | The currency ordered_product_sales_b2b is in. |
total_order_items | int64 | The number of order items containing this ASIN. An order for three units of one ASIN is one order item, so this is lower than units_ordered wherever people buy multiples. |
total_order_items_b2b | int64 | The Amazon Business subset of total_order_items. |
units_ordered | int64 | Units of this ASIN ordered during the day. This is the numerator of unit_session_percentage and the number most people mean by "sales". |
units_ordered_b2b | int64 | The Amazon Business subset of units_ordered. |
browser_page_views | int64 | Page views that arrived through a web browser, on desktop or mobile web. Excludes the Amazon shopping app. |
browser_page_views_b2b | int64 | The Amazon Business subset of browser_page_views. |
browser_page_views_percentage | float64 | This ASIN's browser page views as a percentage of all your browser page views that day. A share of your own catalogue, not of the category. |
browser_page_views_percentage_b2b | float64 | The Amazon Business equivalent of browser_page_views_percentage. |
browser_session_percentage | float64 | This ASIN's browser sessions as a percentage of all your browser sessions that day. |
browser_session_percentage_b2b | float64 | The Amazon Business equivalent of browser_session_percentage. |
browser_sessions | int64 | Sessions that arrived through a web browser rather than the Amazon app. |
browser_sessions_b2b | int64 | The Amazon Business subset of browser_sessions. |
buy_box_percentage | float64 | Amazon's schema defines this as the percentage of this ASIN's page views where the buy box — the add-to-shopping-cart link — appeared on the page for a customer to add your product to their cart. That is the buy box being present, not the share you won against other sellers, so do not read it as a Featured Offer win rate. |
buy_box_percentage_b2b | float64 | The same measure over page views by Amazon Business customers — the percentage of those views where the buy box appeared for the customer to add your product to their cart. Amazon populates it only when the seller is a B2B seller. |
mobile_app_page_views | int64 | Page views from the Amazon shopping app. Together with browser_page_views this sums to page_views. |
mobile_app_page_views_b2b | int64 | The Amazon Business subset of mobile_app_page_views. |
mobile_app_page_views_percentage | float64 | This ASIN's app page views as a percentage of all your app page views that day. |
mobile_app_page_views_percentage_b2b | float64 | The Amazon Business equivalent of mobile_app_page_views_percentage. |
mobile_app_session_percentage | float64 | This ASIN's app sessions as a percentage of all your app sessions that day. |
mobile_app_session_percentage_b2b | float64 | The Amazon Business equivalent of mobile_app_session_percentage. |
mobile_app_sessions | int64 | Sessions that arrived through the Amazon shopping app. |
mobile_app_sessions_b2b | int64 | The Amazon Business subset of mobile_app_sessions. |
page_views | int64 | Total detail page views for this ASIN — browser plus app. A single session can produce several page views, which is why this is always at least sessions. |
page_views_b2b | int64 | The Amazon Business subset of page_views. |
page_views_percentage | float64 | This ASIN's page views as a percentage of all your page views that day, across browser and app. |
page_views_percentage_b2b | float64 | The Amazon Business equivalent of page_views_percentage. |
session_percentage | float64 | This ASIN's sessions as a percentage of all your sessions that day. Useful for spotting which listings are absorbing your traffic, but it moves when other listings move. |
session_percentage_b2b | float64 | The Amazon Business equivalent of session_percentage. |
sessions | int64 | Visits to your detail pages for this ASIN. Amazon counts all activity from one user within a 24-hour window as a single session, so sessions are closer to "visitors" than to "visits" and are the denominator of conversion rate. |
sessions_b2b | int64 | The Amazon Business subset of sessions. |
unit_session_percentage | float64 | Units ordered divided by sessions, as a percentage — Amazon's conversion rate for this ASIN. Because the numerator counts units and the denominator counts sessions, it can exceed 100% on multipacks and bulk buys. |
unit_session_percentage_b2b | float64 | The Amazon Business conversion rate, computed the same way from B2B units and B2B sessions. |
Use cases
Separating a traffic problem from a conversion problem. A listing that lost sales has either lost sessions or lost unit_session_percentage, and the fix is completely different. Both sit in the same row here, so the comparison needs no join, and because the query sweeps the whole catalogue you can rank every ASIN by which of the two moved.
Spotting the days the add-to-cart link was missing. Amazon defines buy_box_percentage as the share of page views where the buy box appeared for a shopper to add your product to the cart, so a fall means visitors reached the page and were not offered that path. Read it beside sessions and unit_session_percentage: traffic holding steady while conversion drops, on a day the buy box share also drops, is the shape worth investigating. Amazon's definition says nothing about competing offers, pricing or stock, and it publishes no account of why the buy box stops appearing — so treat the column as the symptom and go looking for the cause elsewhere.
Finding the weak child in a strong family. Grouping on parent_asin shows which variations absorb the family's traffic. A colour or size with healthy sessions and a conversion rate well below its siblings usually has a listing problem — a bad main image, a missing size chart, a price out of line — not a demand problem.
Sizing the Amazon Business opportunity. The _b2b columns show what share of demand is already business buyers, which is the honest input to whether B2B pricing and quantity discounts are worth configuring.
Building a real conversion baseline for ad decisions. Advertising reports give you ad conversion; this gives you the organic-plus-paid rate for the same ASIN, and the gap between them is what tells you whether the ads are buying incremental sales or subsidising traffic that converted anyway.
Limitations and gotchas
The SKU grain is not a superset of the ASIN grain. The by-SKU version of this report attributes traffic more narrowly, and the two genuinely do not reconcile — the same seller, the same day, can answer 234 child-ASIN rows and 168 SKU rows. Pick the grain that matches the question and do not try to tie them out.
Recent days get restated. Attribution settles over several days, so yesterday's numbers will change. Anything that snapshots a day once and never revisits it will drift away from Seller Central. Re-pull a rolling window instead.
Sessions are deduplicated per user per 24 hours, so they do not add up the way page views do. Summing daily sessions across a month overstates monthly sessions, because a shopper who came back on five days counts five times.
unit_session_percentage can exceed 100%. It divides units by sessions, and one session can buy several units. On multipacks and consumables this is normal, not a data error.
Zero-session ASINs are absent, not zero. A variation nobody viewed produces no row at all. Code that expects a dense grid of ASIN × day has to fill the gaps itself.
Money is not converted. Every money column ships with its own currency code, and a multi-marketplace pull mixes them freely.
FAQ
A session is one user's activity within a 24-hour window; page views count every time a detail page was loaded. One session can produce many page views, so page_views is always at least sessions. Sessions are the denominator of conversion rate; page views are the denominator of buy_box_percentage.
Almost always one of three things: you are comparing different grains (child item versus parent item versus SKU), you pulled before Amazon finished restating the last few days, or the range you requested was aggregated into a single row rather than returned daily.
It varies far too much by category to quote a single number, and the useful comparison is against your own ASIN's history and its siblings in the same variation family, not against a cross-category benchmark.
No. ordered_product_sales and units_ordered are ordered quantities, gross of returns, cancellations and fees. Returns come from the FBA customer returns report; net proceeds come from settlements.
Yes — the same dataset serves a by-SKU grain, and it adds a sku column. Bear in mind the two grains do not reconcile.
Roughly two years. The dataset's GraphQL schema requires startDate to be no more than two years ago, and Amazon says Business Reports data stays viewable for up to two years. Data Kiosk's 30-day retention is a different clock: it governs how long a finished query's document stays downloadable, not how far back you can ask.
Sources
Every researched claim on this page, and the Amazon or Walmart page it came from.
- marketplaces — developer-docs.amazon.com/data-kiosk-reports-experience-general-availability-launch — announces "general availability of Data Kiosk in all marketplaces" and names Sales and Traffic as one of its three datasets; developer-docs.amazon.com/data-kiosk-api adds that Data Kiosk is "available globally in all SP-API Regions, including NA, EU, and FE". `all` rests on that global-availability wording, not on an enumerated store list — Amazon publishes no per-marketplace list for this dataset.
- history_window — github.com/analytics_salesAndTraffic_2024_04_24.graphql — `salesAndTrafficByAsin`'s `startDate` "must be no more than two years ago" (documented identically on `salesAndTrafficByDate`); sell.amazon.com/amazon-business-reports — "You can view your Amazon business reports data for up to two years." The `@resultRetention(duration: "P30D")` on every field of this dataset is a different clock: it governs how long a finished query's document stays downloadable, not how far back the data goes.
- latency — sell.amazon.com/amazon-business-reports — "'By date' reports update hourly with recent data, while other reports update daily to help you track overall performance." This is an item-grain report, so daily is the figure that applies; the hourly one belongs to the by-date grain only. Amazon publishes no statement of how many days a figure keeps being restated, so the page names no re-pull window — only that the most recent days change.
- console path — sell.amazon.com/amazon-business-reports — "select Reports from the Seller Central main menu, then select Business Reports", and the same page lists "Detail Page Sales and Traffic By Child Item" among the By ASIN reports found there. Nothing public documents a deeper menu path than that, so the page claims none.
- aggregation and grains — github.com/analytics_salesAndTraffic_2024_04_24.graphql — `salesAndTrafficByAsin` takes no date-granularity argument and its `startDate`/`endDate` are "the period of the aggregated data", which is why a multi-day range comes back as one row per ASIN; `AsinGranularity` enumerates CHILD, PARENT and SKU, and the `sku` field "is only present when ASIN aggregation is SKU".
- sessions and page views — github.com/analytics_salesAndTraffic_2024_04_24.graphql — "All browser and mobile app activity within a 24-hour period is considered a session"; `sessions` is the sum of `browserSessions` and `mobileAppSessions` and `pageViews` the sum of `browserPageViews` and `mobileAppPageViews`; `unitSessionPercentage` is `unitsOrdered` divided by `sessions`; and `sessionPercentage` counts "sessions that contain at least one page view for a particular SKU/ASIN", which is why item-level sessions sum higher than an account-level total.
- requires (left empty) — developer-docs.amazon.com/data-kiosk-api — every Data Kiosk operation lists Brand Analytics under "Required roles (need at least one)", and says Data Kiosk "determines whether the requester has the required roles for each field in the query upon query creation"; developer-docs.amazon.com/data-kiosk-reports-experience-general-availability-launch adds that "the Vendor Analytics and Sales and Traffic datasets require you to have the Brand Analytics role". developer-docs.amazon.com/roles-in-the-selling-partner-api makes it application-level: roles determine "whether a developer or application has access", and "as a developer, you must request and qualify for a particular role". `requires` carries seller entitlements only, so this role is named in the body and in these sources rather than in `requires`, which stays empty.
- fields.buy_box_percentage — github.com/analytics_salesAndTraffic_2024_04_24.graphql — `buyBoxPercentage` is "The percentage of page views where the buy box (the add to shopping cart link) appeared on the page for customers to add your product to their cart", and `buyBoxPercentageB2B` the same measure over page views by Amazon Business customers, "only populated when the seller is a B2B seller". Appeared-at-all is not won-against-others, so the two column descriptions, the opening paragraph and the Buy Box use case follow the schema rather than the win-rate reading they were written on. Amazon publishes no statement of *why* the buy box stops appearing, so the page offers no mechanism.
- summary — github.com/analytics_salesAndTraffic_2024_04_24.graphql — `salesAndTrafficByAsin` takes only `aggregateBy`, `marketplaceIds`, `startDate` and `endDate`, with no ASIN filter, so it answers the seller's whole catalogue; `salesAndTrafficTrends` returns the same `ByAsinSales`/`ByAsinTraffic` pair but requires a `filters` list of `MarketplaceAsinFilter`, whose `asins` has a "maximum size of the list is 30". That contrast replaces the summary's earlier claim that this is the only Amazon report pairing traffic and conversion for one variation, which nothing supports — the by-SKU grain of this same dataset pairs them too.