Wine-Searcher Scraper from List: popularity, scores & prices
Pricing
$25.00 / 1,000 wine data extracteds
Wine-Searcher Scraper from List: popularity, scores & prices
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.
Pricing
$25.00 / 1,000 wine data extracteds
Rating
5.0
(1)
Developer
MrBridge
Maintained by CommunityActor stats
1
Bookmarked
47
Total users
18
Monthly active users
7.9 hours
Issues response
a day ago
Last modified
Categories
Share
What is Wine-Searcher Scraper from List?
Wine-Searcher Scraper from List is an Apify Actor that extracts structured wine data from Wine-Searcher.com, the world's largest wine price comparison site with 18M+ searches per month. Provide wine names, Wine-Searcher URLs or LWIN codes, and the scraper returns popularity rankings, critic scores, cheapest worldwide prices and winery details in JSON or CSV format.
No Wine-Searcher account needed, no API key, no rate limits. A pay-per-result alternative to the official Wine-Searcher API, billed only when a wine is actually extracted. Failed extractions, blocked pages, missing wines and empty results are reported in the dataset but never charged to your account.
Features
- Three input modes: search by wine name, paste Wine-Searcher URLs, or use industry-standard LWIN codes
- Critic scores & reviews: aggregated ratings from Wine-Searcher's critic database
- Cheapest worldwide prices: lowest available price with merchant name, excluding auctions and pre-arrival offers
- Always per-bottle pricing: case listings (e.g. EU merchants selling "Case of 12") are auto-normalized so
cheapestPriceAmountis always the price for one 75cl bottle. ThebottlesPerUnitfield tells you whether normalization happened. - Winery info & popularity: producer details and Wine-Searcher popularity ranking for each wine
- POS / inventory-ready: paste wine names from your point-of-sale system as-is. Category prefixes, bottle sizes and commas are stripped automatically.
- LWIN auto-detection: LWIN7, LWIN11, LWIN16 and LWIN18 codes all accepted. Numeric or string format, with or without
inputType. - Retries failed requests and saves partial results on timeout: one bad input never kills the run, memory stays bounded, and on a soft deadline the actor exits gracefully with whatever it already extracted
- Only successful extractions are billed at $0.025/wine: errors, blocked requests, timeouts, missing wines and empty results are reported in the dataset for visibility but never billed.
Which wine scraper should I use?
| Need | Best scraper | What it does |
|---|---|---|
| Look up specific wines by name, URL or LWIN | Wine-Searcher Scraper from List (this one) | Critic scores, cheapest prices, winery info & popularity for each wine |
| Discover all wines for a grape variety | Wine-Searcher Grape Scraper | Browse and extract wines by grape variety on Wine-Searcher |
| Get Vivino user ratings & taste profiles | Vivino Wine Data Scraper | Vivino ratings, prices, taste profiles & reviews |
| Browse wines by region on Vivino | Vivino Wine Scraper | Browse and extract all wines from a Vivino region |
| Monitor Millesima prices & stock | Millesima Wine Scraper | Prices, stock and critic ratings from Millesima |
In short: Use this actor when you have a known list of wines and want Wine-Searcher data (critic scores, market prices, popularity). Use the Grape Scraper when you want to discover wines by grape variety.
Tip: Use the Grape Scraper to discover wines by grape variety, then this actor to get detailed data for each wine.
Why scrape Wine-Searcher?
Wine-Searcher aggregates 20M+ offers from 80,000+ merchants worldwide. The data is used by wine retailers (competitor pricing, catalog benchmarking), sommeliers and buyers (scores and market prices before purchase), collectors and investors (cellar valuation, popularity tracking), and data teams (recommendation engines, pricing models, BI dashboards).
What data can this scraper extract?
| Data Point | Description | Always included |
|---|---|---|
| Wine name | Full name as listed on Wine-Searcher | Yes |
| Appellation | Appellation and country of origin | Yes |
| Critic score | Aggregated critic score (0–100) | Yes |
| Critic reviews count | Number of critic reviews | Yes |
| Wine style | Style descriptor (e.g. "Red - Savory and Classic") | Yes |
| Cheapest price | Lowest available price worldwide, always per 75cl bottle (case listings auto-divided) | Yes |
| Currency | Currency code (EUR, USD, GBP…) | Yes |
| Merchant | Merchant offering the lowest price | Yes |
| Bottles per unit | 1 = single bottle, ≥2 = case (price already normalized to per-bottle) | Yes |
| Offers count | Total number of merchant offers | Yes |
| Winery name | Producer / winery name | Yes |
| Winery URL | Winery page URL on Wine-Searcher | Yes |
| Popularity ranking | Wine-Searcher popularity ranking | Yes |
| Wine-Searcher URL | Direct link to the wine page | Yes |
| Scraped at | ISO timestamp of extraction | Yes |
Quick start: test in 60 seconds
- Click "Try for free" to open this actor in Apify Console
- The default input includes sample wines. Leave them or paste your own.
- Click "Start"
- Download your results from the Dataset tab (JSON, CSV, Excel)
That's it! No Wine-Searcher account needed, no API key, no rate limits.
Maximum 1000 wines per run. For larger catalogs, split your list across multiple runs.
Option 1: Search by wine name
- Go to the Wine-Searcher Scraper from List on Apify
- Select "Wine Names" from the input type dropdown
- Enter wine names, one per line. Include the full domaine name and the vintage year for the most accurate match.
- Click Start to run the scraper
Example:
Domaine Leflaive Puligny-Montrachet Les Pucelles 2020 Château Beaucastel Hommage à Jacques Perrin 2019
Tips: The more specific the name, the more accurate the match. "Petrus 2015" works, but "Domaine du Château de Meursault Meursault Les Charmes 2020" is more precise.
POS / inventory systems? If your wine list comes from a point-of-sale or inventory system with category prefixes and bottle sizes (e.g. Champagne, Dom Perignon Brut, 2013, Champagne, France or Dessert Wine, Dolce Late Harvest (375ml), Napa Valley), just paste them as-is. The actor automatically cleans the names before searching.
Option 2: Provide Wine-Searcher URLs
- Select "Wine-Searcher URLs" from the input type dropdown
- Paste one Wine-Searcher URL per line. Any URL from
wine-searcher.com/find/...works. - Click Start
Example:
https://www.wine-searcher.com/find/lwin11316442021 https://www.wine-searcher.com/find/petrus/2015
Option 3: Use LWIN codes
- Select "LWIN Codes" from the input type dropdown
- Enter one LWIN code per line. Supports all formats:
- LWIN11 (10-11 digits): specific wine + vintage, e.g.
11316442021 - LWIN7 (7 digits): wine across all vintages, e.g.
1131644 - LWIN16/LWIN18: automatically truncated to LWIN11
- LWIN11 (10-11 digits): specific wine + vintage, e.g.
- Click Start
Example:
11316442021 11084042019 1131644
LWIN (Liquid Wine Identifier Number) is the global standard for identifying wines. You can find LWIN codes on Liv-ex, Wine-Searcher, or your wine management software.
How do I configure the scraper?
| Parameter | Type | Default | Description |
|---|---|---|---|
inputType | string | auto-detected | How wines are identified: wineNames, urls or lwins. Auto-detected if omitted |
wineNames | array | - | Wine names to search on Wine-Searcher (max 1000) |
urls | array | - | Direct Wine-Searcher URLs (max 1000) |
lwins | array | - | LWIN codes, string or number format (max 1000) |
proxyCountry | string | FR | Proxy country; determines which prices and offers are shown (e.g. FR, US, GB) |
Example: Search by wine name
{"inputType": "wineNames","wineNames": ["Domaine Leflaive Puligny-Montrachet Les Pucelles 2020","Petrus 2015","Opus One 2019"],"proxyCountry": "FR"}
Example: Scrape by LWIN codes
{"inputType": "lwins","lwins": ["11316442021", "11084042019", "1131644"]}
Output example
{"inputValue": "11316442021","inputType": "lwin","wineSearcherUrl": "https://www.wine-searcher.com/find/lwin11316442021","wineName": "2021 Domaine Jean-Claude Bachelet et Fils Blanchot du Dessus","appellation": "Chassagne-Montrachet Premier Cru, France","score": 92,"criticReviewsCount": 2,"style": "White - Buttery and Complex","cheapestPriceAmount": 459.76,"cheapestPriceCurrency": "EUR","cheapestPriceMerchant": "Lay & Wheeler Wine Merchants","bottlesPerUnit": 1,"offersCount": 5,"offersPages": 1,"wineryName": "Jean-Claude Bachelet","wineryUrl": "https://www.wine-searcher.com/merchant/22937-jean-claude-bachelet","winePopularity": "2,622nd","scrapedAt": "2025-03-07T10:00:00.000Z"}
How much does it cost?
| Tier | Cost | What you get |
|---|---|---|
| Per result | $0.025/wine | Charged only when a wine is genuinely extracted |
| Free tier | $5 free credits/month | ~200 wines for free every month |
| Starter plan | $29/month | ~1,160 wines/month |
This Actor uses Apify's pay-per-event pricing with a success-only billing rule: Actor.charge('wine-extracted') fires exclusively after a non-empty wine record is committed to the dataset. No setup fee, no monthly minimum. 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 |
|---|---|
| 10 | $0.25 |
| 100 | $2.50 |
| 500 | $12.50 |
| 1000 | $25.00 |
What you pay for vs what you don't
| Scenario | Pushed to dataset? | Charged $0.025? |
|---|---|---|
| Wine successfully extracted (full data) | ✅ Yes | ✅ Yes |
| Cache hit (already extracted in a previous run) | ✅ Yes | ✅ Yes |
| Wine not found on Wine-Searcher | ✅ Yes (notFound: true) | ❌ Free |
| Page returned empty / parse-empty (site change canary) | ✅ Yes (error: "Parsed empty…") | ❌ Free |
| Blocked by anti-bot after retries | ✅ Yes (error: "Target site blocked…") | ❌ Free |
| Network or scraping API error | ✅ Yes (error: "...") | ❌ Free |
| Timeout on a single wine | ✅ Yes (error: "Scraping request timed out") | ❌ Free |
| Invalid input (malformed LWIN, wrong-domain URL) | ✅ Yes (error: "Invalid input: ...") | ❌ Free |
| Run aborted by user / migration / soft deadline | partial dataset preserved | only paid wines counted |
The dataset always tells you exactly what happened for each input: both the successes you paid for and the failures you didn't.
Tips for best results
- Use LWIN codes when available. They're the most reliable input mode, with zero ambiguity. Otherwise include the full producer name + vintage year in wine names ("Petrus 2015", not "Petrus").
- POS / inventory lists: paste as-is. Category prefixes, bottle sizes and commas are stripped automatically.
- Set
proxyCountryto your target market (FR,US,GB…) to see pricing relevant to that region. - Keep the default timeout (4 h). It's safe for all batch sizes up to 1000 wines. A full 1000-wine batch typically completes in ~6 h at the default conservative concurrency. Power users on cooperative sessions can raise
maxConcurrencyup to 10 to cut wall-clock to ~2 h, at the risk of more anti-bot blocks.
Integrate into your workflow
Push results into Google Sheets, Airtable, your DB, or call the actor from your own code. Common patterns below.
Programmatic API call
Use the Apify API or the official client libraries. Get your token from Settings → Integrations.
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("mrbridge/wine-searcher-scraper-from-list").call(run_input={"inputType": "lwins","lwins": ["11316442021", "11084042019"],})wines = client.dataset(run["defaultDatasetId"]).list_items().items# Filter out non-success rows before persistingextracted = [w for w in wines if w.get("wineName") and not w.get("error")]
The same pattern works in Node.js (ApifyClient), or via raw cURL against /v2/acts/{actorId}/run-sync-get-dataset-items for batches under 50 wines (300 s sync limit).
Dataset export formats
Append ?format= to the dataset URL: json (default), csv, xlsx, xml, jsonl. Filter fields with ?fields=wineName,score,cheapestPriceAmount or exclude with ?omit=wineSearcherUrl,inputType.
No-code integrations
Connect this actor to your tools without writing code via the Integrations tab in the Apify Console:
| Platform | Setup |
|---|---|
| Google Sheets | Auto-export results to a sheet; map wineName, score, cheapestPriceAmount and run on a schedule |
| Airtable | Sync wine data to an Airtable base with field mapping |
| Zapier | Trigger Zaps on Run succeeded → push to 5,000+ apps |
| Make | Visual workflows: scrape → transform → insert into DB |
| n8n | Self-hosted workflow automation with the Apify trigger node |
See the Apify Integrations docs for full setup.
Scheduled runs and webhooks
Schedule recurring runs (Apify Console → Schedules) using cron, e.g. 0 2 * * * for daily at 2 AM UTC or 0 8 * * 1 for weekly on Monday. Combine with a webhook (Integrations tab → Run succeeded) to push the dataset to your endpoint when each run finishes. No polling needed.
Handling catalogs larger than 1000 wines
Split your list into batches of 1000 and chain the runs:
batches = [all_lwins[i:i+1000] for i in range(0, len(all_lwins), 1000)]for batch in batches:client.actor("mrbridge/wine-searcher-scraper-from-list").call(run_input={"inputType": "lwins", "lwins": batch},)
Troubleshooting
"Wine not found" in results
- Check for typos in the wine name
- Include the full producer name (e.g., "Domaine Leflaive Puligny-Montrachet" instead of "Puligny-Montrachet")
- Add or remove the vintage year
- Very rare or brand-new wines may not be in Wine-Searcher's database
- The result will include
"notFound": true. No charge applies.
Prices differ from what I see on Wine-Searcher
- Prices depend on the
proxyCountrysetting; different countries see different merchant offers - Try changing
proxyCountryto match the region you're interested in (e.g.,USfor United States,GBfor United Kingdom) - Auctions, pre-arrival and "by request" offers are always excluded
Wrong wine returned for a name search
- Use LWIN codes or full Wine-Searcher URLs for zero-ambiguity matching
- Include the full domaine name and vintage year in name searches
Blocked by Wine-Searcher (403 errors)
- Use wine names (
wineNamesmode) instead of manual URLs. The actor handles encoding and search optimization automatically. - If using URLs, avoid adding country/currency filters (
/usa/usd); they increase blocking risk. - Set
proxyCountryto a different country (e.g.,FR,DE,UK) to route through a different proxy - The default
maxConcurrencyis already3(conservative). If you've raised it and see blocks, drop it back to3or1
Run timed out
The default 4 h timeout is safe up to 1000 wines. If you override via API, use max(120, ⌈batchSize ÷ concurrency⌉ × 30) seconds. E.g. 1000 wines at the default conc 3 needs ~10000 s; at conc 10 (manually raised) needs ~3000 s.
Which bottle format is used for prices?
Standard 75cl bottles. If no 75cl offer exists, falls back to 62.5cl (Tokaji, dessert wines) then 50cl. Auctions, pre-arrival and "by request" offers are always excluded. Case listings are auto-divided to per-bottle (see bottlesPerUnit).
FAQ
Does Wine-Searcher have an official API? Yes, but it's expensive and restricted. This actor provides a pay-per-result alternative at $0.025/wine with no monthly commitment.
How fast is the scraper?
The actor scrapes 3 wines in parallel by default — a conservative pace that keeps anti-bot blocks under control on Wine-Searcher. A full 1000-wine batch typically completes in ~6 hours at the default. Power users can raise maxConcurrency up to 10 (the hard cap) to cut wall-clock to ~2 hours when the scraping session is cooperative; reduce to 1 if you see blocks.
What are LWIN codes and where can I find them? LWIN (Liquid Wine Identifier Number) is the wine industry's universal identification system managed by Liv-ex. LWIN7 identifies a wine regardless of vintage; LWIN11 adds the vintage year. You can look up LWINs on Liv-ex, Wine-Searcher itself, or your wine management platform.
Is there a rate limit? No. Built-in rate limiting and retry logic handle blocking automatically, and concurrency is auto-optimised for the batch size.
Why is the cheapest price sometimes lower than what I see on Wine-Searcher?
The actor normalizes case listings to per-bottle pricing. If a merchant lists "Case of 12, €408" on Wine-Searcher, the actor returns cheapestPriceAmount: 34 (= €408 ÷ 12) and sets bottlesPerUnit: 12. Prices are always per 75cl bottle as documented. To reconstruct the case price, multiply cheapestPriceAmount × bottlesPerUnit.
Can I send LWIN codes as numbers or omit the inputType field?
Yes to both. Numbers and strings both work for LWINs. If inputType is omitted, the actor auto-detects from whichever array is populated (lwins, urls, or wineNames).
Is my data stored anywhere outside my Apify account? No. Results are stored only in your Apify dataset (default 31-day retention, fully under your control). Nothing is shared with third parties.
Can I export to Google Sheets, Excel, or my database? Yes. CSV/Excel/JSON downloads from the Dataset tab, automated push via the Google Sheets/Airtable/Zapier/Make/n8n integrations, or programmatic access via the Apify API. See the Integrate section above.
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
- Wine-Searcher Grape Scraper: browse wines by grape variety
- Vivino Wine Data Scraper: Vivino ratings, prices and taste profiles
- Millesima Wine Scraper: Millesima prices and critic ratings
Legal & compliance
What this Actor extracts. This Actor extracts only publicly available data displayed on Wine-Searcher.com, the same information any visitor sees when browsing the site. It does not bypass paywalls, log into accounts, scrape private user data or extract personal information.
Your responsibilities as a user.
- Use the extracted data in compliance with applicable laws in your jurisdiction (data protection, copyright, fair-use)
- Respect Wine-Searcher's Terms of Service
- Do not redistribute the raw scraped content as a competing price-comparison product
- Aggregated insights, internal pricing intelligence, and integration into your own catalog are typical legitimate uses
Affiliation. This tool is independent. It is not affiliated with, endorsed by, or sponsored by Wine-Searcher, Liv-ex, or any wine merchant.
Data minimization. The Actor stores results only in your own Apify dataset (default 31-day retention, fully under your control). No data is shared with third parties or transmitted outside the Apify run.
License. Provided as-is for personal and commercial use under standard Apify Store terms.
Feedback
This Actor is actively maintained, and every reported issue is tracked and addressed. If you spot a bug, a wine that returns the wrong popularity, or a feature you'd like to see, open a thread on the Actor's Issues tab in the Apify Console. Reviews on the Apify Store help us prioritise the roadmap, so if the Actor saved you time, please consider leaving one.
Built with Apify.