Vivino Scraper — Ratings, Prices & Taste Profiles avatar

Vivino Scraper — Ratings, Prices & Taste Profiles

Pricing

$3.00 / 1,000 wine result extracteds

Go to Apify Store
Vivino Scraper — Ratings, Prices & Taste Profiles

Vivino Scraper — Ratings, Prices & Taste Profiles

Extract wine ratings, prices, taste profiles, reviews, and grape varieties from Vivino. Search by wine name or URL. Fast HTTP-only approach with no browser needed. Export JSON, CSV, or Excel.

Pricing

$3.00 / 1,000 wine result extracteds

Rating

4.8

(5)

Developer

MrBridge

MrBridge

Maintained by Community

Actor stats

0

Bookmarked

82

Total users

18

Monthly active users

2 days ago

Last modified

Share

What is Vivino Wine Data Scraper?

Vivino Wine Data Scraper is an Apify Actor that extracts structured wine data from Vivino, the world's largest wine marketplace with 60M+ users. Provide wine URLs or search by wine name — the scraper returns ratings, prices, taste profiles, reviews, and detailed wine information in JSON or CSV format.

No browser is needed — the scraper uses a fast HTTP-only approach for efficient and cost-effective data extraction.

No Vivino account needed, no API key, no rate limits. Extract wine data in seconds.

Features

  • Fast HTTP-only extraction — No browser needed. Processes 50-100 wines per minute
  • Search by name or URL — Look up wines by name (with vintage) or paste Vivino URLs directly
  • Taste profiles — Body, acidity, tannins, sweetness, fizziness, and flavor notes for each wine
  • User reviews — Fetch up to 100 reviews per wine with ratings, comments, and dates
  • Market-specific pricing — Set shipping destination and currency to get local prices and wine availability
  • Automatic deduplication — Combine URLs and names in one run without duplicates
  • Streaming architecture — Memory-efficient design handles 100+ wines per run at 256 MB
  • Pay-per-event pricing — Pay only for wines extracted, not compute time (~$0.003/wine)

Which Vivino actor should I use?

NeedBest ActorWhat it does
Look up specific wines by name or URLVivino Wine Data Scraper (this one)Search by wine name or paste Vivino URLs — returns ratings, prices, taste profiles & reviews
Explore wines by region (all wines from Bordeaux, Italy...)Vivino Wine ScraperBrowse and extract all wines from a region or category on Vivino

In short: Use this actor when you know which wines you want. Use the Vivino Wine Scraper when you want to discover wines in a region.

Why scrape Vivino?

Vivino is the world's largest wine community with over 60 million users and 12+ million wines cataloged. This data is valuable for:

  • Wine merchants and retailers: Monitor pricing across markets, compare ratings, build competitive intelligence
  • Sommeliers and buyers: Build data-driven wine lists with community ratings and taste profiles
  • Market researchers: Analyze trends in wine ratings, pricing, and consumer preferences by region
  • Wine collectors: Track ratings and prices for wines in your cellar or wishlist
  • E-commerce platforms: Enrich product catalogs with Vivino ratings, taste profiles, and images
  • Data journalists: Create visualizations and stories from the world's largest wine database

What data can this scraper extract?

Data PointDescriptionAlways included
Wine nameFull name as listed on VivinoYes
Winery / ProducerProducer nameYes
Vintage yearHarvest yearYes
Wine typeRed, White, Rosé, Sparkling, etc.Yes
Region & CountryWine region and country of originYes
Grape varietiesList of grape varietalsYes
Average ratingVivino community rating (1-5)Yes
Ratings countNumber of ratings on VivinoYes
PricePrice in your selected currencyYes
Vivino URLDirect link to the wine pageYes
ImageWine bottle image URLYes
Food pairingsRecommended food pairings (Beef, Lamb, Pasta...)Yes
DescriptionWine description textYes
Alcohol contentABV percentageYes
Taste profileBody, acidity, tannins, sweetness, fizziness, flavor notesOptional (on by default)
User reviewsRating, comment, date, usernameOptional (off by default)

Quick Start — Test in 60 seconds

  1. Click "Try for free" to open this actor in Apify Console
  2. The default input includes sample wine URLs — leave them or paste your own
  3. Click "Start"
  4. Download your results from the Dataset tab (JSON, CSV, Excel)

That's it! No Vivino account needed, no API key, no rate limits.

Option 1: Search by wine name

  1. Go to the Vivino Wine Data Scraper on Apify
  2. Enter wine names in the Wine Names field (e.g., "Chateau Margaux 2015")
  3. Include the vintage year for more precise results
  4. Set Max Results per Search (1 for exact match, up to 50)
  5. Click Start to run the scraper

Option 2: Provide Vivino URLs

  1. Go to the Vivino Wine Data Scraper on Apify
  2. Paste Vivino wine page URLs in the Wine URLs field
  3. Supported formats: vivino.com/wines/12345, vivino.com/slug/w/12345?year=2015
  4. Click Start to run the scraper

Option 3: Combine both

You can provide both wine names and URLs in the same run. The scraper deduplicates results automatically.

How do I configure the scraper?

ParameterTypeDefaultDescription
wineUrlsarrayVivino wine page URLs to scrape
wineNamesarrayWine names to search on Vivino
searchModestringautoHow to handle vintage years: auto, name_and_vintage, name_only
maxResultsPerSearchinteger5Max results per name search (1-50)
includeTasteProfilebooleantrueFetch taste profile (body, acidity, tannins, sweetness, fizziness)
includeReviewsbooleanfalseFetch user reviews (increases cost)
maxReviewsPerWineinteger10Max reviews per wine (1-100)
shipTostringShipping destination country (ISO 3166-1 alpha-2). Controls wine visibility — some wines are only available in specific markets. Examples: ES, US, FR
countryCodestringFRCountry for pricing and wine origin filtering (ISO 3166-1 alpha-2)
currencyCodestringEURCurrency for prices (ISO 4217)

Example: Search by wine name

{
"wineNames": [
"Chateau Margaux 2015",
"Opus One",
"Penfolds Grange 2018",
"Dom Perignon"
],
"maxResultsPerSearch": 3,
"includeTasteProfile": true,
"includeReviews": false,
"shipTo": "FR",
"countryCode": "FR",
"currencyCode": "EUR"
}

Example: Scrape by Vivino URL

{
"wineUrls": [
"https://www.vivino.com/FR/fr/chateau-margaux-margaux/w/13548?year=2015",
"https://www.vivino.com/wines/1527219"
],
"includeTasteProfile": true,
"includeReviews": true,
"maxReviewsPerWine": 5
}

Output example

{
"wineId": 13548,
"vintageId": 167890,
"vivino_url": "https://www.vivino.com/chateau-margaux-margaux/w/13548?year=2015",
"name": "Chateau Margaux Margaux",
"winery": "Chateau Margaux",
"vintage": 2015,
"wine_type": "Red",
"region": "Margaux",
"country": "France",
"appellation": "French Margaux",
"grape_varieties": ["Cabernet Sauvignon", "Merlot"],
"average_rating": 4.2,
"ratings_count": 12345,
"price": 450.0,
"currency": "EUR",
"taste_profile": {
"body": 4.2,
"acidity": 3.8,
"tannins": 4.5,
"sweetness": 1.1,
"fizziness": null,
"flavor_notes": ["black fruit", "oak", "spices", "earth", "tobacco"]
},
"reviews": [
{
"rating": 4.5,
"note": "Excellent wine with deep fruit flavors and a long finish.",
"created_at": "2024-03-15T10:30:00.000Z",
"user_name": "WineLover42",
"vintage_year": 2015
}
],
"image_url": "https://images.vivino.com/thumbs/chateau-margaux_375x500.png",
"scrapedAt": "2026-03-03T12:00:00.000Z",
"inputSource": "url",
"searchQuery": null,
"shipTo": null
}

How much does it cost?

TierCostWhat you get
Per result~$0.003/winePay only for extracted data, not compute time
Free tier$5 free credits/month~1,600 wines for free every month
Starter plan$49/month~16,000 wines/month

This Actor uses Apify's pay-per-event pricing. No startup fee — you only pay for wines successfully extracted. Start with $5 free credits.

Estimates based on event pricing only. Actual costs may include minimal platform compute fees. The free $5 credit covers both.

Cost estimates

WinesCost
100~$0.30
500~$1.50
1,000~$3.00
10,000~$30.00

Platform compute costs are minimal thanks to the HTTP-only approach (no browser). Memory recommendation: 256 MB for most use cases. Increase to 512 MB only for very large batches (5,000+ wines).

Tips for best results

  1. Include vintage years in wine names for precise matching (e.g., "Chateau Margaux 2015" instead of "Chateau Margaux")
  2. Set Max Results per Search to 1 if you want only the closest match
  3. Start without reviews to minimize costs — add them later if needed
  4. Use Ship To Country to find wines available in a specific market (e.g., shipTo: "ES" for Spain-only wines). Use Country Code for pricing
  5. For large batches (20+ wines), increase memory to 512 MB in Advanced Settings to avoid out-of-memory errors
  6. Switch to Residential proxies in Advanced Settings if you experience blocks on large volumes

Integrate into Your Workflow

This actor is designed to fit into automated pipelines. Below are the most common integration patterns — from zero-code solutions to full programmatic control.

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-wine-data-scraper/run-sync-get-dataset-items" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"wineNames": ["Chateau Margaux 2015", "Opus One 2019"],
"maxResultsPerSearch": 1,
"includeTasteProfile": true
}'

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('mrbridge/vivino-wine-data-scraper').call({
wineNames: ['Chateau Margaux 2015', 'Opus One 2019'],
maxResultsPerSearch: 1,
includeTasteProfile: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("mrbridge/vivino-wine-data-scraper").call(run_input={
"wineNames": ["Chateau Margaux 2015", "Opus One 2019"],
"maxResultsPerSearch": 1,
"includeTasteProfile": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['name']}{item['average_rating']}★ — {item['price']} {item['currency']}")

Dataset Export Formats

Results can be exported in multiple formats by appending ?format= to the dataset URL:

FormatParameterUse case
JSON?format=jsonAPIs, databases, programmatic use
CSV?format=csvSpreadsheets, data import tools
Excel?format=xlsxBusiness reports, manual review
XML?format=xmlLegacy systems, ERP integrations

Filter fields: ?fields=name,average_rating,price,currency or exclude them: ?omit=reviews,image_url.

Scheduled Runs — Automatic Price Tracking

Set up a schedule in the Apify Console to track wine prices over time:

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

Webhooks — Push Results to Your System

Get notified when a run completes — no polling needed:

  1. Go to the actor's Integrations tab
  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

Example — Google Sheets price tracker:

  1. Open the actor's Integrations tab → select Google Sheets
  2. Map fields: name → Wine, average_rating → Rating, price → Price
  3. Schedule a weekly run → your sheet updates automatically every Monday

Integrate with Zapier

Use the Apify Zapier integration to build automated workflows:

  1. Add "Apify" as a trigger app in your Zap
  2. Select "Run Actor" action with Actor ID qRSfN5MBLbaEbSU6n
  3. Connect to Gmail, Slack, Google Sheets, Notion, or 5,000+ other apps

Example Zap: Every Monday → Run Vivino scraper with your wine list → Append results to Google Sheet → Send Slack notification with price changes

Integrate with Make (Integromat)

Use the Apify Make integration:

  1. Add "Apify" module → "Run an Actor"
  2. Actor ID: qRSfN5MBLbaEbSU6n
  3. Route outputs to Google Sheets, email, Telegram, or any Make module

Integrate with n8n

Use n8n's HTTP Request node or the Apify n8n node:

POST https://api.apify.com/v2/acts/mrbridge~vivino-wine-data-scraper/runs?token=YOUR_APIFY_TOKEN

Troubleshooting

"No results found" for a wine name

  • Check for typos in the wine name
  • Try adding or removing the vintage year (e.g., "Opus One" instead of "Opus One 2019")
  • Use searchMode: "name_only" to ignore vintage filtering
  • Very niche or new wines may not be in Vivino's database

Empty price field

  • Prices depend on the countryCode and shipTo settings — not all wines have prices in every market
  • Try changing the countryCode to the wine's country of origin (e.g., IT for Italian wines)
  • Some wines are listed on Vivino without pricing data

Out of memory error on large batches

  • Increase memory to 512 MB in Advanced Settings (Run options)
  • The scraper handles 100+ wines at 256 MB, but very large batches with reviews (100/wine) may need more
  • Split very large inputs (1,000+ wines) into multiple runs
  • Include the full wine name with producer (e.g., "Chateau Margaux Margaux" instead of "Margaux")
  • Add the vintage year for precise matching
  • Set maxResultsPerSearch: 1 for closest match only

Rate limited or blocked

  • Switch to Residential proxies in Advanced Settings → Proxy Configuration
  • Add a delay between requests by reducing the batch size
  • For very large volumes (10,000+), consider splitting across multiple scheduled runs

FAQ

Does Vivino have an official API? No, Vivino does not provide a public API. This scraper uses Vivino's internal endpoints to extract data.

How fast is the scraper? Very fast — it uses HTTP requests only (no browser), processing 50-100 wines per minute.

Can I scrape large volumes? Yes. The scraper handles deduplication automatically. For very large volumes (10,000+), consider using residential proxies.

What if a wine is not found? The scraper logs a warning and continues with the next wine. Check your wine names for typos or try adding/removing the vintage year.

Can I schedule regular scrapes? Yes. Use Apify's built-in scheduler to run the Actor on a daily, weekly, or monthly basis. This is useful for tracking price trends and rating changes.

What regions and countries are supported? All wines on Vivino are supported worldwide. Use the Country Code setting (e.g., FR, US, GB, DE, IT) to get prices in your local market.

Is my data stored? Your results are stored in your Apify dataset for 31 days (default retention). No wine data is shared with third parties. You control your data and can delete it at any time.

Can I export results to Google Sheets or Excel? Yes. Use the built-in Google Sheets integration for automatic export, or download results as CSV/Excel from the Dataset tab.

Privacy & Security

  • No Vivino account required — the scraper accesses only publicly available data
  • No personal data collected — no user accounts, passwords, or personal information are accessed
  • Your data stays private — results are stored only in your Apify dataset, never shared
  • No cookies or sessions — the scraper uses stateless HTTP requests
  • GDPR compliant — no personal data is processed or stored beyond your own dataset

Resources

License

This Actor is provided as-is for personal and commercial use. It extracts only publicly available data from Vivino. Usage must comply with applicable laws and Vivino's Terms of Service. This tool is not affiliated with or endorsed by Vivino.

Changelog

Showing the 10 most recent updates.

  • v0.2.94 (2026-04-27) — Reorder export fields: searchQuery/name/winery/vintage/type first, then region/country/url, metadata last
  • v0.2.93 (2026-04-27) — Winery validation: require ≥50% word match instead of any single word (fixes false positives on common first names like "Jean")
  • v0.2.92 (2026-04-27) — Fix wine matching: reverse progressive slug order (long→short), add single-word slug fallback, extend winery validation to search page entries
  • v0.2.91 (2026-04-27) — Code simplification: extracted shared helpers (stripAccents, fetchHtml, resolveWineName, chargeAndCheckLimit, promoteMatching, splitSlugWords), unified winery prefix lists, eliminated double HTTP fetch in URL mode
  • v0.2.90 (2026-04-26) — Smarter winery fallback: compare explore vs wineEntries scores (fixes cuvées missing from explore top 50); search page fallback uses word frequency to detect truly distinctive cuvée words vs shared appellation terms
  • v0.2.88 (2026-04-26) — Fixed slug priority: stripped slugs (bernard-gripa) tried before stop-word slugs (domaine-bernard) to avoid wrong winery matches; wineEntries fallback when explore best match only matches winery name (not wine name)
  • v0.2.87 (2026-04-26) — Smarter winery slug generation: strip stop-word prefixes (domaine, chateau, maison); explore relevance check prevents wrong winery from short slugs
  • v0.2.86 (2026-04-26) — Fixed cross-query deduplication cascade (each query now gets independent results); dual search with/without shipTo when shipTo is set (maximizes coverage for wines absent in local market)
  • v0.2.85 (2026-04-26) — Discovered winery strategy: detect common producer from search results, try winery page for better wine selection; winery validation post-fetch (rejects cross-producer contamination); prefer HTML link entries for search pages
  • v0.2.84 (2026-04-26) — Catalog input cleaning: deduplicate words, strip volume patterns (75cl), stop-words filter for scoring (chateau, domaine, vin...)
  • v0.2.83 (2026-04-26) — Improved wine name matching: weighted scoring, exact word matching, winery entry scoring, vintage prioritization, coverage-based tie-breaking
  • v0.2.82 (2026-04-26) — Fixed name scoring: include winery name in matching + deduplicate query words (fixes price extraction for wines where query matches winery name)
  • v0.2.81 (2026-04-26) — Added food pairings, wine description, and alcohol content to output (zero additional HTTP requests)
  • v0.2.80 (2026-04-25) — Streaming architecture: enrich and push each wine immediately instead of accumulating all results in memory
  • v0.2.79 (2026-04-25) — Fixed OOM on large batches: single-pass HTML entity decoding, eliminated double decoding, fixed winery link entries skipping name filter, reversed sub-slug order to short→long
  • v0.2.78 (2026-04-23) — Localization fields: replaced Ship To Country, Country Code, and Currency Code text fields with dropdown menus
  • v0.2.77 (2026-04-22) — Fixed winery page parsing: decode HTML entities in React data-props, extract wine entries via script parsing, progressive slug matching
  • v0.2.76 (2026-04-22) — Added shipTo parameter for market-specific wine visibility, input validation, parallelized taste+reviews enrichment
  • v0.2.75 (2026-04-22) — Code refactoring: extracted helpers, split searchWineByName into sub-functions
  • v0.2.74 (2026-04-22) — Added fizziness to taste profile
  • v0.2.73 (2026-03-20) — Standardized Quick Start, SEO headings, input schema sections
  • v0.2.0 (2026-03) — Improved error handling, search deduplication
  • v0.1.0 (2025-12) — Initial release with wine name search, URL scraping, pay-per-event pricing