Vivino wine
A wine on Vivino (optionally one vintage): name, winery, region, grapes, average rating and counts, alcohol, closure, style (body, acidity, food pairings), taste structure (acidity, sweetness, tannin, intensity) and flavour notes, highlights, best offer price and merchant, organic and biodynamic flags, image, and every vintage with its rating.
Add vintage_prices=1 for the market price of every vintage in vintages (price, median_price, currency, for the market of country; vintage_prices_market names it). When a vintage has no offer, its prices are null and nearest_priced gives the closest vintage that has one.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
id | string | Wine id, the number in vivino.com/.../w/<id>. Or give url. Example: 3151741 |
url | string | A vivino.com wine link instead of id. |
year | string | One vintage year. Default the wine's page. |
country | string | Market country for the offer price. Default US. Example: US |
vintage_prices | 1 | 0 | Set to 1 to add each vintage's market price to vintages. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/vivino/v1/wine?id=3151741" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/vivino/v1/wine",
params={"id": "3151741"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/vivino/v1/wine");
url.searchParams.set("id", "3151741");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).