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

64

Total users

5

Monthly active users

18 days

Issues response

2 days 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 ActorWhat 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 8 major critics
Grape rankings & critic scoresWine Searcher Grape ScraperRankings, prices & critics scores by grape variety on Wine-Searcher
Critic scores, market prices and popularity 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, etc.
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, etc.
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.


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)

WinesWithout VintagesWith 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 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

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 replacing vivino-apify.png. The README URL is unchanged.
  • Local backup committed to screenshots/vivino-powerful-scraper.png for 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.json confirmed 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.json exactly. 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/grapeIds initialization 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 with winery_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, like region_ids[] and wine_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), safe pushErrorItem, parseFloat edge case fix, countryCodes array coercion, fetchWithRetry unification, 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: primaryKeywords and secondaryKeywords with mention counts per group. Breaking change: flavors field replaced by tasteProfile. Winery wines enriched via /api/wines/{id}/tastes.