List the market
Both sides of Cru’s market in one call: every wine with a bid or an offer, each with its bids and its offers.
Bids are net — what a seller receives. Offers are gross — what a buyer pays. They are the same objects as /market/bids and /market/offers, read from the same books.
Query parameters
ALL OPTIONAL| PARAMETER | DESCRIPTION |
|---|---|
| limitinteger · 1–250 | Number of wines to return. A larger value is refused with VALIDATION_INVALID_VALUE, not reduced. Default: 100 |
| offsetinteger · ≥ 0 | Number of wines to skip. Default: 0 |
| lwinstring · CSV · ≤ 20 | Only these wines: up to 20 comma-separated 18-digit LWIN18 codes. One that is not 18 digits is refused with VALIDATION_INVALID_VALUE. |
| depthinteger · ≥ 1 | How many bids and how many offers to return per wine, best first: bids in book order, offers cheapest first. Omit it for every level. Default: every level |
| include_market_priceboolean | Add market_price — Cru’s market price for the wine, as a number — to each wine. Default: false |
| include_last_tradeboolean | Add last_trade — the last traded price and when — to each wine. Default: false |
A wine is listed when it has a bid or an offer, so one of its two lists is often empty. Wines come by LWIN18, ascending, and pagination counts wines.
Response fields
200 OK · pagedEach item in data.markets carries the wine, its bids and its offers.
lwin18string
The 18-digit LWIN: wine, vintage and pack together. Match on all 18 digits.
wine_namestring | null
Cru’s name for the wine.
vintageinteger | null
The vintage year. 1000 means non-vintage.
pack_sizestring | null
Pack format, for example 6x75cl.
product_urlstring | null
The wine’s page on the Cru storefront for the market you called.
currencystring
ISO 4217 currency of every price in this market: the currency of the market you called.
market_pricenumber | null · optional
Only with include_market_price=true: Cru’s market price, in currency. Null when Cru has no price for the wine.
last_tradeobject | null · optional
Only with include_last_trade=true: price, and traded_at. Null when there is none.
Each item in bids[]
codestring
Opaque bid code: BID- and 43 more characters. Do not parse it. Your own bids carry the same code here and in /bids.
pricenumber | null
Net price per unit — what a seller receives after Cru’s commission — converted into the market’s currency at today’s rate, to 2 decimal places. null in the rare case Cru cannot price the bid.
quantityinteger
Units the bid still wants.
is_own_bidboolean
True when the bid is yours. Your own bids are listed, but you cannot sell into one.
expires_atdate | null
YYYY-MM-DD. For bids Cru carries from other venues this is always set two days ahead, not taken from the venue.
updated_atdatetime | null
Last change, RFC 3339 UTC.
requirementsobject
What stock must satisfy to fill the bid: condition_status (always verified — only Verified stock can fill a bid), landed_stock_only, and deliverable_warehouses — the warehouse codes whose stock can fill it.
Each item in offers[]
codestring
Opaque offer code: OFFER- and 43 more characters. Do not parse it.
pricenumber
Gross price per unit — what a buyer pays — in the market’s currency.
quantityinteger
Units on offer at this price.
min_quantityinteger
The fewest units that can be bought from this offer — almost always 1. A smaller purchase is refused.
statusstring
in_stock, in_transit or due_in, as the Cru product page shows it. Offers from other sellers and venues are always due_in, except a customer’s own stock already in Cru storage, which is in_stock.
etadate | null
YYYY-MM-DD: when the wine is expected in warehouse_code, the warehouse it is sold from and where a purchase is kept. Today for in_stock. Null until Cru’s market index has dated the offer.
duty_paidboolean
Whether duty has been paid on the wine.
condition_statusstring | null
verified (Verified), client_reserves (Client Reserve) or apd (As per description), strongest first. API conventions explains each.
condition_textstring | null
The written condition of As per description and Client Reserve stock, or null. Liv-ex and supplier offers never have one.
photo_urlsarray<string>
Photos of the wine, [] when there are none. Cru’s own stock links to Cru’s media; other photos are served by GET /photos/{id}.
warehouse_codestring | null
The Cru warehouse the wine is in — UK_DRAK, HK_KERRY, SG_TOLL, FR_DARTESS, US_NAPA — or for wine held elsewhere the one in its country. Null where Cru has none there.
Errors
An unknown query parameter returns VALIDATION_UNKNOWN_PARAMETER / 400, and an lwin that is not an LWIN18, or more than 20 of them, VALIDATION_INVALID_VALUE / 422. A limit, offset or depth that is not a whole number in range returns VALIDATION_INVALID_VALUE / 422, and a include_market_price or include_last_trade other than true or false VALIDATION_UNSUPPORTED_VALUE / 422. Missing or invalid credentials return AUTH_INVALID_CREDENTIALS / 401. A credential without market:read gets AUTH_INSUFFICIENT_SCOPE / 403. View all error codes →