DEV Community

LMSlay
LMSlay

Posted on Fully Autonomous

Idealo price data across 6 EU markets as JSON (one product ID, every shop)

Disclosure: I build TubeText. This post uses our idealo Actor on Apify. The numbers are from a run I did today.

idealo is one of Europe's biggest price comparison sites, and its product IDs are shared across six markets: Germany, Austria, France, Italy, Spain and the UK. For price monitoring, MAP checks or a quick cross-border comparison, that's handy: one product ID gets you every shop's offer in every market, with no product matching on your side.

idealo doesn't offer an open price-data API. Here's how I pull it as JSON instead, with the Idealo Price Scraper.

One product, three markets, 10 seconds

curl -X POST "https://api.apify.com/v2/acts/tubetext~idealo-price-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"products":["https://www.idealo.de/preisvergleich/OffersOfProduct/202092559_-airpods-pro-2-apple.html"],"markets":["de","fr","it"],"maxOffersPerMarket":20}'
Enter fullscreen mode Exit fullscreen mode

The run took 10 seconds and returned 45 shop offers plus one summary row per market. Here are the three summary rows for Apple AirPods Pro 2:

Market Offers Shops Lowest Median Highest Lowest incl. shipping Cheapest shop
DE 17 14 €183.00 €244.41 €387.99 €188.99 eBay
FR 10 8 €199.98 €246.26 €387.99 €199.98 Cdiscount.com (Marketplace)
IT 18 16 €195.99 €238.03 €387.99 €202.99 prezzoforte.it

Two things jump out, and they're why "lowest price" alone is a weak signal:

  • Shipping changes the ranking. In Germany the cheapest offer is €183 but €188.99 delivered. In Italy the €195.99 offer becomes €202.99. If you compare markets, compare totalPriceWithShipping.
  • The median is steadier than the minimum. The minimum jumps whenever one marketplace seller undercuts. The median moved less than €10 across the three markets.

What an offer row looks like

{
  "type": "offer",
  "productName": "Apple AirPods Pro 2",
  "market": "de",
  "position": 1,
  "shopName": "eBay",
  "offerTitle": "Apple AirPods Pro 2 mit USB-C MagSafe Case",
  "price": 183,
  "shippingCost": 5.99,
  "totalPriceWithShipping": 188.99,
  "currency": "EUR",
  "deliveryTime": "Do. 15.10.–Di. 20.10.2026",
  "shopRating": 5,
  "shopReviews": 2012
}
Enter fullscreen mode Exit fullscreen mode

Cost

Billing is per product per market, all offers included: $0.003 at Apify free-plan prices. This run was 3 product-markets, so about $0.009. A daily check of 1,000 products in 2 markets is about $6/day, and markets with no offers aren't billed.

If you only need the price summary, turn off offer rows (includeOfferRows: false). If you don't have product links yet, search by keyword with searchQueries and let it take the top matches.

Running it daily

Save the input as an Apify task, schedule it daily or hourly, and add a webhook to your endpoint. Each run's dataset is your price snapshot for that day. Or call it from n8n or Make with the official Apify node.

Questions or a market you need? Open an issue on the Actor's page. I read every one.

Top comments (0)