Millesima Wine & Spirits Scraper - Prices & Critic Scores avatar

Millesima Wine & Spirits Scraper - Prices & Critic Scores

Pricing

from $16.67 / 1,000 wine records

Go to Apify Store
Millesima Wine & Spirits Scraper - Prices & Critic Scores

Millesima Wine & Spirits Scraper - Prices & Critic Scores

Scrape Millesima.fr wines and spirits: per-format bottle prices, stock status and every critic score (Wine Spectator, Decanter, James Suckling, Jancis Robinson, Vinous) with tasting notes. Export CSV, Excel, JSON. No login or API key. Tested: 197 scores on 10 wines.

Pricing

from $16.67 / 1,000 wine records

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

RecordsData

Millesima Wine & Spirits Scraper: Prices & Critic Scores

Millesima Scraper extracts wine and spirit data from Millesima.fr without a login or API key: producer, colour, classification and farming, the price, stock quantity and delivery date of every bottle format (single bottle, case, magnum, en primeur), and every independent critic score Millesima republishes (Wine Spectator, Decanter, James Suckling, Jancis Robinson, Vinous and more) with the full tasting note. Pass wine URLs or a region page, export JSON, CSV or Excel. Pay per record, nothing charged for errors or empty runs.

In a tested run on the Pauillac region page, 5 wines returned 16 bottle-format rows and 100 critic score rows. In a 39-wine sample, 21 wines carried critic scores (4 to 25 each, median 19) from 27 publications. Millesima is a French fine wine merchant specialised in Bordeaux and Burgundy.

🍷 Millesima scraper: what does it do?

You give the actor Millesima wine page URLs, or a region or appellation page (for example https://www.millesima.fr/pauillac.html, which lists 312 wines). It writes up to three flat record types to the dataset, each tagged with recordType: a wine record (wine-record) with producer, colour, classification, price range, stock and earliest delivery date; a variant price record (variant-price-record) per bottle format with SKU, list and offer price, price per 75 cl, stock quantity and en primeur flag; and a critic score record (critic-score-record) per critic with score, scale and full tasting note.

Failures come back as free error rows (errorType not-found or fetch-failed). Runs on the Apify platform, so you also get the API, scheduling, monitoring and webhooks.

📊 Millesima wine data: which fields do you get?

The dataset has 70 columns. Fields Millesima does not publish are left out of the row, never filled with null.

Row typeMain fields
WineproductName, productId, url, image, description, isSpirit, productType
Wine: origin and styleproducer, color, vintage (integer, left out for non-vintage), country, region, vineyard, appellation, classification, farming, quality
Wine: composition and spiritsgrapeFamily, grapeVariety, sweetness, alcohol, alcoholPercent, servingTemperatureC, ageStatement, spiritOrigin, spiritSubtype
Wine: price and stockminPrice, maxPrice, currency, variantCount, inStock, availability, onPromotion, exclusiveCellar, otherVintages
Wine: criticscriticsCount, topCriticScore, topCriticName
Bottle formatsku, format, formatUrl, bottleSizeCl, unitCount, equivalentBottles75cl
Bottle format: price, stock, promotionlistPrice, offerPrice, pricePer75cl, priceExclVat (en primeur only), inStock, stockStatus, stockQuantity, availability, isEnPrimeur, maxOrderQuantity, merchantNote, onPromotion, promotionLabel, promotionDetails
Critic scorecritic, criticAuthor, score, scoreValue, scoreScale, tastingNote
Every rowrecordType, scrapedAt; error rows add error, errorType, hint

Notes: farming appears only for organic or biodynamic wines (49 of 99 wines in the verification runs). topCriticScore and topCriticName show the first listed rating, not the highest, so use the critic rows to rank scores. Notes are in French.

🧾 Millesima scraper sample output

Rows from a cloud run (wine record shortened).

{
"recordType": "wine-record",
"url": "https://www.millesima.fr/chateau-lynch-bages-2010.html",
"productName": "Château Lynch-Bages 2010",
"appellation": "Pauillac",
"minPrice": 285,
"maxPrice": 1698,
"currency": "EUR",
"variantCount": 3,
"topCriticScore": "96/100",
"topCriticName": "Wine Spectator"
}
{
"recordType": "critic-score-record",
"productName": "Château Lynch-Bages 2010",
"critic": "Jancis Robinson",
"score": "16.5+/20",
"tastingNote": "Pourpre sombre. Nez mentholé et épicé. Finale sèche. Les tanins sont pour l’instant dominants. Attendre ? (JR)"
}

💶 Millesima scraper pricing: how much does it cost?

Pay per event: only records saved to the dataset are billed, each record type as a separate event. Prices below are the FREE-plan prices; paid Apify plans get lower per-event prices on wine and critic rows (Gold: $16.67 and $10.67 per 1,000).

EventWhat it isPrice per 1,000
wine-recordOne wine or spirit$20.00
variant-price-recordOne bottle format$10.00
critic-score-recordOne critic score with tasting note$13.33

Critic rows are the main cost. In the 5-wine Pauillac run, 100 of the 121 rows were critic rows: 5 wine rows ($0.10) + 16 format rows ($0.16) + 100 critic rows ($1.33) = $1.593 on FREE, or $1.31 on Gold. Switch Critic scores off (includeCriticScores: false) and the same 5 wines cost $0.26; switch Bottle formats off too (includeVariants: false) and they cost $0.10.

Worked examples on the FREE plan: one region page (43 wines), wine rows only: 43 x $0.02 = $0.86. 1,000 wines, wine rows only: $20.00; with formats at about 3.2 per wine: about $52.00; with formats and critics at the ratios of the 5-wine run (about 20 critic scores per wine): about $20 + $32 + $267 = $319.

No charge for failures. Error rows, missing pages, empty region pages and failed runs are not billed. The actor stops cleanly at your maximum charge per run. Free plan runs are limited to 10 wines.

🛠️ Millesima scraper: how to use it in 3 steps

  1. Open the Input tab and paste one or more Millesima wine page URLs, or a region or appellation page to scan every wine in it (pagination is followed automatically).
  2. Choose whether you want bottle formats and critic scores; each is a separate billable event.
  3. Set Max Items and click Run. Download the dataset as JSON, CSV or Excel.

⚙️ Millesima scraper input

FieldTypeDescription
startUrlsarrayMillesima.fr wine or spirit page URLs. Default: Château Lynch-Bages 2010.
categoryUrlsarrayRegion or appellation pages. Every wine listed is processed.
maxPagesPerCategoryintegerListing pages read per region URL. Default 0 = no limit, range 0 to 1000. 43 wines per page.
maxItemsintegerMaximum wines to process. Default 10, maximum 1,000,000. Free plan: 10.
includeVariantsbooleanAdd one row per bottle format. Default true.
includeCriticScoresbooleanAdd one row per critic score. Default true.

Example 1, the first page of a region with everything on:

{
"categoryUrls": [{ "url": "https://www.millesima.fr/pauillac.html" }],
"maxPagesPerCategory": 1,
"maxItems": 43
}

URLs that are not on millesima.fr are skipped. If no valid URL is left, the run ends as SUCCEEDED with one free error row (errorType: invalid-input) and costs nothing. For the cheapest catalogue, set includeVariants and includeCriticScores to false.

🔌 Millesima scraper API and integrations

Call the actor from code with apify-client (JavaScript or Python), for example client.actor('RecordsData/millesima-wine-scraper').call({ startUrls: [{ url: 'https://www.millesima.fr/chateau-lynch-bages-2010.html' }], maxItems: 1 }), then read the dataset items. It also works with Zapier, Make, n8n, Google Sheets, webhooks, schedules and MCP (next section). Network errors, 429 and 5xx responses are retried up to 3 times.

🤖 Millesima scraper MCP server for AI agents (Claude, Cursor, VS Code)

Connect this actor to any MCP client through the Apify MCP server. This URL exposes only this actor as a tool (add it as an apify server with that url in a JSON MCP config):

https://mcp.apify.com?tools=RecordsData/millesima-wine-scraper

Example agent prompt: "Use the Millesima wine scraper on https://www.millesima.fr/pauillac.html with maxPagesPerCategory 1 and 10 wines, include critic scores, and tell me which wine has the highest Robert Parker score and what its cheapest bottle format costs."

Choose this tool when an agent needs Millesima.fr prices, stock, delivery dates and critic scores as structured rows. It takes the same input as the actor; set maxItems and switch off unneeded extras to keep agent runs cheap, since critic rows drive most of the cost.

⚖️ Millesima scraper vs other Apify Millesima actors

Read on 2026-10-10 from the public Apify Store pages:

This actormrbridge/millesima-wine-scrapermrdoe/millesima-wine-data
Price$20 per 1,000 wines, plus $10 per 1,000 formats and $13.33 per 1,000 critic scoresFrom $3 per 1,000 results (FREE tier $5), all includedFrom $1 per 1,000 results
Output shapeFlat rows: wine, format, criticOne item per wine with nested formatsOne item per wine with nested formats
Critic scoresOne row each, score, scale, full noteratings object, 18 publicationsratings object, up to 18 publications
Per-format stock quantity, en primeur flag, price per 75 clYesNot stated in their listingNot stated in their listing

We are the most expensive option for Millesima. The comparison is not like for like: the other two return one item per wine with formats and ratings nested, while we bill each wine, format and critic score as its own row. The 5-wine example costs $1.59 here against about $0.025 at mrbridge. If you only need wine-level data with nested ratings, the cheaper actors fit. Pay here when you need flat rows, stock quantities, numeric scores and full tasting notes per critic.

❓ Millesima scraper FAQ

The actor reads public Millesima.fr product pages without logging in, and collects wine data, not personal data. Public data is generally lawful to collect, but check Millesima's terms of service and the rules that apply to you, especially if you republish critic scores or tasting notes. This is an independent tool, not affiliated with Millesima.

Why did I get 0 results from the Millesima scraper?

Most often the URL is wrong or the page does not exist: the actor then succeeds with a free error row (errorType not-found). If Millesima blocks the request or changes its page structure, the run reports a clear message or a fetch-failed row instead of finishing silently empty. Nothing is charged in either case.

Why are some Millesima wines missing critic scores?

Not every wine is rated by every critic, and the actor returns exactly what Millesima publishes. In a 39-wine sample, 18 wines had no critic rows at all: en primeur wines, young wines and spirits. About 9 percent of critic rows have an empty tastingNote because Millesima shows none.

How many critic scores does a Millesima wine have?

Up to 25 critics per wine. On the 21 wines of a 39-wine sample that had scores, the count ran from 4 to 25 with a median of 19, across 27 publications. The most frequent were Robert Parker Wine Advocate, James Suckling, Vinous and Wine Spectator. Each score is one billable row, so famous Bordeaux wines cost more.

What language is the Millesima data in?

Millesima.fr is a French site, so tasting notes, stock labels such as Livrable and bottle format names are in French. Prices are in EUR. Output field names, such as productName, offerPrice and topCriticScore, are in English, so the dataset is easy to query.

What happens if I send an empty or invalid input to the Millesima scraper?

An empty input {} runs the default wine, Château Lynch-Bages 2010, with 10 items max. The platform rejects values outside the schema, for example maxItems below 1, with a 400 error and no run is created. If no valid millesima.fr URL is left, the run ends as SUCCEEDED with one free error row.

Does the Millesima scraper need a login, API key or proxy?

No. The actor reads public Millesima.fr pages directly, so you need no Millesima account, no API key and no proxy configuration. You only need an Apify account, and the free plan covers a 10-wine preview per run to test the output.

How do I scrape a whole Millesima region or appellation?

Put a region or appellation page, for example https://www.millesima.fr/pauillac.html, in categoryUrls and raise maxItems. Pagination is followed automatically. The Pauillac page alone listed 312 wines on the test date, at 43 wines per listing page, so large regions simply span many pages.

How do I limit the number of listing pages?

Set maxPagesPerCategory to the number of pages you want per region URL. One page returns the first 43 wines and two pages return exactly 86 wines, as seen in a cloud run. The default 0 means no limit, and maxItems still caps the total. A negative or non-integer value ends the run with a free input error row.

What happens when the Millesima scraper hits my maximum charge per run?

The actor stops cleanly once your limit is reached and keeps everything already delivered in the dataset. You never pay for more records than your limit allows. Error rows, missing pages, empty region pages and failed runs are not billed at all.

Can I get spirits as well as wine from Millesima?

Yes. Spirit pages are handled like wine pages, and spirit records carry isSpirit: true plus ageStatement, spiritOrigin and spiritSubtype where Millesima states them. Spirits have no color and usually no critic rows, and you can mix wine and spirit URLs in a single run.

How many wines does Millesima have?

Our research counted about 11,500 products on Millesima.fr, of which 10,897 were wines and 613 were spirits. The actor can process any of them by URL or by region page, so start with a small maxItems, check cost on the free plan, and scale up from there.

Does it cover en primeur wines, stock and delivery dates?

Yes. Each bottle format row has isEnPrimeur, stockQuantity, stockStatus, availability (earliest delivery date, present on 33 of 35 format rows in the verification runs) and maxOrderQuantity. priceExclVat is filled only for en primeur items, the only ones where Millesima states it.

What does inStock mean?

inStock is true only when the stock number reported by Millesima is above 0, on both wine rows and format rows. Use stockStatus for the raw label and stockQuantity for the number. Older builds matched the status text and misflagged en primeur items.

Which producer, colour and classification fields are included?

Every wine row carries producer and color (99 of 99 wines had a producer and 98 a colour in the verification runs; spirits have no colour), plus classification (88 of 99, for example Grand Cru Classé) and farming (only for organic or biodynamic wines). vintage is an integer and otherVintages links to other years.

Why is the CSV column order different from before?

Rows now follow one fixed key order across all record types, and the dataset schema checks it. Wine rows have variantCount before currency, and the new columns sit in set positions. JSON consumers are not affected, but a CSV export differs from earlier builds, so check any spreadsheet formulas that point to column numbers.

🍾 Want more data actors?

Try Epic Games Store Scraper and PriceCharting Scraper for collectible price history.

💬 Support

Found a bug or need an extra field? Open an issue in the Issues tab or write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-11