Comparison

What a captured basket would cost here

Read-only comparison of a basket a buyer captured on another marketplace. Nothing is ordered, held, reserved or written, and no captured price is stored. The result is a catalogue-price ESTIMATE against our live named inventory — never a vendor-confirmed price, a guaranteed quote, or a claim that the source vendor's figure was verified.

Read authority only: an authenticated customer session or an API key carrying the read scope. The operator token is refused (403). Metering runs after authentication and before any catalogue or price work, charged one row per input line, so a 100-line basket costs 100 rows of read budget; a per-(domain, type) candidate cap, a whole-request candidate budget and a bounded resolve concurrency keep the price work bounded, and an overflowed pair is stated on its line rather than silently truncated into a cheapest claim.

Each line matches EXACTLY the same canonical domain and the same placement type as a live, non-delisted, named offer. A publisher is never substituted silently: no match is unmatched, not the nearest alternative. A line is comparable only when the terms known on BOTH sides agree — the writing term and the link attribute must each be known and equal (writing does not apply to a link placed into an existing page). A cheaper offer whose known terms disagree is an alternative whose estimated_savings_usd_minor is null; a different placement is not a cheaper placement. Restricted domains stay visible but are flagged for review and are never counted as comparable. The candidate price is all-in — the placement price plus the content fee the resolved plan carries — in credits (1 credit = 1 US cent), priced through the same eligibility and content machinery POST /v1/orders and the basket checkout use.

Numeric savings are USD-only and all-in-only. A non-USD source price stays visible but is never converted (no exchange rate is invented) and carries no numeric saving; a captured price not flagged source_all_in withholds a numeric saving rather than possibly overstating it; and an unknown term is never promoted to a known one. The matched_* summary figures cover only the comparable lines — matched_estimated_savings_usd_minor is the saving on matched lines only — while whole_basket_estimated_savings_usd_minor folds in basket_adjustment_usd_minor and is null unless every line is comparable, so a partial basket is never presented as a whole-basket saving. Prices are scrapes, not live quotes: candidate.observed_at carries the age of the figure and an aged observation is quoted as observed rather than presented as current. No supplier name, cost or internal id is ever serialised; candidate.offer_id is the public, pseudonymised id.

post/v1/baskets/compare

Request

  • Base URL: https://api.placementapi.com
  • URL: https://api.placementapi.com/v1/baskets/compare
  • Auth: HTTP bearer

Request body

basket_adjustment_usd_minorinteger

Whole-basket discount (negative) or surcharge (positive) in USD minor units, applied only to the whole-basket saving. It is never folded into the per-line or matched-line figures, and a discount may not push a fully known source total below zero.

Response

OK

version1 required
calculated_atstring date-time required

When this comparison was computed.

Changes

No recorded changes to this operation across all 1 revision of this API.