vivino.com APIvivino.com ↗
Search wines, wineries, and food pairings from Vivino via 6 endpoints. Returns ratings, vintages, regions, descriptions, and winery profiles.
curl -X GET 'https://api.parse.bot/scraper/0573a298-2c9e-48ad-98ad-08cd6f65e3e4/search_wines?limit=5&query=pinot+noir' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for wines by name, style, or region using the Algolia search index. Returns paginated results with wine details including name, region, winery, vintages, and ratings.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-indexed). |
| limit | integer | Max results per page. |
| queryrequired | string | Search keyword (wine name, grape variety, region, etc.) |
{
"type": "object",
"fields": {
"hits": "array of wine objects with id, name, seo_name, region, winery, vintages, statistics, description",
"page": "current page number (0-indexed)",
"nbHits": "total number of matching wines",
"nbPages": "total number of pages",
"hitsPerPage": "number of results per page"
},
"sample": {
"data": {
"hits": [
{
"id": 1136137,
"name": "Pinot Noir",
"region": {
"id": 24,
"name": "California",
"country": "us"
},
"winery": {
"id": 199777,
"name": "Meiomi",
"seo_name": "meiomi"
},
"type_id": 1,
"seo_name": "pinot-noir",
"statistics": {
"ratings_count": 185231,
"ratings_average": 4.1
}
}
],
"page": 0,
"nbHits": 71226,
"nbPages": 200,
"hitsPerPage": 5
},
"status": "success"
}
}About the vivino.com API
The Vivino API provides access to wine and winery data across 6 endpoints, covering search, catalog browsing, detailed wine profiles, and food pairings. Using search_wines, you can query by name, grape variety, or region and receive structured results including ratings averages, vintage arrays, and winery metadata. Companion endpoints like get_wine_details and get_winery_details return deeper fields such as food pairings, grapes, winemaker names, and region statistics.
Wine Search and Catalog
The search_wines endpoint accepts a query string — wine name, grape variety, or region — and returns paginated results with fields including id, name, seo_name, region, winery, vintages, statistics, and description. Pagination is 0-indexed via the page parameter, and nbHits and nbPages give you the full result-set shape. The explore_wines endpoint browses the full catalog ordered by popularity without a query term, using a 1-indexed page input that maps internally to 0-indexed pagination.
Wine and Winery Detail
get_wine_details takes either a wine_id (e.g. '1135067') or a wine_slug (e.g. 'cabernet-sauvignon-reserva-central-valley'). The response includes the image object with URL variations, a vintages array with per-year names and statistics, a winery object with website and description, and a statistics object covering ratings_count, ratings_average, and labels_count. get_winery_details requires a winery_slug (e.g. 'penfolds' or 'opus-one') and returns winery-level fields including winemaker, region, website, and aggregate statistics across all their wines.
Winery Search and Food Pairings
search_wineries accepts a winery name query and returns an items array of unique winery objects — each with id, name, seo_name, statistics, region, description, and website. The get_food_pairings endpoint takes a food_name string such as 'steak' or 'pasta' and returns wine objects whose names or associated metadata match that term, giving the same paginated hit structure as the search endpoints.
Coverage Notes
All endpoints return data as structured objects rather than free-form text, making the responses straightforward to parse into typed models. The statistics object appears at multiple levels — wine, vintage, winery, and region — so you can aggregate or filter at whichever granularity your application needs. Wine type_id is returned as an integer identifier; a mapping to human-readable type names (e.g. red, white, sparkling) is not included in the response schema directly.
- Build a wine recommendation engine using
search_winesfiltered by region and sorted byratings_average. - Populate a wine cellar tracker by fetching full vintage arrays via
get_wine_details. - Create a food-and-wine pairing tool using
get_food_pairingswith ingredients from a recipe. - Display winery profiles in a travel app using
get_winery_detailsfields likewinemaker,website, andregion. - Index a wine catalog for autocomplete search by paginating through
explore_winessorted by popularity. - Compare winery statistics across producers using
search_wineriesto retrieveratings_countandwines_count. - Generate SEO content pages for wine varieties by pulling
description,grapes, andstatisticsfromget_wine_details.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Vivino have an official public developer API?+
What does `get_wine_details` return beyond basic wine info?+
vintages array with per-year statistics, an image object with multiple URL variations, a winery object that includes the winery's website and description, and a statistics block with ratings_count, ratings_average, and labels_count. Food pairings and grape data are also included in the response.How does pagination work across the search and explore endpoints?+
search_wines, search_wineries, and get_food_pairings use 0-indexed pagination via the page parameter. explore_wines accepts a 1-indexed page input. All paginated responses include nbHits, nbPages, and hitsPerPage so you can iterate through the full result set.Does the API return individual user reviews or tasting notes?+
ratings_count, ratings_average) and structured descriptions at the wine and winery level, but individual user reviews and tasting notes are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting per-wine review data.