List offers
Every source's price and stock the organisation can see, newest first: filter by variant, product, source, availability or updated_since. Each offer shows only the fields its licences cover, as in GET /v1/products, and names its variant and catalogue; its product, title and SKU only where the licences show them.
- Scopes
products:read - Rate classread
/v1/offersEvery source's price and stock the organisation can see, newest first: filter by variant, product, source, availability or updated_since. Each offer shows only the fields its licences cover, as in GET /v1/products, and names its variant and catalogue; its product, title and SKU only where the licences show them.
Authorization
apiKey An API key (fo_live_… / fo_test_…) as a bearer token
In: header
Query Parameters
Only offers of this variant
^var_[0-9A-Za-z]{22}$Only offers of this product's variants
^prod_[0-9A-Za-z]{22}$Only this source's offers
^src_[0-9A-Za-z]{22}$Only offers of this availability
Value in
- "in_stock"
- "low_stock"
- "out_of_stock"
- "backorder"
- "preorder"
- "discontinued"
- "unknown"
Only offers that changed at or after this time (UTC)
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$date-timePage size
1 <= value <= 10020Opaque position returned by a previous page
^[A-Za-z0-9_-]{1,512}$Header Parameters
Dated API version; pinned per organisation on first use and overridable per request
Value in
- "2026-10-01"
- "2026-10-04"
The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused
Value in
- "live"
- "test"
ETag of a cached representation; a match returns 304
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/v1/offers"{ "object": "list", "data": [ { "object": "offer", "id": "string", "source": "string", "location": "string", "currency": "usd", "cost": 0, "msrp": 0, "map": 0, "price": 0, "compare_at": 0, "quantity": 0, "incoming": [ { "quantity": 1, "eta": "2019-08-24" } ], "availability": "in_stock", "lead_time_days": 0, "version": 1, "observed_at": "2019-08-24T14:15:22Z", "withdrawn_at": "2019-08-24T14:15:22Z", "variant": "string", "catalogue": "string", "product": "string", "product_title": "string", "variant_sku": "string" } ], "has_more": true, "next_cursor": "string"}Get a product GET
A master product with its variants and offers, from the organisation's own or a licensed catalogue, with only the fields its licences cover.
List products GET
Products the organisation can see, by ID. With `updated_since`, only those that changed since then (a variant or offer change counts): how a feed reader catches up after its cursor expired. `status`, `brand`, `category`, `availability` and `q` narrow the list further; every filter given must match.