Vivino
The world's largest wine database and its marketplace — ratings, grape composition, food pairings and taste structure per vintage, plus the merchants selling the bottle and what they charge.
/vivino/v1/search3 creditsSearch Vivino's wine database. Filters by free text, grape, region, country of origin, wine type, vintage year, price band and rating band, and every filter here was measured to change the result count. Returns the vintage id and the wine id, the rating Vivino prints on the card AND the all-vintages pool beside it, the region/winery/style, and the cheapest live merchant offer.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | optional | — | Free text: a wine name, a producer, a grape or a region ('catena zapata', 'barolo', 'malbec', 'grower champagne'). |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
| currency | optional | — | ISO currency for the prices, e.g. USD, EUR, GBP, JPY. Defaults to the market's own currency (us -> USD, de -> EUR). |
| wine_type | optional | red · white · sparkling · rose · dessert · fortified | Wine type. Repeatable (comma-separated). |
| country_codes | optional | — | Country of ORIGIN of the wine, ISO-2 (ar, fr, it, es). This is the wine's origin, not the storefront — use `market` for the storefront. |
| grape_ids | optional | — | Grape ids from the `grapes` action (9 = Malbec). |
| region_ids | optional | — | Region ids (454 = Mendoza). From a search result's region.id or the `region/detail` action. |
| wine_style_ids | optional | — | Style ids from the `wine_styles` action. |
| winery_ids | optional | — | Winery ids. REFINES a search — the source rejects it as the only filter, so pass it with a query or another filter. |
| food_ids | optional | — | Food-pairing ids from the `foods` action (4 = Beef). |
| years | optional | — | Vintage year(s), e.g. 2019. |
| min_rating | optional | 1–5 | Lowest acceptable rating, 1-5. |
| min_ratings_count | optional | 1– | Only wines with at least this many ratings. REFINES only. |
| price_min | optional | 0– | Lowest price, in the requested currency. |
| price_max | optional | 0– | Highest price, in the requested currency. |
| natural_only = false | optional | — | Only natural wines. |
| discount_only = false | optional | — | Only wines currently discounted. |
| order_by | optional | ratings_average · ratings_count · price · discount_percent · relevance · best_picks | Sort order. Measured to reorder the result set, not merely be echoed back. |
| order | optional | desc · asc | Sort direction. Defaults to desc, except order_by=price which defaults to asc. |
| page = 1 | optional | 1– | 1-based page number. |
| per_page = 25 | optional | 1–50 | Results per page, 1-50. The source refuses more than 50 (HTTP 400). |
/vivino/v1/wine/detail2 creditsOne VINTAGE in full: the vintage's own rating, rating count and review count (and the flag saying whether Vivino rates this vintage on its own), the wine-level pool beside it, the ratings histogram, the global/country/region/winery ranks, the grape composition in percent, food pairings, the crowd taste structure, both published alcohol figures, the drinking window and the critic scores.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| vintage_id | optional | — | The VINTAGE to read — one specific year of one wine. Accepts the numeric vintage id from search, or a vivino.com wine URL. Vintage, not wine: the same wine rates and prices differently per year. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
| include_taste = true | optional | — | Fetch the crowd taste structure and flavour groups. Vivino serves these on a separate route, so this costs one extra upstream request; set false to skip it. |
/vivino/v1/wine/vintages1 creditEvery year of the same wine with that year's OWN rating, rating count and review count. This is the row a collector compares, and it is the honest answer to 'is the 2019 better than the 2018' — the search card cannot answer it.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| vintage_id | optional | — | The VINTAGE to read — one specific year of one wine. Accepts the numeric vintage id from search, or a vivino.com wine URL. Vintage, not wine: the same wine rates and prices differently per year. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
/vivino/v1/wine/prices1 creditThe marketplace half: every merchant Vivino lists for one vintage, with its price, bottle size, discount and link. Also the median, cheapest and dearest offer. The merchant set is per storefront — the US and DE markets share none.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| vintage_id | optional | — | The VINTAGE to read — one specific year of one wine. Accepts the numeric vintage id from search, or a vivino.com wine URL. Vintage, not wine: the same wine rates and prices differently per year. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
| currency | optional | — | ISO currency for the prices, e.g. USD, EUR, GBP, JPY. Defaults to the market's own currency (us -> USD, de -> EUR). |
/vivino/v1/wine/reviews2 creditsThe published reviews for a wine, newest first, with the star rating, the note and the reviewer Vivino shows on the page. Pass `year` to read one vintage's reviews.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| wine_id | optional | — | The WINE (all vintages pooled). Accepts the numeric wine id from search or a vivino.com wine URL. |
| year | optional | — | Restrict to one vintage year. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
| page = 1 | optional | 1– | 1-based page number. |
| per_page = 25 | optional | 1–50 | Reviews per page, 1-50. Asking for more returns 50. |
/vivino/v1/wine/highlights1 creditThe badges and ranks Vivino awards a vintage: global rank, rank within its country, its region and its winery, plus the critic scores behind them.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| vintage_id | optional | — | The VINTAGE to read — one specific year of one wine. Accepts the numeric vintage id from search, or a vivino.com wine URL. Vintage, not wine: the same wine rates and prices differently per year. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
/vivino/v1/wines/batch3 creditsUp to 50 vintages in ONE call — how a catalogue of thousands is refreshed without spending a call per wine. `full=false` returns the identity and rating block at about a fifth of the bytes.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| vintage_ids | required | — | Vintage ids, up to 50 per call. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
| full = true | optional | — | true = the complete vintage record; false = identity, year and ratings only, about 5x smaller. |
/vivino/v1/winery/wines3 creditsA winery's catalogue: every wine it makes, with the wine-level rating and the best-rated vintage of each.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| winery_id | required | — | Winery id, from any search result's winery.id. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
/vivino/v1/region/detail1 creditOne wine region: its country, parent and sub-regions, its top grapes and how many wines and wineries Vivino holds for it.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| region_id | required | — | Region id (454 = Mendoza). |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
/vivino/v1/grapes2 creditsThe grape enum behind `grape_ids` — 2229 grape varieties with the id, the name and how many wines Vivino holds for each.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | optional | — | Filter the list by name, case-insensitive. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
| per_page = 25 | optional | 1–50 | Results per page, 1-50. The source refuses more than 50 (HTTP 400). |
/vivino/v1/foodsfreeThe food-pairing enum behind `food_ids` — the 23 pairings Vivino uses.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
/vivino/v1/wine_styles2 creditsThe style enum behind `wine_style_ids` — 747 regional styles such as 'Argentinian Mendoza Malbec'.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | optional | — | Filter the list by name, case-insensitive. |
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
| per_page = 25 | optional | 1–50 | Results per page, 1-50. The source refuses more than 50 (HTTP 400). |
/vivino/v1/countries2 creditsThe country enum behind `country_codes` — 253 countries with how many wines and wineries Vivino holds for each, and their most used grapes.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = us | optional | us · de | Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront. |
curl -X POST https://api.reefapi.com/vivino/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}