Amazon Brand Price Segments
Pricing
from $2.00 / 1,000 segment rows
Amazon Brand Price Segments
Turn your authorized Amazon product exports into brand-by-category price segments, seller offer gaps and currency-separated summaries. Useful for recurring assortment and competitor pricing reviews; no scraping or price predictions.
Pricing
from $2.00 / 1,000 segment rows
Rating
0.0
(0)
Developer
Practical AI Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Security
Limited permissionsShare
Paste product records you already have and get transparent price bands per brand, the bands where a brand has no offers, and separate market splits for each currency. The Actor works only on the data you supply. It does not visit Amazon or any other website, uses no proxies and makes no network requests.
What you get
For every category and currency combination:
market_splitrow: listing count, min / p25 / median / p75 / max / mean, the exact price range of each band, and bands that hold fewer listings than your minimum group size.brand_segmentrows: the same statistics per brand, share of listings, brand median versus market median (percent), how many listings fall in each band, the dominant band, and offer gap bands (bands where the market has listings but this brand has none).
Currencies are never mixed or converted. EUR and USD records form separate markets.
How bands work
Bands are quantile cut points of all supplied prices in one category and currency (for example quartiles when bandCount is 4). Cut points equal to the market minimum are dropped, so a market with identical prices has a single band. A price exactly on a cut point belongs to the higher band. Labels are B1 (lowest) upward.
Input
| Field | Meaning |
|---|---|
products | Array of objects (required). |
defaultCurrency | Used only when a record has no currency. Empty means such records are grouped as UNKNOWN. |
bandCount | 2 to 6, default 4. |
minGroupSize | Threshold for low-sample flags, default 3. |
maxRecords | Cap on processed records, default 5000. |
includeMarketRows | Default true. |
Recognised record fields (first non-empty wins): brand (brand, brandName, manufacturer), category (category, categoryName, productCategory, department), price (price, currentPrice, salePrice, offerPrice; numbers, strings such as "$1,299.50" or "1.299,50 €", or {"value": 12, "currency": "EUR"}), currency (currency, priceCurrency, currencyCode), identifier (asin, sku, productId). Records with the same identifier, currency and category are de-duplicated (first one kept).
Example input
{"products": [{"asin": "A1", "brand": "Alpha Audio", "category": "Headphones", "price": 24.99, "currency": "USD"},{"asin": "A2", "brand": "Alpha Audio", "category": "Headphones", "price": 34.5, "currency": "USD"},{"asin": "A3", "brand": "Alpha Audio", "category": "Headphones", "price": 39.0, "currency": "USD"},{"asin": "B1", "brand": "Beta Sound", "category": "Headphones", "price": "$59.00", "currency": "USD"},{"asin": "B2", "brand": "Beta Sound", "category": "Headphones", "price": "$74.90", "currency": "USD"},{"asin": "B3", "brand": "Beta Sound", "category": "Headphones", "price": "$89.00", "currency": "USD"},{"asin": "G1", "brand": "Gamma Gear", "category": "Headphones", "price": "29,90 €", "currency": "EUR"}],"bandCount": 2,"minGroupSize": 3}
The brand and product names above are illustrative placeholders, not real market data.
Output
Rows go to the default dataset. A SUMMARY record in the key-value store lists records received, used, de-duplicated, truncated and skipped (with reasons: missing_brand, invalid_price, not_an_object).
Key fields: recordType, category, currency, brand, listings, minPrice, p25, medianPrice, p75, maxPrice, meanPrice, medianVsMarketPct, shareOfListingsPct, bandCounts, dominantBand, offerGapBands, lowBrandSample, thinMarket, notes.
Limitations and sample-size caveats
- Results describe only the records you provide. An "offer gap" means no supplied listing in that band, not that the real marketplace lacks such offers.
- Small samples are unreliable. Brands with fewer listings than
minGroupSizeare flaggedlowBrandSample; markets with fewer than two listings per band are flaggedthinMarket. Quantiles of a handful of prices move a lot when one record changes. - Prices are taken as given: no fees, shipping, coupons, variants or time-of-capture adjustments. Mixed capture dates distort comparisons.
- Brand names are matched case-insensitively after whitespace cleanup, with no alias merging (for example "Acme" and "Acme Official" stay separate).
- A bare
$is ambiguous (USD, CAD, AUD and others), so it is not interpreted. Provide acurrencyfield ordefaultCurrency. Thousands/decimal separators in strings are inferred heuristically; use numeric prices when exactness matters. - Only the first
maxRecordsrecords are processed. - No currency conversion, forecasting or demand estimation.
Pricing
The code defines a segment-row charge event, charged once per dataset row after results are stored. Nothing is charged when input is invalid or no row is produced. Pay-per-event pricing is not configured in this repository; any plan is set separately on the platform.
Local tests
python -m unittest discover -s tests runs offline tests of the aggregation logic.