Vivino Scraper — Ratings, Prices & Taste Profiles
Pricing
$3.00 / 1,000 wine result extracteds
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
Actor stats
0
Bookmarked
82
Total users
18
Monthly active users
2 days ago
Last modified
Categories
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?
| Need | Best Actor | What it does |
|---|---|---|
| Look up specific wines by name or URL | Vivino 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 Scraper | Browse 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 Point | Description | Always included |
|---|---|---|
| Wine name | Full name as listed on Vivino | Yes |
| Winery / Producer | Producer name | Yes |
| Vintage year | Harvest year | Yes |
| Wine type | Red, White, Rosé, Sparkling, etc. | Yes |
| Region & Country | Wine region and country of origin | Yes |
| Grape varieties | List of grape varietals | Yes |
| Average rating | Vivino community rating (1-5) | Yes |
| Ratings count | Number of ratings on Vivino | Yes |
| Price | Price in your selected currency | Yes |
| Vivino URL | Direct link to the wine page | Yes |
| Image | Wine bottle image URL | Yes |
| Food pairings | Recommended food pairings (Beef, Lamb, Pasta...) | Yes |
| Description | Wine description text | Yes |
| Alcohol content | ABV percentage | Yes |
| Taste profile | Body, acidity, tannins, sweetness, fizziness, flavor notes | Optional (on by default) |
| User reviews | Rating, comment, date, username | Optional (off by default) |
Quick Start — Test in 60 seconds
- Click "Try for free" to open this actor in Apify Console
- The default input includes sample wine URLs — leave them or paste your own
- Click "Start"
- 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
- Go to the Vivino Wine Data Scraper on Apify
- Enter wine names in the Wine Names field (e.g., "Chateau Margaux 2015")
- Include the vintage year for more precise results
- Set Max Results per Search (1 for exact match, up to 50)
- Click Start to run the scraper
Option 2: Provide Vivino URLs
- Go to the Vivino Wine Data Scraper on Apify
- Paste Vivino wine page URLs in the Wine URLs field
- Supported formats:
vivino.com/wines/12345,vivino.com/slug/w/12345?year=2015 - 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?
| Parameter | Type | Default | Description |
|---|---|---|---|
wineUrls | array | — | Vivino wine page URLs to scrape |
wineNames | array | — | Wine names to search on Vivino |
searchMode | string | auto | How to handle vintage years: auto, name_and_vintage, name_only |
maxResultsPerSearch | integer | 5 | Max results per name search (1-50) |
includeTasteProfile | boolean | true | Fetch taste profile (body, acidity, tannins, sweetness, fizziness) |
includeReviews | boolean | false | Fetch user reviews (increases cost) |
maxReviewsPerWine | integer | 10 | Max reviews per wine (1-100) |
shipTo | string | — | Shipping destination country (ISO 3166-1 alpha-2). Controls wine visibility — some wines are only available in specific markets. Examples: ES, US, FR |
countryCode | string | FR | Country for pricing and wine origin filtering (ISO 3166-1 alpha-2) |
currencyCode | string | EUR | Currency 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?
| Tier | Cost | What you get |
|---|---|---|
| Per result | ~$0.003/wine | Pay 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
| Wines | Cost |
|---|---|
| 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
- Include vintage years in wine names for precise matching (e.g., "Chateau Margaux 2015" instead of "Chateau Margaux")
- Set Max Results per Search to 1 if you want only the closest match
- Start without reviews to minimize costs — add them later if needed
- 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 - For large batches (20+ wines), increase memory to 512 MB in Advanced Settings to avoid out-of-memory errors
- 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 ApifyClientclient = 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:
| Format | Parameter | Use case |
|---|---|---|
| JSON | ?format=json | APIs, databases, programmatic use |
| CSV | ?format=csv | Spreadsheets, data import tools |
| Excel | ?format=xlsx | Business reports, manual review |
| XML | ?format=xml | Legacy 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:
- Create a Task with your saved input (wine list, country, currency)
- Go to the Schedules tab → Create schedule
- Set a cron expression — e.g.
0 8 * * 1for every Monday at 8 AM UTC
| Schedule | Cron expression | Use case |
|---|---|---|
| Every Monday | 0 8 * * 1 | Weekly price report |
| Daily at 6 AM | 0 6 * * * | Active price monitoring |
| 1st of month | 0 0 1 * * | Monthly market snapshot |
Webhooks — Push Results to Your System
Get notified when a run completes — no polling needed:
- Go to the actor's Integrations tab
- 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 |
Example — Google Sheets price tracker:
- Open the actor's Integrations tab → select Google Sheets
- Map fields:
name→ Wine,average_rating→ Rating,price→ Price - Schedule a weekly run → your sheet updates automatically every Monday
Integrate with Zapier
Use the Apify Zapier integration to build automated workflows:
- Add "Apify" as a trigger app in your Zap
- Select "Run Actor" action with Actor ID
qRSfN5MBLbaEbSU6n - 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:
- Add "Apify" module → "Run an Actor"
- Actor ID:
qRSfN5MBLbaEbSU6n - 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
countryCodeandshipTosettings — not all wines have prices in every market - Try changing the
countryCodeto the wine's country of origin (e.g.,ITfor 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
Wrong wine returned for a name search
- Include the full wine name with producer (e.g., "Chateau Margaux Margaux" instead of "Margaux")
- Add the vintage year for precise matching
- Set
maxResultsPerSearch: 1for 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
- Apify API Documentation — Full API reference for programmatic access
- Apify Platform Integrations — Connect to Google Sheets, Zapier, Make, n8n, and more
- Apify Proxy Documentation — Configure residential or datacenter proxies
- Vivino Wine Scraper — Explore wines by region
- Millesima Wine Scraper — Wine prices and critic ratings
- Wine Searcher Scraper — Wine scores, prices and winery info from Wine-Searcher
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
shipToparameter 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