VOOZH about

URL: https://apify.com/mrbridge/vivino-wine-data-scraper

⇱ Vivino Wine Data Scraper | Ratings, Reviews & Prices by URL Β· Apify


πŸ‘ Vivino Wine Data Scraper: ratings, prices & taste profiles avatar

Vivino Wine Data Scraper: ratings, prices & taste profiles

Pricing

from $2.00 / 1,000 wine result extracteds

Go to Apify Store

Vivino Wine Data 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

from $2.00 / 1,000 wine result extracteds

Rating

4.9

(7)

Developer

πŸ‘ MrBridge

MrBridge

Maintained by Community

Actor stats

3

Bookmarked

170

Total users

39

Monthly active users

7 hours ago

Last modified

Share

What does Vivino Wine Data Scraper do?

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 a mix of wine names and Vivino URLs; the scraper auto-detects each entry and returns ratings, prices, taste profiles, reviews, and full wine details in JSON or CSV.

No browser, no Vivino account, no API key, no rate limits.

Key capabilities:

  • Mixed input, auto-routed: paste wine names (with or without vintage) and Vivino URLs in any combination
  • Taste profiles: body, acidity, tannins, sweetness, fizziness, flavor notes, food pairings
  • User reviews: up to 100 per wine with ratings, comments, and dates
  • Market-specific pricing: pick a shipping destination and currency for local prices and wine availability
  • Streaming + dedup: up to 250 wines per run, no duplicates across URLs and names
  • Pay-per-event: pay per result returned in the dataset (~$0.003 each), not compute time

Which Vivino scraper should I use?

NeedBest scraperWhat it does
Look up specific wines by name or URLVivino Wine Data Scraper (this one)Search by name or paste Vivino URLs; returns ratings, prices, taste profiles, and reviews
Browse wines by region (all wines from Bordeaux, Italy, and more)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?

With 60M+ users and 12M+ wines cataloged, Vivino is the reference dataset for wine ratings and pricing. Common uses: monitoring competitor prices across markets, building wine lists from community ratings and taste profiles, enriching e-commerce catalogs with ratings and images, and researching wine-market trends by region.

What data does this scraper extract?

Data PointDescriptionAlways included
Wine nameFull name as listed on VivinoYes
Winery / ProducerProducer nameYes
Vintage yearHarvest yearYes
Wine typeRed, White, RosΓ©, Sparkling, Dessert, FortifiedYes
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 currencyWhen available*
Vivino URLDirect link to the wine pageYes
ImageWine bottle image URLWhen available*
Food pairingsRecommended food pairings (Beef, Lamb, Pasta)Yes
DescriptionWine description textYes
Alcohol contentABV percentageWhen available*
Taste profileBody, acidity, tannins, sweetness, fizziness, flavor notesOptional (off by default)
User reviewsRating, comment, date, usernameOptional (off by default)

*Availability varies by market and extraction path; missing values are null.

How to use Vivino Wine Data Scraper

  1. Open Vivino Wine Data Scraper on Apify (a free account is needed only at run time).
  2. In the Wines field, paste a mix of wine names and Vivino URLs (one per line). The scraper auto-detects each entry.
  3. Optionally adjust localization (Country Code, Currency Code, Ship To Country) for market-specific prices.
  4. Click Start. Download results from the Dataset tab in JSON, CSV, Excel, or XML.

Matching modes: Basic vs Advanced

When you search by wine name, the Actor matches your text to Vivino's catalog. The matchingMode setting controls how hard it works:

  • Basic (default) β€” fast and predictable. Use it when your wine names already read like Vivino: full producer name, correct spelling, optional vintage. Examples: Domaine Leflaive Puligny-Montrachet 2022, Opus One 2019. A clean catalogue export usually falls here. About 6 seconds per wine.
  • Advanced β€” runs the full fallback cascade for names that differ from Vivino: last-name/first-name order (Bachelet Jean Claude), an omitted & Fils, abbreviations, or a cuvΓ©e stated without its appellation. It tries extra winery-slug variants, parses producer pages, and re-searches with shortened queries to recover micro-domaine wines that Basic misses. This costs time β€” about 15-25 seconds per wine on hard names β€” so reach for it when a Basic run leaves too many NAME_SEARCH_ERROR rows.

Both modes share the same matching gates, so neither bills a wrong cuvΓ©e: an unresolved name becomes an unbilled error row, never a mismatched (billed) wine. Direct Vivino URLs ignore this setting β€” they always resolve to exactly one wine.

Each run is capped at 250 wines (the limit that keeps an Advanced run within the 3-hour timeout). For larger catalogues, split into ≀250-wine batches and run them in parallel via the API, Tasks, or schedules.

Input parameters

ParameterTypeDefaultDescription
winesarraysampleMixed list of Vivino URLs and wine names, max 250 per run. Auto-detected per entry.
searchModestringautoVintage handling: auto, name_and_vintage, name_only
matchingModestringbasicName-matching effort: basic (fast; names match Vivino) or advanced (full cascade for messy or divergent names). See Matching modes.
includeTasteProfilebooleanfalseFetch taste profile (body, acidity, tannins, sweetness, fizziness, flavor notes). Off by default; turn on for richer output
includeReviewsbooleanfalseFetch user reviews (increases cost)
maxReviewsPerWineinteger10Maximum reviews per wine (1-100)
shipTostring--Shipping destination country (ISO 3166-1 alpha-2). Controls wine visibility per market. Example: ES, US, FR
countryCodestringFRCountry for pricing and wine-origin filtering (ISO 3166-1 alpha-2)
currencyCodestringEURCurrency for prices (ISO 4217)
proxyConfigurationobjectoffApify proxy settings. Off by default (the Actor's own IP suits light, solo runs). Enable IP rotation for parallel runs; without a group it uses the residential pool (datacenter IPs are often rejected by Vivino).

Example input

{
"wines":[
"ChΓ’teau Margaux 2015",
"https://www.vivino.com/cloudy-bay-sauvignon-blanc/w/18978",
"Opus One",
"Penfolds Grange 2018",
"Dom PΓ©rignon"
],
"includeTasteProfile":true,
"includeReviews":false,
"shipTo":"FR",
"countryCode":"FR",
"currencyCode":"EUR"
}

Output format

Each wine produces one dataset item. The structure:

{
"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":"Margaux",
"grape_varieties":["Cabernet Sauvignon","Merlot"],
"food_pairings":["Beef","Lamb","Game (deer, venison)"],
"alcohol":13.5,
"wine_description":"A powerful, structured Left Bank red with dark fruit and fine tannins.",
"average_rating":4.6,
"ratings_count":312,
"wine_average_rating":4.5,
"wine_ratings_count":12345,
"price":450.0,
"currency":"EUR",
"merchant_url":"https://www.vivino.com/merchant/...",
"is_natural":false,
"image_url":"https://images.vivino.com/thumbs/chateau-margaux_pl_480x640.png",
"label_image_url":"https://images.vivino.com/thumbs/chateau-margaux_pl_375x500.png",
"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
}
],
"scrapedAt":"2026-03-03T12:00:00.000Z",
"inputSource":"url",
"searchQuery":null,
"shipTo":null
}

The example above shows the common fields; each row also carries market/value fields (discounted_from, discount_percent, vfm_score, vfm_category, bottle_volume_ml, lwin, lwin_canonical) and id fields (winery_id, winery_seo_name, region_id, country_code, requested_vintage). average_rating / ratings_count are the requested vintage's figures; wine_average_rating / wine_ratings_count are the wine's all-vintages totals; any value Vivino lacks for your market is null. taste_profile is omitted when includeTasteProfile: false; reviews when includeReviews: false. inputSource is "url" or "search".

Error rows

Inputs that fail to resolve to a wine (no Vivino match, too-short query, URL parse error) still produce a dataset row, with name and winery set to "Not found" so the row is never mistaken for empty. Error rows carry two additional fields:

{
"searchQuery":"Nonexistent Wine 9999",
"inputSource":"search",
"name":"Not found",
"winery":"Not found",
"error":"NAME_SEARCH_ERROR",
"errorMessage":"No match found for \"Nonexistent Wine 9999\"",
"scrapedAt":"2026-03-03T12:00:00.000Z"
}

error is one of URL_PROCESSING_ERROR (URL could not be parsed or page fetch failed) or NAME_SEARCH_ERROR (no Vivino match, too-short query, or empty result). The default Overview view surfaces the error/errorMessage columns, and a dedicated Errors view filters to failed inputs only.

Billing of not-found rows: a name search that Vivino's own catalog confirms has no matching wine β€” a definitive "not on Vivino" answer (typically a non-wine query, e.g. a spirit) β€” is billed as one result, because the search work was performed and a conclusive answer delivered. All other error rows are never billed: a rate-limited search, an unmatched name that required the full fallback search, an invalid URL, or a fetch failure.

Alternative candidates on uncertain matches

When a wine name search is uncertain, the Actor also returns one or two alternative candidates (other cuvΓ©es from the same producer) so you can pick the right one. They are fully enriched, carry "isAlternative": true with the primary's searchQuery, expose a matchScore (higher = more confident), and are never billed β€” you pay only for the single primary result.

{"searchQuery":"Domaine Leflaive Puligny Montrachet","name":"Puligny-Montrachet Clavoillon","matchScore":4.34,"isAlternative":false}
{"searchQuery":"Domaine Leflaive Puligny Montrachet","name":"Puligny-Montrachet Les Pucelles","matchScore":4.34,"isAlternative":true}

Confident matches produce no alternatives. Alternatives apply to name searches only; direct URLs always resolve to one wine.

Run summary in Key-Value Store

Every run writes a JSON summary to the default Key-Value Store under last-run-summary (input counts, processed total, cache hits/misses, and resilience metrics such as rate-limit trips and charge-limit status). Useful for drift detection and capacity planning.

{
"input":{"count":10,"urlCount":2,"nameCount":8,"matchingMode":"basic"},
"output":{"processed":10},
"cache":{"hits":6,"misses":14},
"resilience":{"rateLimit429Trips":0,"chargeLimitReached":false}
}

How much does scraping Vivino cost?

Vivino Wine Data Scraper uses a pay-per-event pricing model: no startup fee, and you are charged only per result returned in the dataset (one wine = one event, about $0.003). The $5 free monthly credit covers roughly 1,600 wines.

See the Pricing tab for the full price table by Apify subscription tier (Free, Starter, Scale, Business) β€” higher tiers unlock automatic discounts.

What is not charged: an unmatched name that required the full fallback search, a rate-limited search, an invalid URL, a too-short query, a fetch failure, and any alternative candidates surfaced on uncertain matches (see Output format). What is charged: each wine returned, and a catalog-confirmed not-found β€” a definitive "not on Vivino" answer (typically a non-wine query).

Cap your run cost: set ACTOR_MAX_TOTAL_CHARGE_USD in the Run options to enforce a hard ceiling per run β€” the Actor stops gracefully (dataset preserved) when the cap is reached.

Tips & troubleshooting

  • Include vintage years for precise matching (Chateau Margaux 2015, not Chateau Margaux).
  • Start without reviews to keep runs fast and cheap; add them later if needed.
  • Use Advanced matching when a Basic run leaves many NAME_SEARCH_ERROR rows (messy or last-name-first producer names); keep Basic for clean lists.
  • Ship To Country controls market-specific availability (ES for Spain-only listings); Country Code sets the pricing currency.
  • Proxy configuration is off by default and unneeded for light, solo runs. Enable it only when running several batches in parallel, so each rotates through different IPs instead of sharing one and hitting Vivino's 429 wall (without a group it uses the paid residential pool, since Vivino often rejects datacenter IPs).

Common issues

  • "No results found": check typos, try with or without the vintage year, or set searchMode: "name_only". Very niche or new wines may not be on Vivino.
  • Empty price: prices depend on countryCode and shipTo; try the wine's country of origin (IT for Italian wines).
  • Wrong wine returned: include the full producer name (Chateau Margaux Margaux, not Margaux) and the vintage year.
  • Rate-limited or timed out on a large list: split into ≀250-wine batches and run them in parallel; enable proxy for IP rotation across concurrent runs.

Integrate into your workflow

Send results to Google Sheets, Airtable, your database, or your own API.

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'{
"wines": ["Chateau Margaux 2015", "Opus One 2019"],
"includeTasteProfile": true
}'

Node.js:

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

(Python and other languages: use the Apify API client the same way.)

Export formats, schedules, webhooks

  • Export: append ?format=json|csv|xlsx|xml to the dataset URL; filter with ?fields=name,average_rating,price or ?omit=reviews,image_url.
  • Schedules: save a Task, then set a cron expression in the Schedules tab (e.g. 0 8 * * 1 for Mondays at 8 AM UTC) for recurring price tracking.
  • Webhooks: on "Run succeeded", receive datasetId and run metadata at your endpoint β€” no polling.

No-code integrations

PlatformWhat it does
Google SheetsExport wine data to a sheet automatically
AirtableSync wines to a base with field mapping
ZapierTrigger Zaps on run completion β†’ push to 5,000+ apps
MakeVisual workflows: scrape β†’ transform β†’ insert into DB
n8nSelf-hosted workflow automation with the Apify trigger node

Setup for each: see the Apify Integrations docs. Actor ID for run-actor steps: qRSfN5MBLbaEbSU6n.

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? By URL or with Basic matching, expect ~30-50 wines per minute. With reviews and shipTo enabled, throughput drops to ~5-10 per minute. Advanced matching runs at ~15-25 seconds per hard name. Vivino's rate limiting can slow large batches; the scraper retries and cools down automatically.

Can I scrape large volumes? Yes. Deduplication is automatic within a run. Each run accepts up to 250 wines; for larger catalogues, split into ≀250-wine batches and run them in parallel or on a schedule.

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

Can I use this scraper via MCP? Yes, via the standard Apify MCP integration β€” add mrbridge/vivino-wine-data-scraper to your MCP client (Claude Desktop, Cursor, and more). It runs as a tool inside Apify's catalog-wide MCP server, not its own endpoint.

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? Results stay in your Apify dataset for 31 days (default retention), fully under your control. No wine data is shared with third parties, no Vivino account or personal data is involved, and requests are stateless and GDPR-compliant.

Is it legal to scrape Vivino?

Scraping publicly available data is generally legal (see the 2022 hiQ Labs v. LinkedIn ruling). This scraper only reads pages any visitor can see on Vivino.com without logging in, and never touches private user data or paid features. Review Apify's legality guide and ensure your use case complies with Vivino's Terms of Service and applicable laws (GDPR, especially if you store review text from identifiable users).

Provided as-is for personal and commercial use; not affiliated with or endorsed by Vivino.

Your feedback

We're always working on improving the performance of this Actor. If you have technical feedback for Vivino Wine Data Scraper or simply found a bug, please create an issue on the Actor's Issues tab on Apify Console.

For faster support on matching problems: include your run ID in the issue, and consider enabling Settings β†’ Login & Privacy β†’ Share run data with developers in your Apify account β€” it lets the maintainer open your run directly (input, log, results) and diagnose a wrong or missing match in minutes instead of guesswork. You can turn the setting off again at any time.

More free wine-data tools and studies at mr-bridge.com.

Related Actors: Vivino Wine Scraper (browse wines by region), Millesima Wine Scraper (wine prices and critic ratings), Wine-Searcher Scraper from List (popularity, critic scores, prices from Wine-Searcher).

You might also like

Vivino Scraper

solidcode/vivino-scraper

[πŸ’° $1.8 / 1K] Extract structured wine data from Vivino: name, winery, vintage, region, grape varieties, ratings, price, taste profile, food pairings, and optional user reviews. Search by keyword or paste wine URLs.

Vivino Wine Scraper - Ratings, Prices & Vintages

mrbridge/vivino-powerful-scraper

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.

Wine-Searcher Scraper from List: popularity, scores & prices

mrbridge/wine-searcher-scraper-from-list

Extract popularity, critic scores, prices (always per 75cl bottle) and winery info from Wine-Searcher.com. Input wine names, URLs or LWIN codes; get structured JSON. Success-only billing: $0.025 per wine actually extracted, errors and not-found are free.

Vivino Wine Scraper β€” Ratings, Reviews & Prices

bovi/vivino-wine-scraper

Scrape Vivino wine data by name: ratings, reviews, taste profile, food pairings, region, grapes, and live merchant price. One rich row per wine. No API key. Pay per result.

πŸ‘ User avatar

Vitalii Bondarev

2

Vivino $1.2πŸ’° Wine Ratings, Prices, Reviews & Offers

abotapi/vivino-wine-data-scraper

From $1.2/1K. Scrape Vivino.com for wine ratings, prices, taste profiles, food pairings, grapes, and reviews. Search by wine names or URLs, or discover wines by type, price, rating, country, and grape. Returns 50+ fields, including multi-merchant offers and value scores.

Trustpilot Scraper

happitap/trustpilot-scraper

Trustpilot Reviews Scraper extracts customer reviews from any company's Trustpilot page. Simply provide the Trustpilot review page URL, and the Actor will automatically scrape all reviews with ratings, author information, dates, and review content.

Vivino Reviews & Taste Profile Scraper

ahmed_jasarevic/vivino-reviews-taste-profile-scraper

Professional tool to extract wine reviews, ratings, and detailed taste profiles (tannin, acidity, etc.) directly from Vivino's API High-performance Vivino scraper. Get customer reviews, regional statistics, and flavor profiles (sweetness, tannins) with residential proxy support.

πŸ‘ User avatar

Ahmed Jasarevic

10

Total Wine Product Reviews Scraper

scraped/total-wine-product-reviews-scraper

Scrape reviews from Total Wine