Vivino Wine Scraper - Ratings, Prices & Vintages avatar

Vivino Wine Scraper - Ratings, Prices & Vintages

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Vivino Wine Scraper - Ratings, Prices & Vintages

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

MrBridge

Maintained by Community

Actor stats

0

Bookmarked

68

Total users

6

Monthly active users

18 days

Issues response

a day ago

Last modified

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.

Vivino Scraper Input Interface

Which wine scraper should I use?

NeedBest scraperWhat 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 URLVivino Wine Data ScraperSearch Vivino by wine name or paste Vivino URLs
Critic ratings (Parker, Spectator, Decanter...)Millesima Wine ScraperPrices + scores from 18 major critics
Grape popularity, scores & pricesWine-Searcher Grape ScraperPopularity, critic scores & prices by grape variety on Wine-Searcher
Popularity, scores & prices for a known wine listWine-Searcher Scraper from ListWine-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 options
Debug 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

FilterDescription
Region299 wine regions across 32 countries: France, Italy, Spain, Portugal, Germany, USA, Argentina, Australia...
Sub-regionsDrill down to specific appellations: Meursault, Pauillac, Barolo, Napa Valley, Rioja Alta, and more
Wine TypeRed, White, Sparkling, Rosé, Dessert, Fortified
Grape Variety21 varietals: Pinot Noir, Chardonnay, Cabernet Sauvignon, Syrah, Nebbiolo, Tempranillo...
ProducerSearch by winery name (partial match supported)
RatingFilter by minimum/maximum Vivino rating (1-5 stars)
PriceSet 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

ParameterTypeDefaultDescription
regionSelectAll RegionsWine region or appellation; 299 regions across 32 countries with sub-regions for France, Italy, and Spain
wineTypeSelectAll TypesRed, White, Sparkling, Rose, Dessert, or Fortified
grapeSelectAll GrapesGrape variety; 21 options: Pinot Noir, Chardonnay, Cabernet Sauvignon, Syrah, Nebbiolo, Tempranillo, and more
wineryNameText-Producer/winery name. Examples: Coche-Dury, Romanee-Conti, Rayas. Partial match supported.
maxWinesNumber10,000Maximum wines to scrape (1–10,000). Default fetches all matching wines. Lower for quick tests.

Rating Range

Filter wines by rating (optional)

ParameterTypeDefaultDescription
minRatingNumber3.5Minimum Vivino rating (1–5 stars)
maxRatingNumber5Maximum Vivino rating (1–5 stars)

Price Range

Filter wines by price (optional)

ParameterTypeDefaultDescription
priceRangeMinNumber-Minimum price in selected currency
priceRangeMaxNumber-Maximum price in selected currency

Regional Settings

Configure country and currency for prices

ParameterTypeDefaultDescription
countryCodeSelectFranceCountry for price availability and currency conversion
currencyCodeSelectEURCurrency for displaying prices

Output Settings

Configure sorting order

ParameterTypeDefaultDescription
orderBySelectHighest RatedSort by rating, popularity, price, or discount
orderSelectDescendingDescending (highest first) or ascending (lowest first)

Vintage Analysis

Enable to get year-by-year ratings for each wine

ParameterTypeDefaultDescription
includeAllVintagesCheckboxNoFetch ratings for all vintage years per wine. Creates one row per vintage. Significantly slower, but useful for investment analysis.
vintageStartYearNumber2005Start year for vintage scanning (min: 1970)

Advanced

Developer options

ParameterTypeDefaultDescription
debugCheckboxNoEnable 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:

CountryRegionsExamples
France101Bourgogne (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
Italy64Piemonte (Barolo, Barbaresco…), Toscana (Brunello di Montalcino, Chianti Classico, Bolgheri…), Veneto (Amarone, Prosecco, Soave), Sicilia (Etna), Lombardia (Franciacorta), Campania, Puglia, Umbria, Friuli
Spain35Rioja, Ribera del Duero, Priorat, Cava, Navarra, Rías Baixas, Jerez
Portugal9Douro, Porto, Alentejo, Dão, Vinho Verde, Madeira
Germany9Mosel, Rheingau, Pfalz, Rheinhessen, Nahe
Austria7Wachau, Kamptal, Burgenland
USA11Napa Valley, Sonoma County, Willamette Valley, Paso Robles, Russian River Valley
Argentina6Mendoza, Uco Valley, Salta, Patagonia
Chile8Maipo Valley, Colchagua Valley, Casablanca Valley
Australia10Barossa Valley, McLaren Vale, Margaret River, Yarra Valley, Hunter Valley
New Zealand5Marlborough, Central Otago, Hawke's Bay
South Africa8Stellenbosch, Swartland, Franschhoek, Hemel-en-Aarde
Greece5Santorini, Naoussa, Nemea
+ 19 more countries21Hungary, 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.


Pricing

This scraper uses Apify's pay-per-event pricing at $0.003 per wine row extracted (the apify-default-dataset-item event). You pay only for data delivered to the dataset, not for compute time or failed requests.

Cost examples

ModeWines requestedRows extractedCost
Standard100100$0.30
Standard1,0001,000$3.00
Standard10,00010,000$30.00
Vintage mode100~1,000 to 2,000 (one row per vintage year, typically 10-20 per wine)$3 to $6

Free tier: the Apify Free plan includes $5 of credits per month, enough for ~1,600 wines in standard mode or ~150 to 300 wines in vintage mode. See the pricing tab for the live billing config.

Speed

  • Standard mode: ~2-3 wines/second
  • Vintage mode: ~1 wine/minute (checks years from 2005 onward, with early stop on missing data)

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 ApifyClient
client = 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:

  1. Create a Task with your saved input (region, filters, settings)
  2. Go to the Schedules tab → Create schedule
  3. Set a cron expression, e.g. 0 2 * * 1 for every Monday at 2 AM UTC
ScheduleCron expressionUse case
Every Monday0 2 * * 1Weekly regional price report
1st of month0 0 1 * *Monthly market snapshot
Daily at 6 AM0 6 * * *Active trading desk

Webhooks: push results to your system

Get notified when a run completes. No polling needed:

  1. Go to the actor's Integrations tab in the Apify Console
  2. Select event: Run succeeded
  3. Enter your endpoint URL
  4. Apify sends a POST request with the datasetId and run metadata

No-code integrations

Connect this actor to your tools without writing code:

PlatformWhat it doesSetup
Google SheetsExport wine data to a Google Sheet automaticallyIntegrations tab → Google Drive
AirtableSync wines to an Airtable base with field mappingIntegrations tab → Airtable
ZapierTrigger Zaps on run completion → push to 5,000+ appsApify Zapier connector
MakeVisual workflows: scrape → transform → insert into DBApify Make module
n8nSelf-hosted workflow automation with Apify trigger nodeApify 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

  1. Use region filters when searching for specific producers; speeds up the search significantly.
  2. Start with smaller maxWines to test filters before large scrapes.
  3. Enable includeAllVintages only when you need year-by-year data. Slower, but unique signal.
  4. Combine filters for precise results: region + grape + rating range.
  5. Use debug mode 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

FAQ

How much does it cost per wine?

This scraper uses Apify's pay-per-event pricing at $0.003 per wine extracted (the apify-default-dataset-item event). 100 wines cost $0.30, 1,000 wines cost $3, 10,000 wines cost $30. The free Apify plan includes $5 of monthly credits, enough to extract ~1,600 wines per month at no cost.

Yes, scraping publicly available data is legal in most jurisdictions, as confirmed by the 2022 US Ninth Circuit ruling in hiQ Labs v. LinkedIn. This scraper only reads pages any visitor can see without logging in. No private user data is collected. Review Apify's web scraping legality guide and ensure your specific use case complies with Vivino's Terms of Service and applicable laws (GDPR if you store review text from EU users).

Can I use this scraper via MCP?

The Actor exposes only a trivial Standby status endpoint, not a full MCP server. To use Vivino data inside an MCP workflow, run this scraper through the standard Apify MCP integration by adding mrbridge/vivino-powerful-scraper to your client config.

Why does the default maxWines: 5 give such a small test run?

The prefill is intentionally conservative so the first click on Start costs less than $0.02 and finishes in under a minute. Once you've verified the output shape, bump maxWines to 100, 1,000, or remove the cap entirely.

Can I scrape wines that aren't currently for sale?

Yes. The scraper falls back to the winery API for wines without active price listings, so you still get ratings, taste profile and vintage data. The price field will be null for those entries.

What happens if Vivino rate-limits me?

The scraper handles rate limits with exponential backoff and retries. Sustained 429 errors cause the run to exit gracefully (always SUCCEEDED) with whatever data was already collected. Lower the concurrency or run during off-peak hours if you hit limits repeatedly.


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