Wine-Searcher Scraper - Wine Prices, Scores, Offers & LWIN avatar

Wine-Searcher Scraper - Wine Prices, Scores, Offers & LWIN

Pricing

from $1.70 / 1,000 wine results

Go to Apify Store
Wine-Searcher Scraper - Wine Prices, Scores, Offers & LWIN

Wine-Searcher Scraper - Wine Prices, Scores, Offers & LWIN

Look up wines on wine-searcher.com by name, URL, or LWIN code. Returns 30+ fields, including critic scores, prices, grape, region, appellation, producer, label image, user ratings, food pairing, live offer counts, cheapest merchant offer, and optional critic review breakdown.

Pricing

from $1.70 / 1,000 wine results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

2

Bookmarked

38

Total users

7

Monthly active users

4.4 hours

Issues response

2 days ago

Last modified

Share

Wine-Searcher Scraper: Scores, Prices & Popularity

Wine-Searcher Scraper turns Wine-Searcher into a clean data feed. Give it a list of wine names, Wine-Searcher links, or LWIN codes (or mix all three with auto-detect) and it returns critic scores, average and market prices, grape, region, appellation, producer, label image, and merchant offer counts as structured JSON, CSV, or Excel, or straight into your app through the API.

Why This Scraper?

  • Three input styles, one list. Wine names, Wine-Searcher URLs, or LWIN codes (LWIN7 / 11 / 16 / 18). Auto-detect routes each item automatically, so a mixed list just works.
  • A rich per-wine record. 30+ fields, including critic score, average price, grape, region, appellation, producer, description, and label image.
  • Optional merchant offers. Turn on offer extraction for the cheapest live offer, merchant name and link, the full worldwide offers list, and the number of offers and merchants.
  • Optional critic review breakdown. Turn on review collection for a per-critic reviewer name, score, and tasting note for each wine.
  • Price-spread stats already computed. With merchant offers turned on, highest and median price are normalised to one standard 750ml bottle, so a case offer or a magnum never skews the comparison for you.
  • Currency follows your market. The proxy country you choose sets the price-currency context, so results match the market you care about.
  • Fails loudly, not silently. When Wine-Searcher cannot be reached at all, the run stops with a clear message instead of quietly returning an empty dataset.

Use Cases

  • Wine merchants and retailers: benchmark your prices against average and cheapest market prices for the same vintage.
  • Sommeliers and collectors: look up critic scores, tasting notes, and provenance details before buying or listing a bottle.
  • Cellar and portfolio valuation: resolve a list of LWIN codes to current average and market prices for a valuation report.
  • Market analysts: track price spread across regions and currencies for a set of wines over time.
  • Auction houses and wine funds: verify critic scores and merchant offer counts before quoting a lot.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
wineName"2015 Sample Wine, Pomerol, France"
vintage2015
appellation"Pomerol, France"
region"Pomerol"
grapeVariety"Merlot"
style"Red - Savoury and Classic"
beverageType"Wine"
producer"Sample Producer"
description"Short producer or wine description text."
score97
scoreBestRating100
criticReviewsCount20
criticReviewsper-critic name, score, and tasting note (when review collection is on)
avgPrice / avgPriceCurrency5076 / "EUR"
cheapestPriceAmount / cheapestPriceCurrency3400.00 / "EUR"
cheapestPriceMerchant"Sample Merchant"
bottlesPerUnit1
offersfull merchant offers list (when offer extraction is on)
offersCount13
highestPriceAmount / medianPriceAmount4500.00 / 3800.00, per standard 750ml bottle
merchantCount11
labelImageUrlWine-Searcher label image link
wineSearcherUrlWine-Searcher link for the wine
searchLocation"France"

producer and wineryName carry the same value; appellation and origin carry the same value. Both pairs are kept for compatibility with either field name. The full offers array (every merchant, price, and link) and the complete criticReviews breakdown are always kept in the Apify dataset.

How to Use

  1. Pick an input type: auto-detect (recommended for mixed lists), wine names, Wine-Searcher URLs, or LWIN codes.
  2. Paste your list into the matching field.
  3. Turn on Fetch merchant offers and/or Fetch critic reviews if you want that extra depth, and set Max wines to control run size and cost.
  4. Click Start, then download the dataset as JSON, CSV, or Excel, or read it through the API.

Look up by wine name (auto-detected):

{
"inputType": "auto",
"wineNames": ["Petrus 2015", "Dom Perignon 2013"],
"maxItems": 20
}

Look up by LWIN code:

{
"inputType": "lwins",
"lwins": ["11316442021", "11084042019"]
}

Look up by Wine-Searcher URL, with offers and reviews:

{
"inputType": "urls",
"urls": ["https://www.wine-searcher.com/find/sassicaia/2019"],
"fetchOffers": true,
"fetchReviews": true
}

Pin a different currency market (United Kingdom / GBP):

{
"inputType": "auto",
"wineNames": ["Sassicaia 2019"],
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "GB" }
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/wine-searcher-scraper").call(run_input={"inputType": "wineNames", "wineNames": ["Petrus 2015"]})
for wine in client.dataset(run["defaultDatasetId"]).iterate_items():
print(wine["wineName"], wine["score"], wine["avgPrice"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/wine-searcher-scraper').call({ inputType: 'wineNames', wineNames: ['Petrus 2015'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets, or webhooks from the Integrations tab.

Send results into your apps (MCP connectors)

Optionally pipe every result into the tools you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape; the Apify dataset is never changed.

  1. Authorize a connector once under Apify, Settings, API & Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. For Notion, also set notionParentPageUrl to the page under which item pages should be created.
  3. Run the actor. Results are written to the connector after the dataset is saved.

Each wine becomes one entry with a title and its key fields flattened to plain text; Notion gets one page per wine, other connectors get a best-effort write or digest depending on what that connector supports. The complete record always stays in the Apify dataset. Leaving the field empty skips this entirely.

Input Parameters

ParameterTypeDefaultDescription
inputTypestringautoauto, wineNames, urls, or lwins. Auto-detect routes each item by its shape.
wineNamesarray(none)Full wine names, ideally with vintage year. Up to 1000 items.
urlsarray(none)Direct Wine-Searcher find links. Up to 1000 items.
lwinsarray(none)LWIN codes (LWIN7 / 11 / 16 / 18), numeric or string. Up to 1000 items.
fetchOffersbooleanfalseAlso extract the cheapest merchant offer, the full offers list, merchant count, and the per-bottle highest and median prices.
fetchReviewsbooleanfalseAlso collect the per-critic review breakdown (reviewer name and score) for each wine.
concurrencyinteger3Deprecated and ignored. Lookup parallelism is managed automatically.
maxItemsinteger20Process at most this many wines from your list. 0 means no limit.
proxyobjectResidential, FranceResidential proxy is required. The country also sets the price-currency context.
mcpConnectorsarray(none)Optional connectors to send a summary of each result to, once authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"inputValue": "Petrus 2015",
"inputType": "wineNames",
"wineSearcherUrl": "https://www.wine-searcher.com/find/sample/2015",
"wineName": "2015 Sample Wine, Pomerol, France",
"vintage": 2015,
"appellation": "Pomerol, France",
"region": "Pomerol",
"origin": "Pomerol, France",
"grapeVariety": "Merlot",
"producer": "Sample Producer",
"beverageType": "Wine",
"style": "Red - Savoury and Classic",
"description": "Short producer or wine description text.",
"labelImageUrl": "https://www.wine-searcher.com/images/labels/00/00/000000000.jpg",
"score": 97,
"scoreBestRating": 100,
"criticReviewsCount": 20,
"criticReviews": [
{ "author": "Sample Critic", "score": 95, "bestRating": 100, "tastingNote": "Tasted January 2018." }
],
"avgPrice": 5076,
"avgPriceCurrency": "EUR",
"cheapestPriceAmount": 3400.0,
"cheapestPriceCurrency": "EUR",
"cheapestPriceMerchant": "Sample Merchant",
"cheapestPriceMerchantUrl": "https://www.wine-searcher.com/out/0000",
"bottlesPerUnit": 1,
"offers": [
{ "price": 3400.0, "priceCurrency": "EUR", "merchant": "Sample Merchant", "merchantUrl": "https://www.wine-searcher.com/out/0000", "unitDescription": "Bottle (750ml)", "bottlesPerUnit": 1, "availability": "InStock", "itemCondition": "NewCondition", "priceValidUntil": "2026-12-31" }
],
"offersCount": 13,
"highestPriceAmount": 4500.0,
"highestPriceCurrency": "EUR",
"medianPriceAmount": 3800.0,
"merchantCount": 11,
"wineryName": "Sample Producer",
"searchLocation": "France",
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Plan Requirement

Wine-Searcher only accepts residential connections, so this actor needs the Apify Residential proxy group enabled under Connection. Without it, a run will most likely return no data. The default proxy pins France for EUR pricing; change the proxy country to price a different regional currency.

FAQ

How much does it cost?

You pay per wine returned. Turning on Fetch merchant offers or Fetch critic reviews adds a small extra charge for the additional data pulled per wine, billed per enriched wine and per review captured; leaving both off keeps a run to the base per-record price. The Pricing tab shows the current rates. Use Max wines to cap the cost of any run.

This actor collects only publicly available price and rating data. You are responsible for how you use it: follow Wine-Searcher's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Prices and offer counts change constantly and reflect a live snapshot at the time of the run.

Can I run this on a schedule to track price changes?

Yes. Add the actor to a Schedule from the Schedules tab to run it automatically, for example daily. Each scheduled run reprocesses your full input list; there is no built-in deduplication or new-versus-changed detection between runs, so compare successive datasets yourself (for example by wineSearcherUrl) if you need to know what moved.

Why don't the highest and median prices match what I see in the offers list?

highestPriceAmount and medianPriceAmount are normalised to one standard 750ml bottle for a fair comparison across merchants: a case offer is divided by its bottle count, and non-750ml formats such as magnums or half bottles are left out of the comparison. cheapestPriceAmount is untouched and always shows the lowest listed offer exactly as a merchant lists it. Wine-Searcher does not publish a specials, was-price, or discount field, so the spread between merchants reflects different merchants, formats, and stock, not a markdown.

Why did my run fail instead of returning an empty dataset?

A run fails when it returns no wines at all and at least one lookup could not be reached, for example because every connection attempt was refused. That is a connection problem, not a real answer, so it is reported as a failure rather than a silent empty dataset. If at least one wine is returned, or every lookup was read but simply had no matching page on Wine-Searcher (a misspelled name, a bad URL, or an unknown LWIN code), the run succeeds; unmatched items are logged as not found and are not written to the dataset.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear, or Airtable.

πŸ”— Want more wine and drinks data?

Pair this actor with these related scrapers from the same team:

🍷 Vivino Wine Scraper
From $1.2/1K. Scrape Vivino.com for wine ratings, prices, taste profiles, food pairings...
🍷 Wolt.com
From $0.8/1K. Scrape Wolt restaurants and full menus at the city scale. Extract 60+...
🍷 Carrefour Spain Scraper
Scrape Carrefour Spain (carrefour.es) products. Search by keyword, browse a category, or...
🍷 Dan Murphy’s Scraper
Scrape Dan Murphy’s products by category, keyword, or specials. Extract 45+ fields...
🍷 Untappd Beer, Brewery and Check-in Scraper
Scrape Untappd beers, breweries, venues and check-ins by keyword, brewery, Top Rated...
πŸ₯¦ ResQ Club Scraper
Scrape ResQ Club surplus food offers in Finland, Sweden and Estonia: name, price, current...

πŸ‘‰ Browse all abotapi scrapers

πŸ’¬ Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • πŸ› οΈ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.