Seasonal product research usually starts with one question: what will sell this holiday?
For most sellers there is a better first question: what happens to the stock that is left once the season is over. Seasonal sales are not spread evenly across the year, but storage, tied-up cash and clearance losses accrue every month. The sharper the peak, the heavier the inventory you carry through the trough.
So this post runs in a fixed order: confirm the seasonality is real and repeats every year, measure how concentrated it is, check whether new listings can capture any of it, and only then work out which month to make the call. General product research is covered in treating product research as elimination; this post handles the time dimension only.
Step 1: find the month the ramp starts, across several years
The Keyword Research Trends endpoint returns a keyword's monthly history. The documented example starts in January 2017:
curl --request POST \
--url https://ecommercedataapi.com/v1/amazon/keyword-research/trends \
--header "Content-Type: application/json" \
--header "X-API-Key: ${ECOMMERCE_DATA_API_KEY}" \
--data '{
"marketplace": "US",
"keyword": "wireless charger"
}'Each row is one month. The fields that matter:
| Field | Meaning |
|---|---|
time | The month, as a string like "2017年01月" — not a date type |
search | Searches that month |
purchase / purchaseRate | Purchases and purchase rate |
yearlyGrowth / chainGrowth / threeMonthGrowth | Year-over-year, month-over-month and three-month growth |
What you are looking for is not the peak month but the month the curve starts to climb. The peak has the most volume, but entering then is already late. Your decision point sits one full restocking cycle before the ramp — production, freight and inbound added together.
And it has to repeat. Overlay the same stretch of months for at least two or three years. A curve that starts climbing in the same month and peaks in the same month every year is seasonal. A spike that happened once is more likely a fad, and it is not a season you can bank on next year.
Two things to watch while reading it:
- The keyword is returned as
keyword. An earlier misspelling,keywrod, is still returned with the same value, so older code keeps working. timeis a Chinese-formatted string. Parse it into a date before sorting or charting; sorting the raw strings breaks across year boundaries.
Step 2: use year-over-year to tell whether this season will be bigger or smaller
Once the season is confirmed, the next question is this year's size.
Look at yearlyGrowth in the months before the season starts, not chainGrowth. For a seasonal term, month-over-month growth jumps every year during the ramp; that jump is the season, not a real rise in demand. Year-over-year compares a month with the same month last year, so the seasonal effect cancels out and what remains is the change in demand itself.
The same pair of fields can also diagnose a ranking drop after the fact — that use is covered in keyword rank monitoring. Here it is used looking forward.
Two values need care:
- The earliest months have nothing to compare with. In the example, January and February 2017 both show
yearlyGrowthof 0. That zero means "no base", not "no growth". - One row mixes two notations. Working from the example,
purchaseRate: 8.31is a percentage (1085 ÷ 13059 ≈ 8.31%), whilechainGrowth: 0.01is a fraction (13148 ÷ 13059 − 1 ≈ 0.0068). Normalize units before putting them in the same table.
Step 3: measure seasonal concentration — how much of the year lands in the peak
This is the step that most decides whether to do it at all, and the one most often skipped.
Move from the keyword down to products: pick a few representative ASINs in the category and pull monthly data from the ASIN Sales Trends endpoint. The salesTrendPoints array has one row per month with month, price, averagePrice, parentUnitSales, childUnitSales, parentSalesRevenue and childSalesRevenue.
curl --request POST \
--url https://ecommercedataapi.com/v1/amazon/asin/sales-trend \
--header "Content-Type: application/json" \
--header "X-API-Key: ${ECOMMERCE_DATA_API_KEY}" \
--data '{
"marketplace": "US",
"asin": "B08GHW4TBS"
}'The calculation is simple:
seasonal concentration = units in the peak months ÷ units for the whole yearThe higher the ratio, the shorter the window in which your stock has to sell. It translates directly into risk:
- Low concentration: seasonality is a bonus. The product still sells in the off-season and inventory pressure is light.
- High concentration: the year's business is packed into a few months. Overestimate the order and the remainder waits until next year or gets marked down to clear.
Two definitional points:
- Keep parent and child apart.
parentUnitSalesis the whole variation family;childUnitSalesis this one child. Comparing a parent figure against a single-listing competitor inflates it by the number of variations. See what Amazon sales data can and cannot tell you. - Sales are estimates. A ratio like concentration is reliable because a model's systematic error partly cancels between numerator and denominator. Treating the absolute unit figures as an order quantity is not.
Read price and averagePrice month by month as well. If the peak volume came from deep discounting, it is not volume you can capture at full price.
Step 4: check whether new listings can capture any of the peak
The season is real and the volume is there. One question remains: will incumbents take all of it.
The Listing Trends endpoint groups products by the year the listing launched and returns year, products, units, revenue and unitsRatio for each group. Note that its unit of time is the year, not the month — it cannot show seasonality. It answers a different question: how much of the category's sales went to products launched in the last year or two.
- Low
unitsRatiofor the recent-year groups → the peak goes almost entirely to older listings, and a new product entering for the season will struggle to get any of it. - A meaningful share for the recent-year groups → new players keep getting in, and entering for the season has a chance.
This endpoint needs a category nodeIdPath. Node IDs differ between marketplaces, so look up the path for your marketplace with the Product Categories endpoint first. The existing-stock view by age band ("over 3 years" and so on) is covered in category analysis.
Cross-check with the category curve and an off-Amazon curve
A keyword curve represents one term. Two other curves test whether it is representative:
At the category level, the Product Demand Trends endpoint returns an items series for a category node, each item a date and glanceViews. It reflects the rhythm of the whole category rather than one term. If the category curve and your keyword curve have very different shapes, the keyword may not represent the category's main demand — look at more terms.
Off Amazon, the Google Trends endpoint returns items (time as a timestamp, value as the interest score). googleProp selects web search (web) or shopping search (shoppingCart), and monthly controls monthly aggregation. Use it as a cross-check: when on-Amazon and off-Amazon curves show the same seasonal rhythm, the conclusion is sturdier. Do not treat it as a settled leading indicator of Amazon demand, though — the relationship varies by category, and you need to check it against history yourself. The Google Trends API page covers the parameters and limits in more detail.
Three things this data cannot do
It does not know your restocking cycle. The data tells you which month the ramp starts. How many months ahead to order depends on your factory, your freight mode and your inbound schedule, and only you can fill that in.
It does not know whether this year has a shock in it. Historical curves assume this year resembles previous ones. New platform rules, logistics changes or a competitor's big promotion can all pull it off course. Year-over-year hints at direction; it does not predict the result.
It does not carry your clearance cost. Concentration comes out as a ratio. What each leftover unit costs you in storage and markdowns after the season depends on your own cost structure.
FAQ
Can I judge seasonality for a new term with only one year of history? Not reliably. Seasonality means repetition, and one year cannot separate a season from a one-off trend. Look at the demand curve of its category first, and at the multi-year curves of similar established terms for reference.
What concentration counts as high? There is no universal threshold; read it together with your cash cycle and storage costs. It is more useful to rank several candidates by concentration than to fixate on one absolute value.
Which month exactly is the decision point for entering a season? The month the ramp starts, minus your full restocking cycle. Both differ by category and by seller, so that month can only be worked out from your own numbers.
Can I set the order quantity from the peak month's sales alone? Not advisable. The peak month's figure is an estimate, and the order quantity should follow the total across the whole seasonal window and how much leftover stock you can accept — not a single month's peak.