Beta

The Partner Trading API v1 is in beta — endpoints and response shapes may still change.

Developers
Cru World Wine
API v1 · REST & MCP
Reference data

Retrieve a wine

One wine by LWIN18: producer, country, region, critic score, drinking window, market price, last trade, and every bid and offer on it.

GET/wines/{lwin18}LIVE
Required scopewines:readAuthentication requiredTry it

Path parameter

REQUIRED
lwin18string · 18 digitsThe wine’s LWIN18. Find one by name with GET /wines.
Every level of both books

With market:read as well as wines:read, the wine carries all its bids and offers — empty lists when it has none. The wine is returned either way.

Response fields

200 OK

Fields returned in data.wine: every search field, then these.

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.

producerstring | null

The producer.

regionstring | null

The region.

colourstring | null

Red, white, rosé and so on.

product_urlstring | null

The wine’s page on the Cru storefront for the market you called.

market_pricenumber | null

Always present: Cru’s market price in data.currency, or null when it has none.

short_namestring | null

A shorter display name.

countrystring | null

Country of origin.

sub_regionstring | null

Sub-region or appellation.

is_caskboolean

Whether this is a cask rather than bottles.

scorenumber | null

A critic score.

drinking_windowstring | null

When to drink it.

currencystring

The currency of the prices.

last_tradeobject | null

Always present: price and traded_at, or null.

bidsarray<object> · market:read

Every one of the bids on the wine, as /market/bids lists them. An empty list when there are none. Absent without market:read.

offersarray<object> · market:read

Every one of the offers, cheapest first, as /market/offers lists them. An empty list when there are none. Absent without market:read.

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

A malformed or unknown LWIN18 returns NOT_FOUND / 404. Missing or invalid credentials return AUTH_INVALID_CREDENTIALS / 401. A credential without wines:read gets AUTH_INSUFFICIENT_SCOPE / 403. View all error codes →

UP NEXT List the market

API credentials

Enter the client key and secret issued by Cru. They are kept for this browser tab’s session — a reload keeps them, closing the tab or clearing them ends them.

Credentials are never included in copied examples, and are redacted from anything the console prints back.

Request API access

Tell us who you are and what you want to build. Cru issues a client key and secret for your organisation, scoped to what you need.

Markets you trade in (choose one or more)

We use what you send here to reply about API access, and for nothing else. Cloudflare Turnstile checks the form for bots (privacy policy).