# Amazon prices: your offer vs the Featured Offer

Source: https://ipvolt.com/blog/amazon-offer-vs-featured-offer
Markdown: https://ipvolt.com/blog/amazon-offer-vs-featured-offer.md

[Home](https://ipvolt.com/index.md) / [Blog](https://ipvolt.com/blog.md) / Amazon prices: your offer vs the Featured Offer

Category: Analysis
Published: 2026-09-16
Updated: 2026-09-16
Author: ipvolt
Reading time: 6 minutes
Tags: proxies, troubleshooting

Compare your Amazon offer with the Featured Offer using matched context, known shipping and a tested offline model that preserves missing data.

Before calculating a gap between your Amazon offer price and a Featured Offer price, establish that both observations describe the same product, marketplace and selected customer context. Keep the seller identity and price components attached to each observation. If shipping or the required offer is unknown, hold the comparison.

This is a diagnostic for developers of authorized seller tools. The downloadable model makes that decision explicit before calculating a **pre-promotion item-plus-known-shipping subtotal**. All example records are synthetic. The fixed scope is US/USD, Consumer, New, one unit; there is no quantity field, so single-unit input is an assumption your adapter must enforce.

## A lower item price can produce a higher subtotal

In the first synthetic case, your seller is `seller-A`. Both records use the same ASIN, `NON_PRIME` membership, representative location and shipping-service labels, with observation times 30 seconds apart:

| Observation | Item | Known shipping | Subtotal | Seller |
| --- | ---: | ---: | ---: | --- |
| Your offer | $19.00 | $4.00 | $23.00 | `seller-A` |
| Selected Featured Offer | $21.00 | $0.00 | $21.00 | `seller-B` |

The model calculates `(19 + 4) - (21 + 0) = +2.00 USD`. Your item price is lower, but your defined subtotal is $2 higher. Positive output means your subtotal is higher; negative means lower. Known zero shipping is evidence; missing shipping cannot be replaced with zero.

A second case gives both sellers a $20 item price and known $0 shipping. The gap is `0.00`, while `featured_is_own_seller` is `false`: the selected Featured Offer still belongs to `seller-B`. A third case changes that seller to `seller-A` and returns `true`. Price equality and seller identity answer separate questions.

These results explain the supplied records. They do not explain why Amazon selected an offer or establish a price that will win.

## Select the response that answers your question

The field name “price” is insufficient provenance. Choose the record by the question it answers:

| Question | Appropriate evidence | Comparison role |
| --- | --- | --- |
| What offer does my seller/SKU report? | Requested `offers` from [getListingsItem](https://developer-docs.amazon/sp-api/reference/getlistingsitem), scoped to marketplace and offer type | Own-offer observation |
| Which offer is featured for the selected segment? | `featuredBuyingOptions` from [getCompetitiveSummary](https://developer-docs.amazon/sp-api/reference/getcompetitivesummary), scoped to ASIN/marketplace | Featured-offer observation |
| What are the lowest-priced offers? | Separate `lowestPricedOffers` data in the [retrieval guide](https://developer-docs.amazon/sp-api/docs/retrieve-featured-offers-batch-asins) | Different question; cannot substitute for featured data |
| What external price reference is reported? | `CompetitivePrice` outside Japan; `CompetitivePriceThreshold` in Japan | External-retailer reference; see the [migration announcement](https://developer-docs.amazon/sp-api/changelog/update-product-pricing-api-v2022-05-01-returns-new-competitive-price-and-deprecates-competitivepricethreshold) |
| What price might make my offer featured? | [Featured Offer Expected Price](https://developer-docs.amazon/sp-api/reference/getfeaturedofferexpectedpricebatch), or FOEP | Computed guidance, separate from an observed offer |

FOEP describes a computed listing price before promotions. Amazon explicitly withholds a Featured Offer guarantee because competing offers and customer-specific fulfillment capabilities can affect selection.

For the own side, request `offers` explicitly: `getListingsItem` defaults to `summaries`. Validate the seller/SKU request context and map the selected marketplace's SKU to the intended ASIN before joining competitive data. Select the applicable `B2C` offer and audience. The [Listings Items model](https://raw.githubusercontent.com/amzn/selling-partner-api-models/3659f96867bfc669aca7a524c2f95744ff0e4478/models/listings-items-api-model/listingsItems_2021-08-01.json) keeps these offer fields separate from the summary.

That response alone does not supply all the shipping, membership and location context required by this model. Your adapter needs separately evidenced inputs for those fields. Until they are known, retain the own price but leave this subtotal comparison unresolved.

## Make comparability an explicit contract

The model accepts normalized records, not raw Amazon responses. Its [complete cases file](https://ipvolt.com/downloads/amazon-offer-vs-featured-offer/cases.json) shows the exact shape. Each pair declares an `expected_own_seller_id` independently of both observations, then supplies source type, seller, ASIN, marketplace, currency, condition, customer type, membership, location, shipping service, timestamp and price components.

Apply these checks before passing real observations into that shape:

1. **Validate the individual response.** A successful batch envelope does not establish every member's success. Check each member's status, body, ASIN, marketplace and requested dataset. Preserve failed, absent and incomplete observations. The [Pricing model](https://raw.githubusercontent.com/amzn/selling-partner-api-models/3659f96867bfc669aca7a524c2f95744ff0e4478/models/product-pricing-api-model/productPricing_2022-05-01.json) defines per-member status and optional datasets.
2. **Select the intended context.** Featured offers are segmented by membership and regional context. Optional `sampleLocation` represents a location within the segment, not an exact delivery quote for every shopper. Retain what the source actually establishes.
3. **Preserve unknown components.** Pricing `listingPrice` excludes shipping, Points and promotions; shipping options are optional estimates. The same model therefore cannot justify silently treating missing shipping as free.
4. **Keep the calculation narrow.** Amazon warns that returned promotions may omit active promotions. This subtotal excludes taxes, Amazon Points, coupon eligibility, complete promotion coverage and fulfillment quality. It is not a checkout total. [Promotion coverage](https://developer-docs.amazon/sp-api/docs/retrieve-featured-offers-batch-asins).

The executable checks exact equality of normalized membership, location and service strings. Those are **trusted labels**, not proof of equivalent Amazon contexts. It also trusts the adapter's source, seller and product labels. Use `null` when context is unknown; two invented `unknown` strings would create false confidence. `US` and `STANDARD` are lab labels, not a raw marketplace ID or a claimed Amazon shipping-option value.

## Run the model and inspect the holds

Extract the [complete comparison ZIP](https://ipvolt.com/downloads/amazon-offer-vs-featured-offer/amazon-offer-vs-featured-offer.zip), open a terminal in the directory containing `compare.py`, and run:

```sh
python3 -B compare.py
python3 -B compare.py --csv
python3 -B -m unittest -v test_compare.py
```

No packages or account credentials are needed. The [README](https://ipvolt.com/downloads/amazon-offer-vs-featured-offer/README.md) documents the contract; [compare.py](https://ipvolt.com/downloads/amazon-offer-vs-featured-offer/compare.py) and the [test suite](https://ipvolt.com/downloads/amazon-offer-vs-featured-offer/test_compare.py) are individually inspectable. Compare stdout with the [recorded JSON](https://ipvolt.com/downloads/amazon-offer-vs-featured-offer/example-output.json) and [CSV matrix](https://ipvolt.com/downloads/amazon-offer-vs-featured-offer/example-matrix.csv).

The 14 synthetic cases produce three comparisons and 11 holds under the default policy:

| Cases | Result | Interpretation |
| --- | --- | --- |
| Lower item price, higher subtotal | Compare; `+2.00` | Defined own subtotal is higher |
| Equal subtotals, different seller | Compare; `0.00`, seller flag `false` | Matching amount does not identify your seller |
| Equal subtotals, same seller | Compare; `0.00`, seller flag `true` | Selected record identifies your seller |
| Missing shipping; membership/location/currency mismatch; wrong own seller | Five holds | Resolve the missing evidence or incorrect join |
| Failed or missing Featured Offer | Two holds | Preserve unavailable observations |
| External reference, FOEP or lowest-price substitution | Three holds | Select featured-offer evidence |
| Observations 360 seconds apart | One hold | Exceeds the default time-skew policy |

A hold has no calculated subtotals or gap: JSON uses `null`, CSV uses empty cells. Invalid input instead stops the command with a nonzero exit. To experiment, edit a copy of `cases.json` and pass `--cases your-cases.json`; CSV is output, not an input format.

The default maximum skew is **300 seconds, inclusive**, configurable with `--max-skew-seconds`. It checks the distance between observation times. It checks neither absolute age nor Amazon freshness: two equally old records can compare. Choose an evidence-age policy separately before using the result operationally.

**Method:** ipvolt prepared this analysis with AI assistance, checked the primary sources and ran the offline model plus 14 passing tests on 16 September 2026 using CPython 3.14.7. Python 3.11+ is the source target; 3.11 was not exercised in that recorded run. No seller account, API response mapping or retail price collection was tested.

For a mismatch between a submitted price and your own observed listing, use [Amazon listing updates: accepted is not live](https://ipvolt.com/blog/amazon-listing-update-reconciliation). To schedule durable refreshes after listing events, use the companion [SP-API notification guide](https://ipvolt.com/guides/amazon-listing-notifications). Keep this comparison's result attached to its two observations and stated subtotal basis before making a pricing decision.

ipvolt is in development. [Join the early-access list](https://ipvolt.com/#waitlist-closing) for one email when access opens. Nothing else.

## Sources

- [getListingsItem](https://developer-docs.amazon/sp-api/reference/getlistingsitem)
- [Listings Items API 2021-08-01 model, pinned revision](https://raw.githubusercontent.com/amzn/selling-partner-api-models/3659f96867bfc669aca7a524c2f95744ff0e4478/models/listings-items-api-model/listingsItems_2021-08-01.json)
- [getCompetitiveSummary](https://developer-docs.amazon/sp-api/reference/getcompetitivesummary)
- [Retrieve featured offers for a batch of ASINs](https://developer-docs.amazon/sp-api/docs/retrieve-featured-offers-batch-asins)
- [Product Pricing API 2022-05-01 model, pinned revision](https://raw.githubusercontent.com/amzn/selling-partner-api-models/3659f96867bfc669aca7a524c2f95744ff0e4478/models/product-pricing-api-model/productPricing_2022-05-01.json)
- [Competitive-price migration and Japan exception](https://developer-docs.amazon/sp-api/changelog/update-product-pricing-api-v2022-05-01-returns-new-competitive-price-and-deprecates-competitivepricethreshold)
- [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon/sp-api/reference/getfeaturedofferexpectedpricebatch)

## Know when ipvolt access opens.

ipvolt is in development. Leave your email and we’ll notify you once when access opens.

Consent: One email when access opens. Nothing else.

[Notify me](https://ipvolt.com/blog/amazon-offer-vs-featured-offer#waitlist-blog-end). Use the email form on this page to join the interest list.

[Privacy](https://ipvolt.com/privacy)

## Related posts

- [Amazon listing updates: accepted is not live](https://ipvolt.com/blog/amazon-listing-update-reconciliation.md) (Analysis, Sep 14, 2026, 8 min read): Diagnose accepted Amazon listing updates by separating submitted attributes, live offers, inventory and buyability, with a practical reconciliation matrix.
- [Bookmaker odds feeds: validate before comparing](https://ipvolt.com/blog/bookmaker-odds-feed-validation.md) (Analysis, Sep 14, 2026, 7 min read): Compare bookmaker odds only after checking market identity, settlement rules, timestamps and status. Use a local validator to expose false comparisons.
- [Cloudflare AI Agent Blocks: What to Fix First](https://ipvolt.com/blog/cloudflare-ai-agent-proxy-setup.md) (Analysis, Sep 14, 2026, 9 min read): Diagnose Cloudflare failures in AI-agent jobs, configure a stable browser proxy, and reject challenges or invalid content before RAG ingestion.

## Related guides

- [Configure a proxy in Python Requests](https://ipvolt.com/guides/python-requests-proxy.md): Make a Python Requests proxy configuration explicit, encode credentials correctly, and distinguish connect and read timeouts from a total job deadline.
- [Troubleshoot proxy timeouts one stage at a time](https://ipvolt.com/guides/proxy-timeout-troubleshooting.md): Separate proxy DNS, TCP, CONNECT, TLS and response delays with curl timings, then set request deadlines and decide whether a retry is safe.
- [Use a proxy with curl](https://ipvolt.com/guides/curl-proxy-setup.md): Test an HTTP proxy with curl, separate proxy authentication from destination authentication, and read connection failures without exposing credentials.

## About ipvolt

Technical analysis from the ipvolt team.

ipvolt access is not open yet.
