The Endpoint You're Looking For Doesn't Exist #
You need to answer a simple operational question: how many of this SKU will I sell in the next 30 days, and when do I reorder? So you go looking through SP-API for a forecast endpoint.
In one line
Amazon does not expose a seller-facing demand-forecast API. Vendors (1P) get forecasts; sellers (3P) do not. The nearest thing — the restock inventory report — is US-only and being phased out, so building your own from order history is the durable answer, not a workaround.
This surprises people because the data obviously exists — Seller Central shows restock suggestions. But "visible in the UI" and "available over the API" are different things, and this is one of the places they diverge.
What You Can and Can't Get #
| What | Available to a 3P seller? | Notes |
|---|---|---|
| Demand forecast per SKU | No | No SP-API operation returns one |
| Restock suggestions report | Partly | US-only, and being phased out — do not build on it |
| FBA inventory levels | Yes | FBA Inventory API — current stock and inbound |
| Your own order history | Yes | Orders API. This is the input that matters |
| Vendor (1P) forecasts | N/A | Exists for vendors only, not sellers |
The practical read: you have units sold over time and you have current stock. That is genuinely enough for a forecast good enough to drive reordering, and the reason is that most sellers' demand is far more stable than they assume.
The Velocity Calculation #
The naive approach is "units sold in the last 30 days, divide by 30". It works until a two-day promotion or a single bulk order makes the next month's forecast nonsense.
What works better is a blended velocity across three windows, weighted towards the recent:
velocity_daily = 0.5 * (units_7d / 7)
+ 0.3 * (units_30d / 30)
+ 0.2 * (units_90d / 90)
The weights are the whole idea. The 7-day term makes it react to a genuine change in demand within about a week. The 90-day term stops one unusual day from dominating. A single spike moves the number, but it does not move it as far as the spike itself.
Two details that matter more than the weights:
- Exclude cancelled orders. Obvious, easy to forget, and it inflates every downstream number.
- Count units, not orders. One order of six units is six units of demand.
Trend: The Signal That Tells You Something Changed #
Velocity tells you the rate. It does not tell you whether that rate is rising or falling, and for reorder decisions the direction matters as much as the level.
Compare the last 30 days against the 30 days before that — days 31 to 60, not a rolling window:
trend_pct = (units_30d - units_prior_30d) / max(units_prior_30d, 1) * 100
This is the number that surfaces a product quietly dying, or one starting to take off, before the absolute figures make it obvious. Sort your catalogue by it occasionally — it is usually the most interesting column on the page.
From Forecast to a Reorder Number #
A forecast nobody acts on is a decoration. The output that matters is how many units to buy, and how urgently.
- Days of cover
stock / velocity_daily. How long until you are out at the current rate. This single number drives everything else. - Status buckets
Out of stock (zero stock but still selling), low (under your lead time plus a buffer), overstock (more than about 180 days, or stocked with no sales at all), healthy.
- Suggested reorder quantity
velocity × (lead_time_days + target_cover_days) − stock − inbound. Subtracting inbound matters — otherwise you reorder what is already on a boat.
With a 30-day lead time and a 60-day cover target, a SKU selling 4 units a day with 100 in stock and 50 inbound gives 4 × 90 − 100 − 50 = 210 units. That is a number an operator can act on without interpreting anything.
Made-to-order changes the maths. If you produce on demand rather than holding stock, "days of cover" against a stock level is meaningless — you want cover against production capacity instead. Drive the alerts off the fulfilment units that actually exist, or you will forecast a warehouse you do not have.
What This Version Deliberately Does Not Do #
Being honest about the limits is what makes it trustworthy:
- No seasonality. A blended velocity does not know that Q4 is coming. For strongly seasonal catalogues this under-forecasts going into peak and over-forecasts coming out. Year-over-year factors are the obvious v2 — but you need a year of clean history first.
- No price elasticity. Drop the price and demand changes; the model will only notice a week later.
- No accuracy score, yet. You cannot score a forecast until enough time has passed to compare it with what happened. Store each forecast with its date from day one — that is what makes backtesting possible later, and it costs nothing now.
None of these stop it being useful. A forecast that is directionally right and always available beats a better one you do not have.
Building inventory tooling across several seller accounts? The correctness traps compound — see why Amazon order IDs are not unique, or get help building it properly.
FAQ #
Does Amazon have a demand-forecast API for sellers?
No. There is no SP-API operation that returns a demand forecast for a 3P seller. Forecasts exist on the vendor (1P) side, and the seller-side restock report is US-only and being phased out, so a forecast built from your own order history is the durable approach.
How do I calculate sales velocity from SP-API data?
Sum units sold — excluding cancellations — over 7, 30 and 90-day windows and blend them, weighting recent windows more heavily. A 50/30/20 split across 7, 30 and 90 days reacts within about a week without letting a single spike dominate.
What is a good reorder quantity formula?
velocity × (lead time + target cover) − current stock − inbound. Subtracting inbound units is what stops you double-ordering stock that is already in transit.
Can I use the FBA restock report instead?
It is US-only and being phased out, so building a dependency on it is risky. Use FBA Inventory for current stock and inbound quantities, and derive velocity from your own orders.
How do I handle seasonality?
A blended-velocity model does not capture it. Adding a year-over-year seasonal factor is the natural next step, but it requires at least a year of clean history. Until then, expect under-forecasting into a peak and over-forecasting after it.
Related guides
Amazon SP-API
The SP-API Reports Pattern Everyone Gets Wrong (Async, Step by Step)
The SP-API Reports API is asynchronous — request, poll, download, decompress — and most broken integrations either treat it like a synchronous call or poll it straight into a throttle. Here's the correct four-step flow, the status states that trip people up, and the gzip gotcha at the end.
Read guide →Amazon SP-API
Amazon Vendor Central API: What 1P Vendors Can Actually Automate
Vendor Central (1P) has a real API surface through the SP-API vendor family — retail analytics, purchase orders, shipments, invoices, and direct fulfillment. Here's what's genuinely automatable, what still isn't, and where the fastest wins are for a 1P vendor.
Read guide →Amazon SP-API
Amazon SP-API 403 Unauthorized: Every Cause and How to Fix It
A 403 "Access to requested resource is denied" from the SP-API almost never means your credentials are wrong — it usually means a role, a token, a region, or an authorization is mismatched. Here are the eight causes that produce a 403, in the order worth checking them, with the exact fix for each.
Read guide →Don't want to build this yourself?
I set this up for sellers and agencies every week. Book a free 30-minute audit of your Amazon data & PPC setup — you'll leave with a plan either way, whether we work together or not.