Scrape idealo offer tables across five countries
The full offer list for a product on idealo.de, .es, .it, .fr and .co.uk: shop, price, shipping, delivery time, availability. The heaviest recipe in the Cookbook by volume. Last tested 6 Sep 2026.
About idealo.de
idealo.de describes itself as “✓ Over 50,000 shops ✓ 350+ million offers ✓ Buying advice and expert opinions ✓ Compare prices and products on idealo.de now and save!”.
Its home page declares 6 languages: it-it, de-at, en-gb, es-es, fr-fr, de-de.
Its robots.txt disallows 12 paths.
Measured on Crawlbase
97.0% success in August 2026 on the largest long-tail site we serve. Most of that volume runs through the Smart AI Proxy; the call below is the Crawling API form of the same request. 20.5% of successful calls used the JavaScript token; the offer table is in the HTML, so the rest got the same data at half the cost.
The call
# Offer table for one product on idealo.de curl "https://api.crawlbase.com/?token=YOUR_TOKEN&country=DE&url=https%3A%2F%2Fwww.idealo.de%2Fpreisvergleich%2FOffersOfProduct%2F203251234.html" # Same product on idealo.es: switch the domain and the exit country together curl "https://api.crawlbase.com/?token=YOUR_TOKEN&country=ES&url=https%3A%2F%2Fwww.idealo.es%2Fprecios%2F203251234.html"
from crawlbase import CrawlingAPI api = CrawlingAPI({'token': 'YOUR_TOKEN'}) r = api.get('https://www.idealo.de/preisvergleich/OffersOfProduct/203251234.html', {'country': 'DE'}) # offers are rows under .productOffers-listItem; shop, price, shipping, delivery per row
const { CrawlingAPI } = require('crawlbase'); const api = new CrawlingAPI({ token: 'YOUR_TOKEN' }); const r = await api.get('https://www.idealo.de/preisvergleich/OffersOfProduct/203251234.html', { country: 'DE' });
Parameters that matter
| Parameter | Set it to | Why |
|---|---|---|
country | match the domain: DE, ES, IT, FR, GB | idealo redirects a foreign exit to its own country site and you end up with the wrong offer table under the right URL. |
javascript | leave unset | Offer rows are server-rendered. The calls that used a browser paid twice for the same table. |
format | html | No dedicated scraper yet. The selectors below are the ones the accounts on this recipe read. |
Fields you get, per offer row
.productOffers-listItemTitle.productOffers-listItemOfferPrice.productOffers-listItemOfferShippingDetails.productOffers-listItemOfferDeliveryTimedata-availabilitya[href] (redirect)What breaks, and the fix
?page=. The first page is sorted by price including shipping; later pages keep that order.Run it on a schedule
Price monitoring at this scale belongs in the Crawler: push product URLs with a callback, and let the queue pace requests.
Questions
Does idealo need JavaScript?
No. Offer tables are in the HTML. Set country to the site's country and skip the browser.
Which idealo countries work?
Germany, Spain, Italy, France and the UK are measured. Austria works with country=AT but has too little traffic to report a rate.
Other pages on idealo.de
Pages idealo.de lists in its own sitemaps, fetched by Crawlbase on 6 Sep 2026 and verified in 2 consecutive runs. Each row is the cheapest call that returned the page with its content.
| Page | Example | Token | Country | Median |
|---|---|---|---|---|
Home/Structured data: Organization, WebSite, WebPage | idealo.de/ | Plain | none | 14.0s |
Listing/{slug}/deals | none | JavaScript | none | 6.4s |
Other/{slug}/{slug}/{slug} | none | Plain | none | 13.7s |