Idealo Product & Offer Scraper
Pricing
from $5.00 / 1,000 dataset items
Idealo Product & Offer Scraper
Scrape idealo price comparison in 6 markets (DE, AT, UK, FR, IT, ES). Get every merchant offer, not just the first 20 — plus lowest/highest price, shop names, delivery, ratings and full spec sheets as clean JSON. Search by keyword, category or URL. Pay only for the results you get.
Pricing
from $5.00 / 1,000 dataset items
Rating
0.0
(0)
Developer
axly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Turn idealo — Europe's largest price-comparison network — into a structured product and price feed. Search by keyword, list a whole category, or hand it product URLs, and get back clean JSON with every merchant offer, the full price range, shop names, delivery estimates, ratings and the complete technical datasheet.
Works across six markets: Germany (idealo.de), Austria, the United Kingdom, France, Italy and Spain.
Who uses this
| You are… | You get |
|---|---|
| E-commerce / pricing team | Every competitor's price for your SKUs, per market — the input for repricing and MAP checks |
| Brand / distribution manager | Which shops actually sell your product, at what price, in which country |
| Marketplace seller | Where you rank against 50+ merchants on the same product, including delivery-inclusive cost |
| Market researcher / analyst | Category-wide price distributions, ratings and spec attributes at scale |
| Affiliate / deal publisher | Lowest price, click-out links and price spread for deal pages |
Why the complete offer list matters
Idealo renders about 20 offers on a product page. Popular products carry far more — an iPhone 15 on idealo.de has 147 offers across 48 shops. Most scrapers stop at what the page renders. Turn on Include every merchant offer and this Actor follows the offer-list pagination to collect all of them, so your "lowest price" is the real one and your competitor coverage is complete.
Output fields
| Field | Type | Description |
|---|---|---|
product_id | string | Idealo product ID — stable across all six country sites |
title, url, image | string | Product name, canonical page URL, main image |
market, country, currency | string | Which site the row came from and its currency |
price_min, price_max, price_avg | number | Lowest, highest and mean merchant price |
total_price_min | number | Lowest price including delivery |
price_spread | number | Highest − lowest — the saving from comparing |
offer_count, offers_scraped, shop_count | integer | Offers idealo reports, offers in this row, distinct merchants |
rating, rating_scale, review_count | number | Product rating (scale varies per market) and review count |
best_shop_name, best_price, best_total_price, best_delivery, best_offer_url | mixed | The cheapest offer, broken out for easy filtering |
offers[] | array | Every offer: shop, price, total price, delivery, click-out URL |
specs | object | Technical datasheet as key/value pairs (often 70–90 attributes) |
international_prices[] | array | Same product's cheapest price on idealo's other country sites |
cheapest_foreign_site, cheapest_foreign_price | mixed | Best cross-border price, pre-extracted |
source, scraped_at | string | How the product entered the run; UTC timestamp |
High-value use cases
- Competitive repricing — feed your SKU list in as product URLs, run it
hourly, and drive your price rules off
price_min,shop_countand the fulloffers[]array. - MAP / price-floor monitoring — spot any merchant selling below your minimum advertised price, with the shop name and click-out link as evidence.
- Cross-border arbitrage — enable cross-border prices and compare
price_minagainstcheapest_foreign_priceto find products that are materially cheaper in another idealo market. - Category intelligence — list an entire category (e.g.
19116, mobile phones) to build a price and specification map of the market. - Catalog enrichment — pull the
specsobject to fill product attributes in your PIM without manual data entry.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
market | select | de | de, at, uk, fr, it, es |
searchTerms | array | — | Keywords to search and paginate |
categoryIds | array | — | Numeric category IDs to list in full |
productUrls | array | — | Direct product page URLs (any market's format) |
maxItems | integer | 100 | Stop after this many products (0 = unlimited) |
maxPagesPerTerm | integer | 5 | Result pages per term/category (36 products per page) |
includeDetails | boolean | true | Open each product page for offers, ratings and price range |
includeAllOffers | boolean | false | Collect all offers, not just the ~20 rendered |
maxOffersPerProduct | integer | 0 | Cap offers per product (0 = no cap) |
includeSpecs | boolean | true | Extract the technical datasheet |
includeInternationalPrices | boolean | false | Add cheapest prices from idealo's other country sites |
proxyConfiguration | object | disabled | Optional — runs fine without a proxy |
At least one of searchTerms, categoryIds or productUrls is required.
Example input
{"market": "de","searchTerms": ["iphone 15"],"maxItems": 50,"maxPagesPerTerm": 2,"includeDetails": true,"includeAllOffers": true,"includeSpecs": true,"includeInternationalPrices": true}
Example output
{"product_id": "203235721","title": "Apple iPhone 15","url": "https://www.idealo.de/preisvergleich/OffersOfProduct/203235721_-iphone-15-apple.html","image": "https://cdn.idealo.com/folder/Product/203235/7/203235721/s10_produktbild_gross/apple-iphone-15.jpg","market": "de","country": "Germany","currency": "EUR","price_min": 559.9,"price_max": 1049.0,"price_avg": 704.32,"total_price_min": 559.9,"price_spread": 489.1,"offer_count": 147,"offers_scraped": 146,"shop_count": 48,"rating": 1.7,"rating_scale": "0-6","review_count": 46,"best_shop_name": "Cyberport","best_price": 559.9,"best_total_price": 559.9,"best_delivery": "bis Do 04.09.","best_offer_url": "https://www.idealo.de/relocator/relocate?...","offers": [{"shop_name": "Cyberport","shop_id": "104172","price": 559.9,"total_price": 559.9,"currency": "EUR","delivery": "bis Do 04.09.","variant_name": "Apple iPhone 15 128GB Schwarz","position": 1,"offer_key": "…","clickout_url": "https://www.idealo.de/relocator/relocate?…"}],"specs": {"Displaygröße": "6.1 Zoll","Arbeitsspeicher": "6 GB","Akkukapazität": "3349 mAh"},"international_prices": [{"site": "idealo.it","price": 484.0,"url": "https://www.idealo.it/confronta-prezzi/203235721/apple-iphone-15.html"}],"cheapest_foreign_site": "idealo.it","cheapest_foreign_price": 484.0,"source": "search","scraped_at": "2026-09-01T10:22:41Z"}
Scheduling & integrations
Schedule the Actor (hourly, daily, weekly) from the Apify Console to build a price time series. Results are available as JSON, CSV, Excel and XML, and can be pushed automatically via webhooks into Google Sheets, Make, Zapier, Amazon S3 or your own API. Long runs checkpoint themselves, so a restarted run resumes where it stopped instead of re-emitting rows you already paid for.
Use it from an AI assistant (MCP)
The Actor is callable through Apify's MCP server, so Claude, ChatGPT or any MCP-capable agent can run it directly:
https://mcp.apify.com/?actors=axlymxp/idealo-product-offer-scraper
Ask your assistant things like "what is the cheapest shop for an iPhone 15 on idealo.de right now?" and it will call the Actor and read the dataset.
FAQ
Do I need a proxy? No. The Actor talks to idealo's public pages with a browser-grade TLS fingerprint and works without a proxy. A proxy is supported for very large runs or rate-limited regions.
How many results can I get?
There is no hard cap. A category walk on idealo.de returns thousands of unique
products; set maxItems to control the volume.
How fresh is the data?
Every row is scraped live at run time and stamped with scraped_at. Nothing is
served from a cache.
Why is offers_scraped smaller than offer_count?
offer_count is the total idealo advertises, including variants it does not
list individually. offers_scraped is what was actually collected. Turn on
Include every merchant offer to maximise coverage.
Does pagination ever loop or duplicate rows? No. Idealo silently re-serves page 1 when you request a page past the last one — a trap that makes naive scrapers loop forever. This Actor de-duplicates by product ID and offer key and stops as soon as a page yields nothing new.
What happens if a product was removed? Idealo answers with HTTP 410 and a full-looking HTML page. The Actor detects this, logs it, skips the item and keeps going rather than emitting garbage.
Is this legal? The Actor collects publicly available product and price information. You are responsible for using the data in line with idealo's terms and applicable law.
Something broke — how fast do you respond? Open an issue on the Actor page. Fatal errors are reported automatically to the maintainer, so breakages are usually noticed before they are reported.