Lidl Scraper — European Grocery Prices & Weekly Offers
Pricing
from $2.00 / 1,000 result scrapeds
Lidl Scraper — European Grocery Prices & Weekly Offers
Scrape product data from Lidl's online store. Extract grocery items, weekly offers, prices, categories, and product details from Lidl across 30+ European countries. No login or cookies required.
Pricing
from $2.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
36
Total users
3
Monthly active users
73 days
Issues response
9 hours ago
Last modified
Categories
Share
Lidl Scraper — European Grocery Products, Prices & Weekly Offers
Know current prices, stock, and weekly discounts on any product across Lidl's 30+ European country stores — without checking the site by hand. Extract product names, prices, brands, weekly offers, discounts, stock status, and category information. No login or cookies required.
What does Lidl Scraper do?
This scraper uses Lidl's internal search API to collect structured product data at scale. It supports all Lidl country stores and returns clean, structured JSON output.
Key features:
- Search products by keyword across any Lidl country store
- Extract current prices and original/strikethrough prices for discount tracking
- Get discount percentages for weekly offers and promotions
- Monitor stock availability for any product
- Support for 30+ European countries with a single actor
- Sort by relevance, price, discount, rating, or popularity
Use cases
- Price monitoring — Track grocery prices over time across Lidl stores
- Weekly offers tracking — Get notified about new Lidl deals and discounts
- Competitor analysis — Compare Lidl prices with other European grocery chains
- Market research — Analyze product assortment across different countries
- Deal hunting — Find the biggest discounts automatically with discount sorting
Supported countries
Belgium, Netherlands, Germany, France, Austria, Poland, Italy, Spain, United Kingdom, Czech Republic, Portugal, Denmark, Sweden, Finland, Hungary, Romania, Bulgaria, Greece, Croatia, Slovenia, Slovakia, Lithuania, Latvia, Estonia, Ireland, Luxembourg, Switzerland, Cyprus, Malta, Serbia.
Input parameters
| Parameter | Type | Description |
|---|---|---|
searchQuery | string | Search term (e.g. "chocolade", "laptop"). Leave empty for all products. |
country | string | Country code (BE, NL, DE, FR, etc.). Default: BE. |
categoryUrl | string | Direct URL to a Lidl category page (optional). |
sort | string | Sort order: relevance, price, discount, newest, rating, best selling. |
maxResults | number | Maximum products to scrape (default: 100, max: 10,000). |
proxyConfiguration | object | Proxy settings (datacenter proxies usually work). |
Output example
{"name": "MILBONA","brand": "MILBONA","price": 8.0,"currency": "DKK","originalPrice": null,"discountPercentage": null,"category": "Food","imageUrl": "https://www.lidl.dk/assets/gcp27d0747cb279410183ee4865de4d2d0a.png","description": null,"inStock": false,"productId": "11000287","country": "DK","url": "https://www.lidl.dk/p/milbona/p11000287","scrapedAt": "2026-09-09T14:47:24.585Z","unitPrice": "Pr. l 32,00","packaging": "250 ml","ean": "4335619016194","offerValidFrom": "2026-08-26T11:22:06.225Z","offerValidTo": "2026-09-12T21:59:59Z"}
Output fields
| Field | Type | Description |
|---|---|---|
name | string | Full product name including brand |
brand | string | Brand name (SILVERCREST, LIVARNO, PARKSIDE, etc.) |
price | number | Current selling price. Null when Lidl has not published a price for the item yet (its offer window hasn't started, or has ended) |
currency | string | Currency code (EUR, GBP, DKK, etc.) |
originalPrice | number | Price before discount (null if no discount) |
discountPercentage | number | Discount percentage (null if no discount) |
unitPrice | string | Raw unit-price text as Lidl shows it (e.g. "Pr. l 32,00" = per litre, in Denmark). In some countries this field instead holds a multipack quantity range (e.g. "2 x 180 g - 2 x 500 g") \u2014 Lidl doesn't separate the two structurally |
packaging | string | Package size/quantity (e.g. "250 ml", "45 g"), where Lidl exposes it as a separate field from the unit price |
ean | string | EAN/GTIN barcode, where Lidl exposes one. Confirmed present for Denmark, confirmed absent for Belgium \u2014 availability is country-dependent on Lidl's side, not a scraper gap |
offerValidFrom / offerValidTo | string | ISO 8601 validity window for the current price, where Lidl publishes one (typically weekly offers) |
category | string | Full category path |
imageUrl | string | Main product image URL |
description | string | Product description (HTML) |
inStock | boolean | Whether the product is purchasable through Lidl's own webshop. Most countries have no online grocery store at all, so this is false for virtually every food item regardless of real shelf stock \u2014 treat it as "buyable online," not "in stock in the store." Null only if Lidl's stock data is missing entirely |
productId | string | Lidl internal product ID |
country | string | Country code this product was scraped from |
url | string | Full URL to the product page |
scrapedAt | string | ISO 8601 timestamp |
Denmark / everyday prices
Lidl Denmark's search API is not a full everyday-shelf price list. Confirmed
by pulling the empty-query catalog: Lidl DK exposes 325 products in
total, of which 317 sit in the "Mad og drikke" (food & drink) category \u2014
almost the whole online catalog is food, but it's the current weekly
offer rotation, not the full range you'd see on a Danish Lidl shelf.
Each item carries a IN_STORE_FROM_FUTURE_DATE_RANGE /
IN_STORE_PAST_DATE_RANGE badge and an offerValidFrom/offerValidTo
window \u2014 items whose window hasn't started yet, or has ended, come back
with price: null on purpose. Searching a staple like "m\u00e6lk" (milk),
"sm\u00f8r" (butter), "rugbr\u00f8d" (rye bread) or "\u00e6g" (eggs) returns only the
handful of SKUs currently on offer (5-10 items), not every milk/butter/
bread/egg product Lidl DK stocks day to day.
What this means in practice: unitPrice (per-litre/per-kg pricing) and
ean (barcode) are both present and accurate for Denmark once an item is
in the current offer rotation \u2014 that part is a full, structured feed. What
Lidl DK does not publish anywhere on its site is a static, always-on price
list for its everyday range outside the offer rotation. No scraper can
recover data the retailer doesn't publish.
Cost estimate
This actor is billed $0.02 per run plus $0.002 per result — 1,000 results cost about $2.02. Usage cost only settles once a run reports SUCCEEDED — reading a dataset mid-run will show a cost far below the real total.
Tips
- Weekly offers: Use
sort: percentageDiscount-descto find the biggest current discounts - New arrivals: Use
sort: firstOnlineDate-descto see what's new - Price comparison: Run the same search across multiple countries to compare prices
- Large exports: Set
maxResults: 10000to export full product catalogs - Datacenter proxies are usually sufficient — Lidl's API is not heavily protected
How to scrape Lidl data
- Create an Apify account (free tier available)
- Open the Lidl Scraper actor page
- Enter a search query (e.g. "koffie") and select your target country
- Click "Start" to begin scraping
- Download results as JSON, CSV, or Excel when the run finishes
You can also call the actor via the Apify API or schedule recurring runs for automated price monitoring.
Integrations
Connect Lidl Scraper results to your existing tools and workflows:
- Google Sheets — Automatic export after every run
- Slack / Email — Get notified when new deals appear or prices drop
- Webhooks — Push data to your own API endpoint
- Zapier / Make — Connect to 5,000+ apps without code
Changelog
- v0.2 (2026-09-09) — Added
unitPrice,packaging,ean,offerValidFrom/offerValidTofields (were present in Lidl's API but not parsed before).priceis nownullinstead of0when Lidl hasn't published one;inStockis now nullable instead of defaulting tofalsewhen stock data is missing. All previous fields and input shapes unchanged. - v0.1 (2026-04-07) — Initial release with search API support for 30 countries
Need this data on a schedule, or a custom version?
We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.
See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.