Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Vivino API page →
docs / vivino

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.

base /vivino/v113 endpoints
post/vivino/v1/wine/detail2 credits

One 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.

ParameterAllowed / rangeDescription
vintage_idoptionalThe 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 = usoptionalus · deWhich 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 = trueoptionalFetch 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.
Try in playground →
post/vivino/v1/wine/vintages1 credit

Every 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.

ParameterAllowed / rangeDescription
vintage_idoptionalThe 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 = usoptionalus · deWhich 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.
Try in playground →
post/vivino/v1/wine/prices1 credit

The 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.

ParameterAllowed / rangeDescription
vintage_idoptionalThe 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 = usoptionalus · deWhich 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.
currencyoptionalISO currency for the prices, e.g. USD, EUR, GBP, JPY. Defaults to the market's own currency (us -> USD, de -> EUR).
Try in playground →
post/vivino/v1/wine/reviews2 credits

The 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.

ParameterAllowed / rangeDescription
wine_idoptionalThe WINE (all vintages pooled). Accepts the numeric wine id from search or a vivino.com wine URL.
yearoptionalRestrict to one vintage year.
market = usoptionalus · deWhich 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 = 1optional1–1-based page number.
per_page = 25optional1–50Reviews per page, 1-50. Asking for more returns 50.
Try in playground →
post/vivino/v1/wine/highlights1 credit

The badges and ranks Vivino awards a vintage: global rank, rank within its country, its region and its winery, plus the critic scores behind them.

ParameterAllowed / rangeDescription
vintage_idoptionalThe 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 = usoptionalus · deWhich 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.
Try in playground →
post/vivino/v1/wines/batch3 credits

Up 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.

ParameterAllowed / rangeDescription
vintage_idsrequiredVintage ids, up to 50 per call.
market = usoptionalus · deWhich 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 = trueoptionaltrue = the complete vintage record; false = identity, year and ratings only, about 5x smaller.
Try in playground →
post/vivino/v1/winery/wines3 credits

A winery's catalogue: every wine it makes, with the wine-level rating and the best-rated vintage of each.

ParameterAllowed / rangeDescription
winery_idrequiredWinery id, from any search result's winery.id.
market = usoptionalus · deWhich 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.
Try in playground →
post/vivino/v1/region/detail1 credit

One wine region: its country, parent and sub-regions, its top grapes and how many wines and wineries Vivino holds for it.

ParameterAllowed / rangeDescription
region_idrequiredRegion id (454 = Mendoza).
market = usoptionalus · deWhich 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.
Try in playground →
post/vivino/v1/grapes2 credits

The grape enum behind `grape_ids` — 2229 grape varieties with the id, the name and how many wines Vivino holds for each.

ParameterAllowed / rangeDescription
queryoptionalFilter the list by name, case-insensitive.
market = usoptionalus · deWhich 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 = 25optional1–50Results per page, 1-50. The source refuses more than 50 (HTTP 400).
Try in playground →
post/vivino/v1/foodsfree

The food-pairing enum behind `food_ids` — the 23 pairings Vivino uses.

ParameterAllowed / rangeDescription
market = usoptionalus · deWhich 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.
Try in playground →
post/vivino/v1/wine_styles2 credits

The style enum behind `wine_style_ids` — 747 regional styles such as 'Argentinian Mendoza Malbec'.

ParameterAllowed / rangeDescription
queryoptionalFilter the list by name, case-insensitive.
market = usoptionalus · deWhich 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 = 25optional1–50Results per page, 1-50. The source refuses more than 50 (HTTP 400).
Try in playground →
post/vivino/v1/countries2 credits

The country enum behind `country_codes` — 253 countries with how many wines and wineries Vivino holds for each, and their most used grapes.

ParameterAllowed / rangeDescription
market = usoptionalus · deWhich 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.
Try in playground →