Vivino Scraper — Wine Prices, Ratings & Reviews avatar

Vivino Scraper — Wine Prices, Ratings & Reviews

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
Vivino Scraper — Wine Prices, Ratings & Reviews

Vivino Scraper — Wine Prices, Ratings & Reviews

Scrapes wine data from vivino.com: name, vintage, winery, region, rating, review count, and merchant price. No login required.

Pricing

from $1.20 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Vivino Scraper

Scrapes wine data from vivino.com: name, vintage, winery, region, community rating, review count, and a merchant offer with price.

Why use this actor?

Vivino aggregates ratings from millions of users and prices from dozens of wine merchants, but there's no official public API for buyers who want that data in bulk. This actor pulls it directly from Vivino's own search backend — useful for wine retailers tracking competitor pricing, for building a rating-based wine recommender, or for market research on which regions/varietals are trending by rating volume.

How to scrape Vivino data

  1. Set a searchQuery (a wine name, grape variety, region, or winery — e.g. "chateau margaux", "rioja", "chardonnay") or leave it blank and set wineType/minRating/price filters instead to browse without a keyword.
  2. Optionally filter by wineType (red, white, rosé, sparkling, dessert, fortified), minRating (1-5), and a price range.
  3. Pick a marketCountry to control which currency prices are shown in.
  4. Run the actor. Each result is one wine vintage with its current rating and a merchant price.

The actor talks directly to Vivino's /api/explore/explore JSON endpoint (the same one the vivino.com search page itself calls) rather than parsing rendered HTML, so results are clean and fast.

Input

FieldTypeRequiredDescription
searchQueryStringNoWine, grape, region, or winery to search for. Leave blank (with no other filters) to fall back to a default search. Leave blank while setting other filters to browse by those filters alone — this field has no schema default on purpose, so it never silently narrows a filter-only search.
wineTypeStringNored, white, rose, sparkling, dessert, fortified, or blank for any
marketCountryStringNoISO country code controlling currency (default BE → EUR)
minRatingIntegerNoMinimum Vivino rating, 1-5 scale (default 1, i.e. no filter)
minPriceIntegerNoMinimum price in the market country's currency (default 0)
maxPriceIntegerNoMaximum price in the market country's currency (default 1000)
sortByStringNorating_desc (default), rating_asc, price_asc, price_desc
maxResultsIntegerNoMaximum wines to return, hard-capped at 2000 (default 50)
proxyConfigurationObjectNoApify Proxy settings (automatic works — see Limitations)

Output

Each result contains:

FieldTypeExample
vintageIdInteger183041714
wineIdInteger2169229
wineNameString"Cabernet Sauvignon"
vintageNameString"Terre di Rai Cabernet Sauvignon 2025"
vintageYearInteger or null2025
wineryString or null"Terre di Rai"
regionString or null"delle Venezie"
countryString or null"Italy"
wineTypeString or null"Red"
ratingNumber or null3.4
ratingCountInteger or null128
priceNumber or null24.99
currencyString or null"EUR"
originalPriceNumber or null29.99
discountPercentNumber or null17
bottleVolumeMlInteger or null750
merchantIdInteger or null34978
merchantUrlString or nullOutbound link to buy at that merchant
availableBoolean or nulltrue
imageUrlString or nullBottle/label image URL
wineUrlStringCanonical vivino.com wine page
scrapedAtStringISO 8601 timestamp
searchQueryString or nullInput echo
marketCountryString or nullInput echo

Example output

{
"vintageId": 183041714,
"wineId": 2169229,
"wineName": "Cabernet Sauvignon",
"vintageName": "Terre di Rai Cabernet Sauvignon 2025",
"vintageYear": 2025,
"winery": "Terre di Rai",
"region": "delle Venezie",
"country": "Italy",
"wineType": "Red",
"rating": 3.4,
"ratingCount": 128,
"price": 5.72,
"currency": "EUR",
"originalPrice": null,
"discountPercent": null,
"bottleVolumeMl": 750,
"merchantId": 34978,
"merchantUrl": "https://www.seulementproduitsitaliens.be/scheda.php?codice=ZPP2621",
"available": true,
"imageUrl": "https://images.vivino.com/thumbs/MYqT_2abQ4uWByvXg25kNg_pb_x600.png",
"wineUrl": "https://www.vivino.com/w/2169229",
"scrapedAt": "2026-08-13T09:10:33.942Z",
"searchQuery": "chateau margaux",
"marketCountry": "BE"
}

Cost estimate

This actor uses approximately 0.5-1 compute unit per 1,000 results — it's a lightweight JSON API scraper with no browser rendering. At standard Apify pricing that's a few cents per 1,000 wines, well under the actor's own per-result price. Usage cost only settles once a run reports SUCCEEDED — reading a dataset mid-run will show a cost far below the real total.

Limitations

  • Each result carries one merchant's price, not a full cross-retailer comparison — Vivino's search endpoint returns a single representative offer per wine, not every merchant carrying it.
  • Grape variety composition isn't returned by the search endpoint used here (only available from the site's per-wine detail page, which this actor doesn't fetch to keep runs fast and single-request-per-result).
  • No anti-bot wall was found on this endpoint during recon (plain HTTPS, no cookies/session, automatic Apify Proxy works fine at normal volume). If you run very high volumes and start seeing block/rate-limit warnings in the run log, switch proxyConfiguration to a Residential proxy group.
  • Data is scraped from the public website and may change without notice.
  • Respect vivino.com's terms of service and use responsibly.

Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.

See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.