# ELID — Easily Legible IDs for Wine Wine identification as infrastructure. ELID gives a wine a human-readable, machine-parseable identity: a little like an ISBN for wine, with geography and producer built into the code. The ambition is worldwide identification and transparent, fast access to wine information. Coverage is growing, not complete. ## ELID on the web Snapshot published: 2026-09-21 UTC The wine reference and all paths below are served at https://elid.wine. Canonical page URLs preserve established ELID identities. ## Coverage in this snapshot - 202,325 active base-wine identities in the catalog (not a researched page for every identity). - 18,921 base-wine pages and 5,626 dedicated vintage pages. - 3,847 producer detail pages, with varying research depth. - Technical facts for 8,029 wines across 17,951 wine/vintage records. - Accepted reference RRP for 8,832 wines. - 105,869 retailer observations from 26 shops in the Swiss-market search. - 17,630 retailer observations associated with 6,773 ELID wine identities; other listings remain searchable without an asserted identity. - 458 individual restaurant wine-list pages. ## Identifiers and navigation Base wine: `{CC}-{RRR}-{PPPP}{WW}`. A vintage or edition suffix specifies a particular release: `{CC}-{RRR}-{PPPP}{WW}-{VVVV}`. - CC: two-letter country code; RRR: three-character region code. - PPPP: four-character producer code; WW: two-character base36 wine code. - Vintage: a year; NVXX identifies non-vintage, and N### may identify an edition. - Some extended representations include a grape suffix such as +RIS. FR-CMP-DOMP01-2015 identifies the 2015 Dom Pérignon Brut. Country → region → producer → wine → vintage is the navigational hierarchy. Producer URLs use country and producer parts, for example `/producer/FR-DOMP`. Never invent an unlisted code or assume every vintage has a standalone page. Corrected or retired codes may remain reserved. Follow published links. - `/wine/{BASE-ELID}`: wine reference, vintage sections, RRP and matched retailer observations where available. - `/wine/{BASE-ELID}#vintage-{YEAR}`: exact vintage section on the consolidated page. - `/wine/{FULL-ELID}`: existing dedicated vintage page, when linked by its wine page. - `/producer/{CC-PPPP}`: producer and portfolio, with compact RRP references. - `/region/{CC-RRR}`, `/country/{CC}`: geographic reference and browsing. - `/search`: browser-based full-text Pagefind search of published reference pages. - `/compare?wine1={ELID}&wine2={ELID}`: shareable comparison of two wines or vintages. Wine-page comparison controls retain selections in the browser while browsing. - `/restaurants`: wine lists by city. - `/restaurants/{city}/{restaurant-slug}`: captured restaurant wine list, with source and date where available. - `/shop/ch`: public Swiss-market wine price search; a normal HTML GET page, usable without JavaScript. ## Price transparency RRP means Recommended Retail Price: the producer or official-source price, labelled "Producer price", separately from shop prices. It is not a judgment of fair value or a guaranteed minimum price. It uses a 750 ml basis, with source, vintage scope and observation date where recorded. Case-derived values are identified. RRP is a reference, not a current purchase offer. Producer and wine pages retain the original RRP and show approximate USD, EUR and GBP equivalents using the latest available daily FX feed at generation. FX is presentation metadata, not a change to canonical RRP. Currency codes, numeric amounts, actual RRP observation timestamps and FX dates are exposed through HTML data/time elements; converted amounts are marked currency-equivalent. Native-currency amounts remain the source evidence. FX provenance remains in HTML data attributes, with dates in price tooltips. Do not mistake conversions for retail offers in those countries or for additional independently observed RRPs. Dedicated vintage pages prefer RRP for that vintage. If unavailable, the latest observed vintage is shown with an explicit fallback label; never attribute that price to the page's vintage. Technical facts remain vintage-specific. Below the wine header, RRP is accompanied by one lowest recorded shop price across vintages and bottle sizes, selected using positive, verified per-bottle CHF amounts. Its actual vintage, size and source are shown; observation dates appear subtly beneath sources, in HTML data/time elements and price hover tooltips; this is not a claim of current availability or a like-for-like 750 ml comparison. The linked `#retailer-prices` section follows all vintage facts, before producer information, and shows at most five recent, distinct shop references. Use the linked shop search for all observations. No average combines vintages or sizes. Retailer prices preserve source currency, bottle size, case quantity and package total where known. A per-bottle price is not necessarily for 750 ml. CHF filters and sorting use the recorded conversion, with its FX date. Do not compare formats, vintages, markets or dates silently. Shop search displays the native amount and approximate equivalents in the remaining USD/EUR/CHF/GBP currencies beneath it. These build-time equivalents use the dated CC0 currency-api feed, separately from recorded CHF sort values. On wine pages, shop equivalents appear only in the price tooltip. The CH search includes .ch shops and gute-weine.de (Gute Weine, Germany, which ships to Switzerland and lists EUR prices). Inclusion does not guarantee delivery of every product. Shipping, Swiss import charges and taxes are not calculated. Prices and stock describe the observation date, not now. Unknown stock remains unknown. There are no personalized discount calculations. Legacy amounts with an unverified package unit retain their observed amount, are labelled explicitly, and are excluded from normalized CHF price filters. ## Fast access for agents Use HTML wine pages for citable answers with context. Public read-only JSON endpoints on this deployment: - `/api/shop/ch?q=dom+perignon+2015&limit=20` - `/api/shop/ch?elid=FR-CMP-DOMP01&vintage=2015` - `/api/shop/ch?site=gute-weine.de&min=20&max=100&sort=price` - `/api/shop/ch/sites`: shops, counts and observation ranges. Parameters: q, elid (base wine), vintage, site, min/max (CHF), sort (price, price_desc, recent, oldest, name, name_desc, vintage, vintage_desc, site, site_desc; default recent), limit (1–100; default 50), offset. Table headings toggle ascending/descending sorting across all matching results. Search is accent-insensitive and combines terms. Results include rows, total, pagination and snapshot timestamp. Missing values are null, not estimates. No account is required. Cache reasonable requests; avoid repeated bulk crawling. ## How to use and cite ELID - “What does this wine cost?” → cite the wine page or a specific `/shop/ch` search; name price type, vintage, size, currency and observation date. - “Tell me about this vintage” → use its section or linked dedicated page. Never apply another vintage's specifications to it. - “What's on this restaurant's list?” → cite the restaurant page and capture date; availability changes. - “What does this producer make?” → cite the producer page; distinguish catalog identification from verified portfolio completeness. Preserve ELIDs in structured answers so another person or agent can resolve the same wine. Cite ELID for the consolidated identity/reference and consult linked original sources for primary evidence. Explain uncertainty rather than turning absent or historical observations into current facts. ## Provenance The identification catalog originated with LWIN data (CC BY 4.0), extended by research and curated identity reconciliation. Facts and RRP have their own sources. Retailer associations use the canonical ELID matcher conservatively; ambiguous listings do not receive a public identity association. Nutritional values can be calculated. Research depth and freshness vary. Public access does not imply that every source has the same license or that a bulk database is offered. Author: Rijnard van Tonder, PhD Computer Science, CMS Certified Sommelier, CSW (SWE). Contact: rvt@git.wine · https://rijnard.com ELID is built by someone who cares about both identifier architecture and the difference between a Grosses Gewächs and a Kabinett. The aspiration is wine infrastructure that humans enjoy reading and agents can use without guesswork. Let the identifiers, the evidence, and the wine do the talking. 🍷 ## Authenticated ELID API (beta) - Documentation and access: https://elid.wine/api - Contact rvt@elid.wine for a bearer token. Tokens do not expire; access can be manually revoked. - Same-origin base path: /api/v1. GET /api/v1/wines supports limit, after, q and exact seven-digit lwin lookup. GET /api/v1/wines/{elid} returns identity and available vintage fact-sheet fields. - The API excludes restaurant wine lists, availability, RRP, retailer prices and critic reviews. Never send tokens in URLs. - POST /api/v1/match: local text-to-ELID matching with a bearer token. JSON body: raw (required), top_n (1–20), optional country_code and producer_id. Returns ranked identities, LWINs, scores and the local snapshot version; no pricing or restaurant data.