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

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

Pricing

$25.00 / 1,000 wine data extracteds

Go to Apify Store
Wine-Searcher Scraper from List: popularity, scores & prices

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

MrBridge

Maintained by Community

Actor stats

1

Bookmarked

47

Total users

18

Monthly active users

7.9 hours

Issues response

a day ago

Last modified

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 cheapestPriceAmount is always the price for one 75cl bottle. The bottlesPerUnit field 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?

NeedBest scraperWhat it does
Look up specific wines by name, URL or LWINWine-Searcher Scraper from List (this one)Critic scores, cheapest prices, winery info & popularity for each wine
Discover all wines for a grape varietyWine-Searcher Grape ScraperBrowse and extract wines by grape variety on Wine-Searcher
Get Vivino user ratings & taste profilesVivino Wine Data ScraperVivino ratings, prices, taste profiles & reviews
Browse wines by region on VivinoVivino Wine ScraperBrowse and extract all wines from a Vivino region
Monitor Millesima prices & stockMillesima Wine ScraperPrices, 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 PointDescriptionAlways included
Wine nameFull name as listed on Wine-SearcherYes
AppellationAppellation and country of originYes
Critic scoreAggregated critic score (0–100)Yes
Critic reviews countNumber of critic reviewsYes
Wine styleStyle descriptor (e.g. "Red - Savory and Classic")Yes
Cheapest priceLowest available price worldwide, always per 75cl bottle (case listings auto-divided)Yes
CurrencyCurrency code (EUR, USD, GBP…)Yes
MerchantMerchant offering the lowest priceYes
Bottles per unit1 = single bottle, ≥2 = case (price already normalized to per-bottle)Yes
Offers countTotal number of merchant offersYes
Winery nameProducer / winery nameYes
Winery URLWinery page URL on Wine-SearcherYes
Popularity rankingWine-Searcher popularity rankingYes
Wine-Searcher URLDirect link to the wine pageYes
Scraped atISO timestamp of extractionYes

Quick start: test in 60 seconds

  1. Click "Try for free" to open this actor in Apify Console
  2. The default input includes sample wines. Leave them or paste your own.
  3. Click "Start"
  4. 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

  1. Go to the Wine-Searcher Scraper from List on Apify
  2. Select "Wine Names" from the input type dropdown
  3. Enter wine names, one per line. Include the full domaine name and the vintage year for the most accurate match.
  4. 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

  1. Select "Wine-Searcher URLs" from the input type dropdown
  2. Paste one Wine-Searcher URL per line. Any URL from wine-searcher.com/find/... works.
  3. Click Start

Example:

https://www.wine-searcher.com/find/lwin11316442021 https://www.wine-searcher.com/find/petrus/2015

Option 3: Use LWIN codes

  1. Select "LWIN Codes" from the input type dropdown
  2. 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
  3. 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?

ParameterTypeDefaultDescription
inputTypestringauto-detectedHow wines are identified: wineNames, urls or lwins. Auto-detected if omitted
wineNamesarray-Wine names to search on Wine-Searcher (max 1000)
urlsarray-Direct Wine-Searcher URLs (max 1000)
lwinsarray-LWIN codes, string or number format (max 1000)
proxyCountrystringFRProxy 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?

TierCostWhat you get
Per result$0.025/wineCharged 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

WinesCost
10$0.25
100$2.50
500$12.50
1000$25.00

What you pay for vs what you don't

ScenarioPushed 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 deadlinepartial dataset preservedonly 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 proxyCountry to 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 maxConcurrency up 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 ApifyClient
client = 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 persisting
extracted = [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:

PlatformSetup
Google SheetsAuto-export results to a sheet; map wineName, score, cheapestPriceAmount and run on a schedule
AirtableSync wine data to an Airtable base with field mapping
ZapierTrigger Zaps on Run succeeded → push to 5,000+ apps
MakeVisual workflows: scrape → transform → insert into DB
n8nSelf-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 proxyCountry setting; different countries see different merchant offers
  • Try changing proxyCountry to match the region you're interested in (e.g., US for United States, GB for United Kingdom)
  • Auctions, pre-arrival and "by request" offers are always excluded
  • 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 (wineNames mode) 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 proxyCountry to a different country (e.g., FR, DE, UK) to route through a different proxy
  • The default maxConcurrency is already 3 (conservative). If you've raised it and see blocks, drop it back to 3 or 1

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

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.