Vivino APIvivino.com ↗
Search Vivino's wine catalog, retrieve ratings, pricing, winery profiles, and food pairing data across 7 endpoints. No official API key required.
What is the Vivino API?
The Vivino API provides access to wine and winery data across 7 endpoints, covering search, catalog exploration, and detailed wine profiles. The search_wines endpoint runs full-text queries against Vivino's catalog and returns fields including ratings, region, winery, vintages, and descriptions. A separate search_wines_with_prices endpoint layers in marketplace pricing, wine type, alcohol percentage, and bottle image URLs for wines currently available for purchase.
curl -X GET 'https://api.parse.bot/scraper/0573a298-2c9e-48ad-98ad-08cd6f65e3e4/search_wines?page=0&limit=5&query=malbec' \ -H 'X-API-Key: $PARSE_API_KEY'
Full-text search over Vivino's wine catalog. Matches wine name, grape variety, region, and winery name. Returns paginated results ordered by relevance with full wine details including name, region, winery, vintages, ratings, and description.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (0-indexed). |
| limit | integer | Max results per page. |
| queryrequired | string | Search keyword (wine name, grape variety, region, winery, 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": 1135980,
"name": "Reserve Malbec",
"region": {
"id": 454,
"name": "Mendoza",
"country": "ar"
},
"winery": {
"id": 4137,
"name": "Trivento",
"seo_name": "trivento"
},
"type_id": 1,
"seo_name": "reserve-malbec",
"vintages": [
{
"id": 1527219,
"name": "Trivento Reserve Malbec",
"year": "U.V.",
"statistics": {
"ratings_count": 105754,
"ratings_average": 3.7
}
}
],
"statistics": {
"ratings_count": 105754,
"ratings_average": 3.7
}
}
],
"page": 0,
"nbHits": 32633,
"nbPages": 42,
"hitsPerPage": 24
},
"status": "success"
}
}About the Vivino API
Wine Search and Catalog Browsing
The search_wines endpoint accepts a query string matched against wine names, grape varieties, regions, and winery names. Results are paginated using a 0-indexed page parameter and return an array of hits, each containing id, name, seo_name, region, winery, vintages, statistics (ratings count and average), and description. The explore_wines endpoint removes the search filter entirely and returns wines ordered by popularity — useful for trending-wine discovery — using a 1-indexed page input.
Detailed Wine and Winery Profiles
get_wine_details accepts either a numeric wine_id (e.g. '1135067') or a wine_slug SEO string and returns granular fields: region with country, winery with website and its own statistics, an array of vintages with per-year stats, grape_ids, food_pairing_ids, and alcohol percentage. get_winery_details takes a winery_slug (e.g. 'penfolds') and surfaces winery-level fields including winemaker, description, website, region, and aggregate statistics covering total wines, labels, and ratings.
Pricing and Food Pairing
search_wines_with_prices queries Vivino's marketplace and returns only wines that have an active purchase listing. Response objects include wine_type, vintage_year, alcohol, price, and bottle_image_url, with optional country_code and currency_code parameters to localize pricing. get_food_pairings accepts a food_name string and returns matching wine hits — note that matching is text-based across wine and winery names, so results reflect wines branded or associated with a food term rather than a structured food-pairing taxonomy.
Winery Search
search_wineries accepts a query string and returns an items array of unique winery objects deduplicated from the wine index. Each item includes id, name, seo_name, region, statistics, description, and website. Pagination uses a 0-indexed page parameter consistent with search_wines.
The Vivino API is a managed, monitored endpoint for vivino.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when vivino.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official vivino.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a wine recommendation widget that queries
search_winesand surfaces top-rated bottles by grape variety or region. - Display marketplace pricing for wines in a specific country by calling
search_wines_with_priceswithcountry_codeandcurrency_codeparameters. - Power a winery directory page using
search_wineriesandget_winery_detailsto show descriptions, websites, and winemaker names. - Populate a wine detail page with vintage-by-vintage ratings from the
vintagesarray returned byget_wine_details. - Implement a trending wines feed by paginating through
explore_winesordered by popularity. - Suggest wines by food context using
get_food_pairingsto surface wine names associated with a dish keyword. - Aggregate catalog-level statistics (total wines, ratings averages) for wine research or analytics dashboards using
nbHitsfrom search and explore endpoints.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. 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 `search_wines_with_prices` return that `search_wines` does not?+
search_wines_with_prices includes price, wine_type, vintage_year, alcohol, and bottle_image_url fields, and filters results to wines with active purchase listings. It also accepts country_code and currency_code to localize pricing. Results are limited to purchasable wines, so the total result set is smaller than the full catalog returned by search_wines.Does `get_food_pairings` return a structured food-pairing taxonomy with flavor profiles?+
get_wine_details. You can fork this API on Parse and revise it to add an endpoint that resolves those food-pairing IDs into named pairings.Are user reviews or individual tasting notes available through these endpoints?+
ratings_count and ratings_average at both the wine and vintage 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.How does pagination work across these endpoints — are they all consistent?+
search_wines, search_wineries, and get_food_pairings use 0-indexed page parameters. explore_wines and search_wines_with_prices use 1-indexed page inputs. All paginated responses include nbHits and nbPages (or total_matched) so you can determine the full result set size before iterating.