Skip to content

Vivino Scraper

Try for free

Scrape Vivino wines by name or link, or browse Vivino with filters: ratings, vintage ratings, prices in 38 markets, grapes, region, food pairings, taste profiles and reviews. No login needed.

🍷 Vivino Scraper

Get Vivino wine data for any wine you name or link: community ratings (per vintage and over all vintages), local prices in 38 markets, grapes, region, style, food pairings, critic scores, drinking window, rankings, taste profiles and reviews. Or browse Vivino's catalogue with filters (wine type, country of origin, grape, rating, price) and get every wine that matches. No login, no browser, results in seconds.

✨ Why use Vivino Scraper?

  • ⚡ Fast — reads Vivino's own data feeds, no browser. In our tests 5 wines took about 10 seconds per run, and 1,000 explore results 40 seconds.
  • 🎯 Smart name matching — type names the way people write them ("Dom Perignon", "Chateau Margaux 2015", "Opus One 2019"): accents, word order and missing words are handled, and the year picks the vintage.
  • 🍇 Complete wine data — vintage and all-vintages ratings, rating distribution, price, median market price, discount, grapes, region, country, style, food pairings, alcohol, closure, critic scores, rankings, drinking window and images.
  • 🔎 Explore mode — browse Vivino like its Explore page: red wines from Italy above 4.2 under 40 EUR, Champagne by most ratings, any grape, any country. Paste an explore link or set the filters.
  • 🌍 38 markets — prices, currency and shop offers for the country you ship to (US by state, UK, Germany, France, Japan, Brazil ...).
  • 💸 Cheap — you pay per wine returned. Taste profiles and reviews are included in that price.

🎯 Use cases

  • 🛒 Wine shops and e-commerce — enrich your catalogue with Vivino ratings, rating counts, grapes, food pairings and label images.
  • 💲 Price monitoring — track Vivino prices and discounts for your wines in several countries; schedule a daily run.
  • 🍽️ Restaurants and sommeliers — rate a wine list in one run and see which bottles the community loves.
  • 📊 Market research — compare regions, grapes and styles by rating and price, or find the best-rated wines under a budget.
  • 🗣️ Review analysis — collect tasting notes and reviews for sentiment or flavor research.
  • 🤖 Apps and bots — look up any wine by name through the API and get clean JSON back.

🚀 How to use

  1. Put your wines into Wines, one per line: names (with the year if you want that vintage) and/or Vivino links. For browsing, paste a Vivino explore link or set the Explore filters.
  2. Pick the Market you want prices for, and switch on taste profile or reviews if you need them.
  3. Click Start.
  4. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
winesWine names (Opus One 2019, Dom Pérignon) and Vivino links: wine pages (/w/1911534?year=2019), vintage pages (/wines/159338935) or explore pages (/explore?...).
maxResultsMost wines to save per explore search (0 = all Vivino lists, about 2,000 per search).
wineTypes, originCountries, grapesExplore filters: start a browse of Vivino's catalogue.
minRating, minPrice, maxPrice, sortByNarrow and order explore results.
searchModeHow a year in a name is used: auto, name_and_vintage (exact vintage only) or name_only.
maxMatchesPerName1 = best match; more returns the next best matches too.
includeTasteProfile, includeReviews, maxReviewsPerWineExtra data per wine.
shipTo, usStateMarket for prices and currency.
{
  "wines": [
    "Opus One 2019",
    "Dom Pérignon",
    "https://www.vivino.com/cloudy-bay-sauvignon-blanc/w/18978"
  ],
  "includeTasteProfile": true,
  "includeReviews": true,
  "maxReviewsPerWine": 20,
  "shipTo": "GB"
}

Browse instead of naming wines:

{
  "wineTypes": ["red"],
  "originCountries": ["it"],
  "minRating": 4.2,
  "maxPrice": 40,
  "sortBy": "highest_rated",
  "maxResults": 200,
  "shipTo": "DE"
}

📤 Output

One row per wine. The dataset has three table views: Wines, Ratings, taste and prices and Reviews.

FieldDescription
name, winery, vintage, full_nameWine, producer and year (vintage is empty for all-vintages data).
wine_type, region, country, country_code, wine_styleType and origin.
grape_varieties, food_pairings, alcohol, closure, wine_descriptionWine facts.
average_rating, ratings_countRating of this vintage (all vintages when no year).
wine_average_rating, wine_ratings_countRating over all vintages.
display_rating, display_rating_scope, vintage_rating_statusThe best rating available and what it covers. Vivino hides a vintage's average until it has enough ratings.
price, currency, price_usd, median_price, discounted_from, discount_percent, price_vintagePrice in the chosen market.
merchant_url, bottle_volume_mlShop offer (explore results).
critic_scores, awards, rank_global, rank_in_country, rank_in_region, drinking_window_start, drinking_window_endScores, rankings and when to drink.
taste_profileBody, acidity, tannins, sweetness, fizziness, flavor groups and notes (when enabled).
reviewsRating, text, language, date, reviewer, likes (when enabled).
input, inputSource, searchQuery, matchScore, matchRank, resolution_statusWhich input gave the row and how it was matched.
wineId, vintageId, vivino_url, image_url, label_image_url, bottle_image_urlIDs, link and images.
{
  "wineId": 1136930,
  "vintageId": 169250169,
  "vivino_url": "https://www.vivino.com/penfolds-grange/w/1136930?year=2018",
  "name": "Grange",
  "full_name": "Penfolds Grange 2018",
  "winery": "Penfolds",
  "vintage": 2018,
  "wine_type": "Red",
  "region": "South Australia",
  "country": "Australia",
  "country_code": "AU",
  "wine_style": "Australian Cabernet - Shiraz",
  "grape_varieties": ["Shiraz/Syrah", "Cabernet Sauvignon"],
  "food_pairings": ["Beef", "Lamb", "Poultry"],
  "alcohol": 13.5,
  "average_rating": 4.6,
  "ratings_count": 576,
  "wine_average_rating": 4.6,
  "wine_ratings_count": 30061,
  "display_rating": 4.6,
  "display_rating_scope": "vintage",
  "vintage_rating_status": "published",
  "price": 658.9,
  "currency": "USD",
  "median_price": 688.49,
  "drinking_window_start": 2023,
  "drinking_window_end": 2033,
  "rank_global": 3738,
  "taste_profile": {
    "body": 4.7,
    "acidity": 3.05,
    "tannins": 3.23,
    "sweetness": 2.1,
    "fizziness": null,
    "flavor_notes": ["oak", "vanilla", "chocolate", "tobacco", "cedar"]
  },
  "reviews": [
    {
      "rating": 4.5,
      "note": "Dark fruit, cedar and a very long finish.",
      "language": "en",
      "created_at": "2025-09-28T17:19:44.000Z",
      "user_name": "Jane D.",
      "vintage_year": 2018
    }
  ],
  "input": "Penfolds Grange 2018",
  "inputSource": "search",
  "matchScore": 1,
  "matchRank": 1,
  "resolution_status": "matched",
  "shipTo": "US",
  "scrapedAt": "2026-10-21T04:35:17.040Z"
}

💰 Pricing

You pay $3.50 per 1,000 wines (a fraction of a cent per wine), plus a small platform usage fee for the run (compute and proxy traffic, about one to two cents per 1,000 wines in our tests). Taste profiles and reviews are included in the wine price.

Example: 1,000 wines ≈ $3.50 + about $0.01 to $0.02 usage (measured on our test runs) ≈ $3.52.

Wines that are not found, invalid inputs and duplicates are not saved and cost nothing. Set a maximum charge per run in the run options and the run stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape Vivino? The scraper reads public wine pages and data that anyone can see without an account. You are responsible for how you use the data; check Vivino's terms and the laws that apply to you, especially for reviews, which are written by people.

Do I need a Vivino account or a proxy? No account. Datacenter proxies are on by default and enough for Vivino; the run moves to residential proxies by itself if Vivino starts refusing datacenter addresses.

How many wines can I get? As many names and links as you like in one run. An explore search returns up to about 2,000 wines (Vivino's own limit per search); split big searches by country, type or price to get more.

Why is the vintage rating empty? Vivino publishes a vintage's average only after it has enough ratings. display_rating then falls back to the all-vintages rating and display_rating_scope says so.

Why is the price empty? No shop sells that wine in the chosen market. Try another market (shipTo), for example the wine's home country.

Can I schedule it or use the API? Yes. Schedule runs for price tracking and call the actor through the API from any language; results come back as JSON, CSV or Excel.

⚠️ Limits

  • Name matching returns the closest Vivino wine. A very short or ambiguous name (only a region, say) can match a different wine; check matchScore, or raise maxMatchesPerName and pick.
  • Prices are the ones Vivino shows for the chosen market, in that market's currency; not every wine has an offer in every market.
  • Explore searches stop at Vivino's own ceiling of about 2,000 wines per search.
  • maxMatchesPerName goes up to 1,000, the most hits Vivino's wine search returns for one query.
  • maxReviewsPerWine goes up to 2,000. Reviews sit inside the wine's row, which is held in memory until it is saved.
  • Shop offer links (merchant_url) and bottle size come with explore results; for named wines Vivino's price feed has no shop link.
  • Reviews are the public ones, in the order Vivino shows them (not by date).

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.