Vivino wine explorer
Wines from Vivino's explorer with every filter: market country and currency, wine type, minimum rating, price range, grapes, regions, origin countries, wine styles and wineries, sorted by rating, number of ratings, price or discount. Each wine has vintage and wine ids, name, year, link, type, winery, region, vintage and wine ratings with counts, the best offer price with merchant link, style with body and acidity, taste structure and flavour notes, and bottle image. 24 a page; pass next_page back as page.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
country | string | Market country (prices and availability), two letters. Default US. Example: US |
currency | string | Price currency, three letters. Default the market's. |
type | string | Comma-separated: red, white, sparkling, rose, dessert, fortified. Example: red |
min_rating | number | Minimum average rating, 1-5. Example: 4 |
price_min | number | Minimum bottle price. |
price_max | number | Maximum bottle price. Example: 50 |
grapes | string | Comma-separated grape ids (2 = Cabernet Sauvignon, 14 = Pinot Noir, 5 = Chardonnay). |
regions | string | Comma-separated region ids. |
countries | string | Comma-separated origin countries (fr, it, es, us ...). Example: fr |
styles | string | Comma-separated wine style ids. |
wineries | string | Comma-separated winery ids. |
sort | ratings_average | ratings_count | price | discount_percent | top_list_rank | ratings_average (default), ratings_count, price, discount_percent or top_list_rank. Example: ratings_average |
order | asc | desc | asc or desc. Example: desc |
page | integer | Page number, starting at 1. Example: 1 |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/vivino/v1/explore?country=US" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/vivino/v1/explore",
params={"country": "US"},
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/explore");
url.searchParams.set("country", "US");
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).