Lidl.es Products, Weekly Offers, Prices & Reviews Scraper
Pricing
from $1.00 / 1,000 product results
Lidl.es Products, Weekly Offers, Prices & Reviews Scraper
Scrape Lidl.es grocery and non-food products across weekly offers, tools, home, garden, kitchen, fashion, kids, sport and more. Search by keyword, department or URL. Extract prices, was-prices, discounts, package formats, images, ratings and full shopper reviews.
Pricing
from $1.00 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Lidl Spain Scraper
Pull product data from Lidl.es, spanning both the grocery/supermarket weekly-offer range and Lidl's "bazaar" (non-food) catalogue -- tools, home & garden, kitchen, fashion, baby & kids, sport & leisure. Search by keyword and/or department with brand, price, rating and weekly-offer filters, or paste product/search/category links directly. Every record includes the current price, a genuine strike-through was-price and discount % whenever a product is genuinely on offer, package format, images, and the site's own shopper rating and review feed.
Why This Scraper?
- Covers both catalogues. Lidl.es sells grocery weekly offers (fresh produce, pantry, drinks) and a much larger "bazaar" non-food range (tools, home, garden, fashion, toys) through the same storefront -- this scraper reaches both.
- Was-price captured only when it's real. Lidl runs genuine rotating weekly offers with a real prior price -- this scraper reads the site's own strike-through price object per item and only ever sets a was-price/discount when it's genuinely populated and higher than the current price. Full-price items simply get
null, never a fabricated markdown. - Real shopper reviews, not a third-party vendor. Ratings and reviews come from Lidl's own on-site review feed (average, histogram, per-review text/author/votes), included on request.
- Package format + a derived unit price. The package size/format Lidl itself displays (e.g. "750g", or "A granel" for loose/bulk items) is always included; a €/kg or €/L unit price is derived only when the package is an unambiguous single weight/volume -- never guessed for a bulk or multi-pack item.
- Two ways in. Keyword + department browse with brand/price/rating/weekly-offer filters and sort, or paste any product, search, or department link.
- Optional export to your apps. Send results into Notion, Linear, Airtable, or any Apify MCP connector alongside the dataset.
A note on product detail and scope
Lidl's own product-card data (price, was-price, package format, images, description, rating summary) is already included by default. The one genuinely additive per-product fetch is the site's own full review feed (rating breakdown, star histogram, per-review text/author/votes) -- turned on with fetchDetails. Lidl.es does not expose a detailed spec table (materials/dimensions/technical data) anywhere on the site itself, so this scraper does not claim one; it surfaces the site's own short product description and structured badges instead. Lidl.es also does not key its catalogue or prices by store/postal code the way some Spanish grocers do, so there is no region selector.
Data You Get
| Field | Example value |
|---|---|
| productId / title | 123456789, Sample Cordless Drill 20V |
| brand / category / categoryPath | SAMPLEBRAND, Power tools, ["DIY & garden", "Workshop", "Power tools"] |
| productUrl / images | https://www.lidl.es/p/sample-product/p123456789, full-resolution image list |
| price / currency | 39.99, EUR |
| wasPrice / discountAmount / discountPercent | 49.99, 10.00, 20.0 (only when genuinely on offer) |
| isOnSpecial / promoLabel | true, "Megadescuento" |
| packageFormat / unitPrice / unitOfMeasure | "750g", 3.99, "€/kg" (unit price only for an unambiguous single pack) |
| onlineAvailable / inStoreOnly / stockAvailability | true, false, site's own stock label |
| averageRating / reviewCount | 4.6, 823 |
| description / badges | short product description text, ["Top rated"] |
| internalArticleNumbers | Lidl's own internal article number(s) |
| reviews | {} by default, full feed with fetchDetails: true |
Sample shape: values above are illustrative placeholders, not from a live product.
How to Use
1. Keyword + department search (default):
{"mode": "search","searchTerm": "taladro","category": "bricolaje-jardin","maxItems": 20}
2. Weekly offers only, biggest discount first:
{"mode": "search","specialsOnly": true,"sortBy": "BIGGEST_DISCOUNT","maxItems": 50}
3. One brand within a department, with full shopper reviews:
{"mode": "search","category": "bricolaje-jardin","brand": "SAMPLEBRAND","fetchDetails": true,"maxItems": 20}
4. Paste product / search / department links directly:
{"mode": "url","urls": ["https://www.lidl.es/p/sample-product/p123456789","https://www.lidl.es/h/fruta-y-verdura/h10071012"],"maxItems": 50}
Input Parameters
| Parameter | Type | Description |
|---|---|---|
mode | string | search or url. |
searchTerm | string | Keyword against Lidl's own search index (search mode only). |
category | string | One of Lidl's real top-level departments (search mode only); empty searches the whole catalogue. |
brand | string | Exact brand name to keep, e.g. as shown on the site (search mode only). |
specialsOnly | boolean | Keep only products on a genuine current weekly offer (search mode only). |
minPrice / maxPrice | number | EUR price band to keep (search mode only). |
minRating | number | Minimum shopper rating (1-5) to keep (search mode only). |
sortBy | string | RELEVANCE, PRICE_ASC, PRICE_DESC, NEWEST, TOP_RATED, BESTSELLERS, or BIGGEST_DISCOUNT (search mode only). |
urls | array | Product, search/specials, or department listing URLs to scrape (url mode only). |
fetchDetails | boolean | Fetch the site's own full review feed (rating breakdown, star histogram, per-review text). Always on for a pasted product URL. |
maxPages | integer | Cap on search result pages fetched; empty = unlimited. |
maxItems | integer | Cap on total products returned; 0 = unlimited. |
proxy | object | Apify Proxy configuration used to route requests. The default works out of the box. |
mcpConnectors | array | Optional MCP connectors to export results into (Notion, Linear, Airtable, Apify). |
notionParentPageUrl | string | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | Cap on items exported to each connector per run. Does not affect the dataset. |
Output Example
{"productId": "123456789","title": "Sample Cordless Drill 20V","brand": "SAMPLEBRAND","categoryPath": ["DIY & garden", "Workshop", "Power tools"],"category": "Power tools","productUrl": "https://www.lidl.es/p/sample-product/p123456789","price": 39.99,"currency": "EUR","wasPrice": 49.99,"discountAmount": 10.0,"discountPercent": 20.0,"isOnSpecial": true,"promoLabel": "Megadescuento","packageFormat": null,"unitPrice": null,"unitOfMeasure": null,"hasVat": true,"onlineAvailable": true,"inStoreOnly": false,"stockAvailability": "In stock","images": ["https://www.lidl.es/assets/sample.jpg"],"internalArticleNumbers": ["555123"],"description": "Sample short product description as shown on the site.","badges": ["Top rated"],"averageRating": 4.6,"reviewCount": 823,"recommendedYes": 780,"recommendedNo": 15,"reviews": {"averageRating": 4.6,"totalReviewCount": 823,"recommendedYes": 780,"recommendedNo": 15,"starHistogram": { "1": 8, "2": 10, "3": 30, "4": 150, "5": 625 },"items": [{ "stars": 5, "title": "Great value", "text": "Sample review text.", "author": "Sample Shopper", "recommended": true, "votesUp": 4, "votesDown": 0 }]}}
Sample shape: values above are illustrative placeholders, not from a live product.
A note on unit pricing and was-price
The package price (price) comes straight from Lidl's own product data. unitPrice/unitOfMeasure (€/kg or €/L) are only ever derived when the package format is an unambiguous single weight/volume (e.g. "750g") -- never for a "A granel" (loose/bulk, sold by weight at checkout) item, and never for a multi-pack, where dividing by the printed pack size would inflate or deflate the true per-unit price. wasPrice/discountAmount/discountPercent/isOnSpecial are only ever set when Lidl's own strike-through price field is genuinely populated and higher than the current price -- most full-price catalogue items simply carry no was-price, and this scraper reports that honestly rather than inventing one.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the mcpConnectors field. Each connector receives a condensed, human-readable summary per product (title plus key fields), while the complete record always stays in the Apify dataset. For Notion, set notionParentPageUrl to the page the item pages should be created under, and use maxNotifyListings to cap how many items are exported per connector per run. Supported connectors: Notion, Linear, Airtable, and Apify. Leave the field empty to skip; it never changes the dataset output.