Vivino Wine Scraper - Ratings, Prices & Vintages
Pricing
from $3.00 / 1,000 results
Vivino Wine Scraper - Ratings, Prices & Vintages
Extract wine data from Vivino: ratings, reviews, prices, vintages, taste profiles. Filter by region (Burgundy, Bordeaux, Champagne...), grape variety, producer. Use it for wine list building, market research, cellar tracking, or producer comparison.
Pricing
from $3.00 / 1,000 results
Rating
5.0
(1)
Developer
MrBridge
Maintained by CommunityActor stats
0
Bookmarked
64
Total users
5
Monthly active users
18 days
Issues response
2 days ago
Last modified
Categories
Share
Vivino Wine Scraper
Scrape wine data at scale from Vivino (60M+ users, 12M+ wines). No browser, no account, no API key. HTTP only.
Filter by region (299 appellations, 32 countries), producer, grape, price or rating. Get ratings, prices, taste profiles and year-by-year vintages in JSON, CSV or Excel.

Which wine scraper should I use?
| Need | Best Actor | What it does |
|---|---|---|
| Browse wines by region (Bourgogne, Italy, Napa...) | Vivino Wine Scraper (this one) | Scrape any region, grape, or producer; ratings, prices, taste profiles, vintages |
| Look up specific wines by name or URL | Vivino Wine Data Scraper | Search Vivino by wine name or paste Vivino URLs |
| Critic ratings (Parker, Spectator, Decanter...) | Millesima Wine Scraper | Prices + scores from 8 major critics |
| Grape rankings & critic scores | Wine Searcher Grape Scraper | Rankings, prices & critics scores by grape variety on Wine-Searcher |
| Critic scores, market prices and popularity for a known wine list | Wine Searcher Scraper from List | Wine-Searcher data by wine name, URL or LWIN code |
In short: use this actor to discover wines in a region; use the Vivino Wine Data Scraper when you already know which wines you want.
At a glance: input form
Five primary filters at the top of the form, followed by six dedicated sections. Just pick what you need and click Start.
┌──── PRIMARY FILTERS ──────────────────────────────────────│ Wine Region ▸ Bourgogne ▾ (299 options)│ Wine Type ▸ White ▾ (Red, White, Sparkling…)│ Grape Variety ▸ All Grapes ▾ (21 options)│ Producer / Winery ▸ (text input, partial match)│ Maximum Wines ▸ 10 000 (default: fetch all)│├──── ▾ Rating Range ────────────── filter wines by rating│ Minimum Rating ▸ 3.5│ Maximum Rating ▸ 5.0│├──── ▾ Price Range ─────────────── filter wines by price│ Minimum Price ▸ (empty = no minimum)│ Maximum Price ▸ (empty = no maximum)│├──── ▾ Regional Settings ───────── country & currency for prices│ Market Country ▸ France ▾ (15 markets)│ Currency ▸ EUR ▾ (8 currencies)│├──── ▾ Output Settings ─────────── sorting order│ Sort By ▸ Highest Rated ▾│ Sort Order ▸ Descending ▾│├──── ▾ Vintage Analysis ────────── year-by-year ratings (slower)│ Include All Vintages [ ]│ Vintage Start Year 2005│└──── ▾ Advanced ────────────────── developer optionsDebug Mode [ ]
→ See Input Parameters below for the full reference.
Why use this scraper?
Vivino lists 60M+ users and 12M+ wines. Use this scraper for:
- Market research: analyze wine trends, pricing, and consumer preferences
- Inventory monitoring: track ratings and popularity for your wine selection
- Investment analysis: monitor vintage ratings for fine wine investments
- Producer comparison: compare producers and regions side by side
- Cellar tracking: build a database of highly-rated wines to taste
Key features
Pick filters in the UI
No coding required. Pick filters from dropdown menus and click Start.
Filters available
| Filter | Description |
|---|---|
| Region | 299 wine regions across 32 countries: France, Italy, Spain, Portugal, Germany, USA, Argentina, Australia... |
| Sub-regions | Drill down to specific appellations: Meursault, Pauillac, Barolo, Napa Valley, Rioja Alta, etc. |
| Wine Type | Red, White, Sparkling, Rosé, Dessert, Fortified |
| Grape Variety | 21 varietals: Pinot Noir, Chardonnay, Cabernet Sauvignon, Syrah, Nebbiolo, Tempranillo... |
| Producer | Search by winery name (partial match supported) |
| Rating | Filter by minimum/maximum Vivino rating (1-5 stars) |
| Price | Set price range in your preferred currency |
Vintage analysis
Enable "Include All Vintages" to get ratings for every vintage year of each wine. Useful for:
- Tracking vintage quality variations
- Finding the best years for a specific wine
- Investment-grade wine analysis
Includes wines without prices
Unlike other scrapers that only return wines with marketplace listings, this scraper uses Vivino's winery API to include all wines, even those not currently for sale.
Input parameters
The input form mirrors the Apify console UI: five primary filters at the top, followed by six grouped option sections.
Primary Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
region | Select | All Regions | Wine region or appellation; 299 regions across 32 countries with sub-regions for France, Italy, and Spain |
wineType | Select | All Types | Red, White, Sparkling, Rose, Dessert, or Fortified |
grape | Select | All Grapes | Grape variety; 21 options: Pinot Noir, Chardonnay, Cabernet Sauvignon, Syrah, Nebbiolo, Tempranillo, etc. |
wineryName | Text | - | Producer/winery name. Examples: Coche-Dury, Romanee-Conti, Rayas. Partial match supported. |
maxWines | Number | 10,000 | Maximum wines to scrape (1–10,000). Default fetches all matching wines. Lower for quick tests. |
Rating Range
Filter wines by rating (optional)
| Parameter | Type | Default | Description |
|---|---|---|---|
minRating | Number | 3.5 | Minimum Vivino rating (1–5 stars) |
maxRating | Number | 5 | Maximum Vivino rating (1–5 stars) |
Price Range
Filter wines by price (optional)
| Parameter | Type | Default | Description |
|---|---|---|---|
priceRangeMin | Number | - | Minimum price in selected currency |
priceRangeMax | Number | - | Maximum price in selected currency |
Regional Settings
Configure country and currency for prices
| Parameter | Type | Default | Description |
|---|---|---|---|
countryCode | Select | France | Country for price availability and currency conversion |
currencyCode | Select | EUR | Currency for displaying prices |
Output Settings
Configure sorting order
| Parameter | Type | Default | Description |
|---|---|---|---|
orderBy | Select | Highest Rated | Sort by rating, popularity, price, or discount |
order | Select | Descending | Descending (highest first) or ascending (lowest first) |
Vintage Analysis
Enable to get year-by-year ratings for each wine
| Parameter | Type | Default | Description |
|---|---|---|---|
includeAllVintages | Checkbox | No | Fetch ratings for all vintage years per wine. Creates one row per vintage. Significantly slower, but useful for investment analysis. |
vintageStartYear | Number | 2005 | Start year for vintage scanning (min: 1970) |
Advanced
Developer options
| Parameter | Type | Default | Description |
|---|---|---|---|
debug | Checkbox | No | Enable verbose logging for troubleshooting |
Output data
Each wine record includes:
{"wineName": "Meursault Blanc","wineryName": "Domaine Coche-Dury","vintageYear": 2019,"fullName": "Domaine Coche-Dury Meursault Blanc 2019","rating": 4.6,"ratingsCount": 245,"price": 450,"regionName": "Meursault","wineType": "White","isNatural": false,"sweetness": 1.8,"tannin": null,"imageUrl": "https://images.vivino.com/thumbs/..._375x500.jpg","wineUrl": "https://www.vivino.com/meursault-blanc/w/85904","vintageUrl": "https://www.vivino.com/domaine-coche-dury-meursault-blanc/v/2019","wineId": 85904,"vintageId": 12345678,"wineryId": 11620,"regionId": 2246,"countryName": "France","currency": "EUR","alcohol": null,"acidity": 3.2,"intensity": 3.7,"fizziness": null,"tasteProfile": [{"group": "earth","count": 35,"primaryKeywords": [{ "name": "minéraux", "count": 18 },{ "name": "cuir", "count": 8 }],"secondaryKeywords": [{ "name": "vanille", "count": 3 }]},{"group": "citrus_fruit","count": 34,"primaryKeywords": [{ "name": "citron", "count": 18 },{ "name": "agrume", "count": 10 }],"secondaryKeywords": []}],"scrapedAt": "2026-04-06T12:00:00.000Z"}
27 fields per wine, grouped into:
- Identity:
wineName,wineryName,fullName,vintageYear,wineUrl,vintageUrl,imageUrl,wineId,vintageId,wineryId,regionId - Region:
regionName,countryName,wineType,isNatural - Market:
price,currency - Ratings:
rating,ratingsCount - Taste structure:
sweetness,tannin,acidity,intensity,fizziness,alcohol - Taste profile:
tasteProfile(flavor groups with primary/secondary keywords and mention counts) - Metadata:
scrapedAt
Vintage mode (includeAllVintages: true) produces one row per vintage with a year field instead of vintageYear, plus per-vintage rating and ratingsCount.
Usage examples
Example 1: top Burgundy white wines
Find the best-rated white Burgundy wines:
{"region": "bourgogne","wineType": "white","minRating": 4.2,"maxWines": 200}
Example 2: specific producer with all vintages
Get all wines and vintages from Domaine de la Romanée-Conti:
{"wineryName": "Romanee-Conti","includeAllVintages": true,"maxWines": 50}
Example 3: affordable Châteauneuf-du-Pape
Find value wines under €50:
{"region": "chateauneuf-du-pape","minRating": 4.0,"priceRangeMax": 50,"orderBy": "ratings_average","maxWines": 100}
Example 4: Pinot Noir comparison
Compare Pinot Noir across regions:
{"grape": "pinot-noir","minRating": 4.0,"maxWines": 500,"orderBy": "ratings_count"}
Supported regions (299 regions, 32 countries)
The full list is available in the Wine Region dropdown in the Apify console. Coverage by country:
| Country | Regions | Examples |
|---|---|---|
| France | 101 | Bourgogne (Meursault, Puligny-Montrachet, Vosne-Romanée…), Bordeaux (Margaux, Pauillac, Saint-Émilion, Pomerol…), Rhône (Châteauneuf-du-Pape, Côte-Rôtie, Hermitage…), Loire, Champagne, Beaujolais, Alsace, Provence, Languedoc, Jura, Corse |
| Italy | 64 | Piemonte (Barolo, Barbaresco…), Toscana (Brunello di Montalcino, Chianti Classico, Bolgheri…), Veneto (Amarone, Prosecco, Soave), Sicilia (Etna), Lombardia (Franciacorta), Campania, Puglia, Umbria, Friuli |
| Spain | 35 | Rioja, Ribera del Duero, Priorat, Cava, Navarra, Rías Baixas, Jerez |
| Portugal | 9 | Douro, Porto, Alentejo, Dão, Vinho Verde, Madeira |
| Germany | 9 | Mosel, Rheingau, Pfalz, Rheinhessen, Nahe |
| Austria | 7 | Wachau, Kamptal, Burgenland |
| USA | 11 | Napa Valley, Sonoma County, Willamette Valley, Paso Robles, Russian River Valley |
| Argentina | 6 | Mendoza, Uco Valley, Salta, Patagonia |
| Chile | 8 | Maipo Valley, Colchagua Valley, Casablanca Valley |
| Australia | 10 | Barossa Valley, McLaren Vale, Margaret River, Yarra Valley, Hunter Valley |
| New Zealand | 5 | Marlborough, Central Otago, Hawke's Bay |
| South Africa | 8 | Stellenbosch, Swartland, Franschhoek, Hemel-en-Aarde |
| Greece | 5 | Santorini, Naoussa, Nemea |
| + 19 more countries | 21 | Hungary, Georgia, Lebanon, Croatia, Israel, Slovenia, Canada, Brazil, Uruguay, Mexico, UK, Romania, Bulgaria, Moldova, Turkey, Japan, Morocco, India |
France, Italy and Spain include sub-region drill-down (Bourgogne → Meursault, Piemonte → Barolo, Rioja → Rioja Alta…). Selecting a parent region automatically includes its sub-regions.
Performance & costs
Speed
- Standard mode: ~2-3 wines/second
- With vintages: ~1 wine/minute (checks years from 2005 onward, with early stop)
Estimated costs (Apify platform)
| Wines | Without Vintages | With Vintages |
|---|---|---|
| 100 | ~$0.05 | ~$0.50 |
| 500 | ~$0.20 | ~$2.50 |
| 1000 | ~$0.40 | ~$5.00 |
Costs may vary based on Apify pricing and network conditions.
Export formats
Download your data in multiple formats:
- JSON: for developers and APIs
- CSV: for Excel and spreadsheets
- Excel: direct .xlsx export
- XML: for legacy systems
Integrate into your workflow
This actor runs on Apify and integrates natively with popular automation platforms and programming languages.
API integration
Call this actor programmatically using the Apify API. Get your API token from Settings → Integrations.
cURL:
curl "https://api.apify.com/v2/acts/mrbridge~vivino-powerful-scraper/run-sync-get-dataset-items" \-X POST \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_APIFY_TOKEN" \-d '{"region": "bourgogne","wineType": "white","minRating": 4.0,"maxWines": 100}'
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('mrbridge/vivino-powerful-scraper').call({region: 'bourgogne',wineType: 'white',minRating: 4.0,maxWines: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${items.length} wines`);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("mrbridge/vivino-powerful-scraper").call(run_input={"region": "bourgogne","wineType": "white","minRating": 4.0,"maxWines": 100,})for wine in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{wine['fullName']} - {wine['rating']}★ - {wine.get('price', 'N/A')} {wine.get('currency', '')}")
Scheduled runs: automated market monitoring
Set up a schedule in the Apify Console to track regional wine data over time:
- Create a Task with your saved input (region, filters, settings)
- Go to the Schedules tab → Create schedule
- Set a cron expression, e.g.
0 2 * * 1for every Monday at 2 AM UTC
| Schedule | Cron expression | Use case |
|---|---|---|
| Every Monday | 0 2 * * 1 | Weekly regional price report |
| 1st of month | 0 0 1 * * | Monthly market snapshot |
| Daily at 6 AM | 0 6 * * * | Active trading desk |
Webhooks: push results to your system
Get notified when a run completes. No polling needed:
- Go to the actor's Integrations tab in the Apify Console
- Select event: Run succeeded
- Enter your endpoint URL
- Apify sends a POST request with the
datasetIdand run metadata
No-code integrations
Connect this actor to your tools without writing code:
| Platform | What it does | Setup |
|---|---|---|
| Google Sheets | Export wine data to a Google Sheet automatically | Integrations tab → Google Drive |
| Airtable | Sync wines to an Airtable base with field mapping | Integrations tab → Airtable |
| Zapier | Trigger Zaps on run completion → push to 5,000+ apps | Apify Zapier connector |
| Make | Visual workflows: scrape → transform → insert into DB | Apify Make module |
| n8n | Self-hosted workflow automation with Apify trigger node | Apify n8n community node |
For Zapier, Make and n8n setup, see the Apify Integrations docs. Actor ID for run-actor steps: onpKx0FzTy6OfOjXg.
Tips for best results
- Use region filters when searching for specific producers; speeds up the search significantly.
- Start with smaller
maxWinesto test filters before large scrapes. - Enable
includeAllVintagesonly when you need year-by-year data. Slower, but unique signal. - Combine filters for precise results: region + grape + rating range.
- Use
debugmode to see detailed logs if results look unexpected.
Limitations
- Vivino's API may rate-limit requests during high-traffic periods
- Some wines without user reviews may not have rating data
- Vintage data is limited to years with actual user reviews on Vivino
- Price data is only available for wines currently listed for sale
Legal disclaimer
This scraper is intended for personal use, research, and legitimate business purposes. Please respect Vivino's terms of service and rate limits. The data scraped belongs to Vivino and its users.
Support & feedback
- Issues: report bugs or request features on the Actor's Issues tab in Apify Console
- Questions: contact us through Apify support
Changelog
Showing the 10 most recent updates. Earlier history (v1.0.0 → v1.0.80, 2025-12 → 2026-03-25): initial release with region/grape/wineType/producer filters, support for wines without prices via winery API, 299 regions across 32 countries, full taste profile with flavor keywords, faster HTML-based winery search, multiple reliability fixes (Actor.exit, batch pushData, fetch timeout, OOM prevention), and dataset table view rendering.
v1.0.103 (2026-04-11)
- Screenshot updated: the README header image now shows the v1.0.100+ form layout (4 primary filters at the root + 6 collapsed sections: Rating Range, Price Range, Regional Settings, Output Settings, Vintage Analysis, Advanced)
- The PNG was uploaded to the existing Apify KV store (
vivino-scraper-images) by replacingvivino-apify.png. The README URL is unchanged. - Local backup committed to
screenshots/vivino-powerful-scraper.pngfor versioning
v1.0.102 (2026-04-11)
- New "At a Glance" section at the top of the README: a visual ASCII mockup of the actual input form, mirroring the Apify console UI exactly (4 primary filters at the root + 6 grouped sections)
- The mockup shows real prefill values (Bourgogne, White, 3.5, 100, 2005) and dropdown counts (299 regions, 21 grapes, 15 markets, 8 currencies)
- Validates schemas:
input_schema.jsonconfirmed at 16 fields / 7 groups, parity 1:1 with the README; all.actor/*.json(input, output, dataset, pay-per-event) aligned with build 1.0.101+
v1.0.101 (2026-04-11)
- README Input Parameters section rewritten to mirror the Apify console Input tab: four primary filters at the top, followed by six dedicated sections (Rating Range, Price Range, Regional Settings, Output Settings, Vintage Analysis, Advanced)
- Every section caption, field order, and default value now matches
input_schema.jsonexactly. One-to-one visual parity with the form shown in the Apify UI. - Documentation-only change: no behavior change, no schema change, no code change
v1.0.100 (2026-04-11)
- Input form reorganized: the four primary filters (Region, Wine Type, Grape, Producer) are now at the root of the form for immediate visibility. The "Wine Filters" section has been removed.
- New "Rating Range" section groups Minimum and Maximum Rating, mirroring the adjacent "Price Range" section for a consistent range-filter UX
- No behavior changes: identical field names, defaults, and prefills. The automated daily test is unaffected.
v1.0.99 (2026-04-10)
- Code cleanup: removed unreachable "Unknown region" warning (Apify input schema enum blocks invalid region slugs at HTTP 400 before reaching code)
- Simplified
regionIds/wineTypeIds/grapeIdsinitialization into single-line ternary expressions - Stress test: 5/5 runs on v1.0.98 SUCCEEDED. 100% success rate across volume, producer, vintages, obscure region, and separator validation scenarios.
v1.0.95 (2026-04-07)
- Fixed price retrieval in Producer Search: wines searched by producer name now include marketplace prices (was always
null) - New
enrichWithExplorePrices()queries the Explore API withwinery_ids[]filter after collecting wines from the Winery API - Tested on Domaine Coche-Dury: 14/17 wines enriched with prices (3 without = no marketplace listing on Vivino)
- Discovered Explore API supports
winery_ids[]parameter (array format, likeregion_ids[]andwine_type_ids[])
v1.0.92 (2026-04-06)
- Major reliability update: 7 bug fixes. Proper
Actor.exit(), content-type validation (CAPTCHA/geo-block detection), 30s fetch timeout, batch pushData (OOM-safe on 200k+ records), safepushErrorItem,parseFloatedge case fix,countryCodesarray coercion,fetchWithRetryunification, User-Agent bumped to Chrome 134.
v1.0.90 (2026-03-31)
- Faster winery search: HTML-based search replaces slow Explore API scan (~2s vs ~40s). Reliably finds small/niche producers (e.g. Caroline Morey, previously unfindable). Adds taste fields (sweetness, tannin, acidity, intensity, fizziness, tasteProfile) to dataset table view.
v1.0.86 (2026-03-30)
- Full taste profile with flavor keywords:
primaryKeywordsandsecondaryKeywordswith mention counts per group. Breaking change:flavorsfield replaced bytasteProfile. Winery wines enriched via/api/wines/{id}/tastes.