Vivino $1.2💰 Wine Ratings, Prices, Reviews & Offers
Pricing
from $1.20 / 1,000 wine results
Vivino $1.2💰 Wine Ratings, Prices, Reviews & Offers
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.
Pricing
from $1.20 / 1,000 wine results
Rating
0.0
(0)
Developer
AbotAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Vivino Wine Data Scraper
Pull structured wine data from Vivino: ratings, prices, taste profiles, food pairings, grapes, value scores, and user reviews. Look up a list of wine names or paste Vivino URLs, or skip the list entirely and discover wines by type, price, rating, origin country, and grape, with full sorting. Fast, returns clean ready-to-use fields, and runs on any Apify plan.
Why this scraper
- Two ways to work: a mixed list of wine names and URLs (one record each), or a filter-and-sort discovery mode that walks the catalog with no list at all.
- 50+ fields per wine, including a full taste profile, multi-merchant price offers, and Vivino value and competitiveness scores.
- Real filters and real sort: wine type, minimum rating, price range, origin country, grape, sorted by rating, price, or popularity.
- Optional taste profile and user reviews per wine (reviews keep the language, reviewer alias, and tagged note).
- Market aware: choose the pricing country and currency, and echo a ship-to country on every record.
- Low cost and reliable: runs on every Apify plan, with automatic retries for large jobs.
Data you get
Sample shape, values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
| wineId | 1234567 |
| vintageId | 89012345 |
| name | Sample Winery Reserve Red 2019 |
| winery | Sample Winery |
| vintage | 2019 |
| wine_type | Red |
| region | Sample Region |
| country | France |
| country_code | fr |
| appellation | Sample Appellation |
| grape_varieties | ["Cabernet Sauvignon", "Merlot"] |
| average_rating | 4.3 |
| ratings_count | 1200 |
| wine_average_rating | 4.2 |
| wine_ratings_count | 25000 |
| price | 49.9 |
| currency | EUR |
| merchant_url | https://www.vivino.com/checkout/... |
| discount_percent | 10 |
| bottle_volume_ml | 750 |
| vfm_score | 4.1 |
| vfm_category | great |
| cmp_score | 3.8 |
| is_natural | false |
| image_url | https://images.vivino.com/thumbs/000000000_pb_x960.png |
| label_image_url | https://images.vivino.com/thumbs/000000000_pl_375x500.png |
| food_pairings | ["Beef", "Lamb", "Game"] |
| description | Style description text appears here. |
| taste_profile | { body, acidity, tannins, sweetness, fizziness, intensity, flavor_notes, flavor_groups } |
| reviews | [ { rating, note, language, user_name, created_at } ] |
| prices | [ { amount, currency, merchant_url, discount_percent } ] |
| vivino_url | https://www.vivino.com/sample-winery-reserve-red/w/1234567?year=2019 |
How to use
Look up wines by name (one record per wine you list):
{"mode": "lookup","wines": ["Opus One 2019", "Dom Pérignon", "Cloudy Bay Sauvignon Blanc"],"countryCode": "US","currencyCode": "USD"}
Look up wines by URL, with taste profile and reviews:
{"mode": "lookup","wines": ["https://www.vivino.com/cloudy-bay-sauvignon-blanc/w/18978","https://www.vivino.com/chateau-margaux-premier-grand-cru-classe/w/1127795?year=2015"],"includeTasteProfile": true,"includeReviews": true,"maxReviewsPerWine": 20}
Discover top-rated French reds between 50 and 150, sorted by rating (collects up to maxItems):
{"mode": "discovery","wineTypes": ["Red"],"originCountries": ["fr"],"minRating": 4,"priceMin": 50,"priceMax": 150,"sortBy": "rating_desc","countryCode": "US","currencyCode": "USD","maxItems": 50}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | lookup | lookup: scrape the wines you list. discovery: find wines by filter + sort. |
| wines | array | sample | Lookup mode: mixed list of wine names and Vivino URLs (one record each). |
| searchMode | string | auto | Vintage handling for name lookups: auto, name_and_vintage, name_only. |
| matchingMode | string | basic | basic takes the top match; advanced also surfaces one alternative (unbilled). |
| wineTypes | array | [] | Discovery filter: Red, White, Sparkling, Rosé, Dessert, Fortified. |
| minRating | integer | (none) | Discovery filter: minimum Vivino average rating (1 to 4.5). |
| priceMin / priceMax | integer | (none) | Discovery price range in the selected currency. |
| originCountries | array | [] | Discovery filter by wine origin (ISO alpha-2 codes, e.g. fr, it, us). |
| grapes | array | [] | Discovery filter by Vivino grape IDs. |
| sortBy | string | relevance | relevance, rating_desc, rating_asc, price_asc, price_desc, popularity. |
| includeTasteProfile | boolean | true | Fetch body, acidity, tannins, sweetness, fizziness, intensity, flavor notes. |
| includeReviews | boolean | false | Fetch user reviews per wine. |
| maxReviewsPerWine | integer | 10 | Maximum reviews per wine (1 to 100). |
| countryCode | string | FR | Market country for pricing (ISO alpha-2). |
| currencyCode | string | EUR | Currency for prices (ISO 4217). |
| shipTo | string | (none) | Optional ship-to country, echoed on each record. |
| maxItems | integer | 20 | The only cap on records. Set 0 for unlimited. |
| maxPages | integer | 0 | Safety bound on discovery pages. 0 means no page limit; the run stops at Max wines. |
| proxy | object | Apify Proxy | Proxy settings. Works on all plans; Residential is recommended for large runs. |
Send results into your apps (MCP connectors)
Optionally pipe each record into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector under Apify, Settings, API & Integrations, then select it in the input. For Notion, also set the parent page URL. The connector receives a condensed, human-readable summary per wine (a title plus key fields as plain text), not the full JSON; the complete record always stays in the Apify dataset. Leave the connectors field empty to skip this entirely; it never changes the dataset output.
Output example
Sample shape, values are illustrative placeholders, not from a live listing.
{"wineId": 1234567,"vintageId": 89012345,"name": "Sample Winery Reserve Red 2019","winery": "Sample Winery","vintage": 2019,"wine_type": "Red","region": "Sample Region","country": "France","country_code": "fr","grape_varieties": ["Cabernet Sauvignon", "Merlot"],"average_rating": 4.3,"ratings_count": 1200,"price": 49.9,"currency": "EUR","vfm_category": "great","is_natural": false,"food_pairings": ["Beef", "Lamb"],"taste_profile": {"body": 5,"acidity": 3.1,"tannins": 3.8,"sweetness": 1.6,"fizziness": null,"intensity": 3.7,"flavor_notes": ["black fruit", "oak", "leather"]},"reviews": [{ "rating": 4.5, "note": "Sample review text.", "language": "en", "user_name": "reviewer", "created_at": "2026-01-01T00:00:00.000Z" }],"vivino_url": "https://www.vivino.com/sample-winery-reserve-red/w/1234567?year=2019","scrapedAt": "2026-01-01T00:00:00.000Z","inputSource": "search"}
Plan requirement
The actor runs on every Apify plan, including Free. For large jobs, the Residential proxy option gives the most consistent results; it is included on the Apify Starter plan and above. Select it in the proxy input when you need maximum reliability.