Scrape Coolblue.nl product, price and stock data

Coolblue Scraper
Solutions

Formats, schedules and handover

You define the scope: a category tree, a list of Artikelnummers, a set of zoeken queries, or the full per-locale sitemap index. We run it and hand back CSV, JSON, XLSX or an endpoint your systems call. Writing straight into your database, an S3 bucket or a Google Sheet works too, as does a delta file containing only the rows that changed since the previous run.

Frequency follows the field. Prijs and voorraad refresh far more often than Specificaties, so hourly, daily and weekly jobs can run over the same catalogue at different rates. Crawls are rate limited by design. Every row carries its crawl timestamp and locale, so NL, BE and DE stay separable inside one file.

Fields we extract from Coolblue

We extract what Coolblue itself renders, under the names it uses on the page, so every column maps back to something you can point at.

  • Identity - Artikelnummer (the numeric product id, also the JSON-LD sku), Fabrikantcode, Merk, product title, URL slug, the canonical URL per locale and the breadcrumb path down to producttype.
  • Pricing - the sales price in EUR in Dutch notation (1.429,-), Adviesprijs or former reference price, the cheaper Voordelige Tweedekans price offered on the same page, Zekerheidspakket add-on prices and the Coolblue Zakelijk price excluding btw. The page internally carries salesPrice, listPrice, formerPrice, referencePriceType, personalPrice and priceExcludingVat, and we keep those apart instead of flattening them into a single number.
  • Availability - Op voorraad, Tijdelijk uitverkocht and Niet meer leverbaar as distinct states, the schema.org availability value behind them, the delivery promise line and per-store pickup counts where they are shown.
  • Reviews - the product score on the 1-10 scale with its review count. Kiyoh and Trustpilot store ratings are separate entities and arrive as separate columns when you want them.
  • Specificaties - the grouped spec blocks flattened into key and value pairs, including Energieklasse and the link to the EU Productinformatieblad sheet.
  • Media - image URLs on image.coolblue.nl/{width}x{height}/products/{imageId}, requested at the dimensions you need.
  • Listing context - position on a category or search page under a chosen Sorteren op order, the header result count, facet counts such as Tweedekans and Coolblue's Keuze, and the labels Aanbieding and Advertentie, so sponsored placements never contaminate organic ranking data.

Fields we extract from Coolblue
What repeated crawls reveal

What repeated crawls reveal

A single crawl is a snapshot, and Coolblue makes snapshots awkward to compare. Pages are served with Cache-Control: private, no-cache, no-store, every response sets Coolblue-Session, cbvid and an assignedVariations cookie, and A/B variations mean two fetches of the same URL can render different modules. A scheduled pipeline with stable parsing is what turns that into a usable series.

Repetition is the only way to see:

  • Price movement - how far the sales price drifts from the Adviesprijs, when a former price appears, how long an Aanbieding holds.
  • Stock rhythm - how often a model flips between Op voorraad and Tijdelijk uitverkocht, and how fast it returns.
  • End of life - the exact run in which availability turns SoldOut and the label becomes Niet meer leverbaar, which the live page will never tell you afterwards.
  • Tweedekans supply - open-box offers surface and vanish per product, and the Tweedekans facet count on a category page moves with them.
  • New Artikelnummers - ids entering the per-category sitemaps on sitemaps.coolblue.nl, which are published with changefreq daily, or found by an id sweep before they appear in navigation.
  • Ranking - which products hold the top rows per sort order, and how quickly that order is reshuffled.

Coolblue as a data source

Coolblue is a Dutch electronics retailer trading as Coolblue.nl, Coolblue.be and Coolblue.de. As a data source it behaves like a single catalogue with three storefronts on top of it, which is convenient once you know how the records are keyed.

Every product page sits at /product/{numeric-id}/{slug}.html. That numeric id is the Artikelnummer printed in the spec table and the same value emitted as sku in the JSON-LD Product object. The slug is decoration. A bare /product/933102 and a wrong slug both answer HTTP 308 and redirect to the canonical URL, while an id that was never issued returns 404, so the id alone is enough to reach a page and is the only safe join key.

The same id is reused abroad with a translated slug and a different path word: /product/ on the Dutch site and on coolblue.be/nl, /fr/produit/ on the French Belgian site, /produkt/ on the German site, with /en/ variants on top. Each locale canonicalises to itself and Coolblue emits no hreflang, so country variants have to be constructed from the URL pattern rather than discovered in the markup.

Inventory never deletes a record. A product that has been withdrawn keeps its page, switches to SoldOut with the label Niet meer leverbaar, and still renders its last known price. A pipeline that waits for a 404 will never notice the end of a product life cycle; the state has to be read from the availability field.

Get a Quote
dev_w
25

Developers

customers
500+

Customers worldwide

pages
1 500 000 000+

Pages extracted

stime
15000+

Hours saved for our clients

Plans

Airplane

€199 / one-time

setup fee - included

Data limits100,000
Frequencyone-time
Run timeup to 5 days
Data storing7 days

Helicopter

€169 / mo

setup fee €499

Data limits250,000
Frequencymonthly
Run timeup to 5 days
Data storing14 days

Glasses

€229 / mo

setup fee €499

Data limits1,000,000
Frequencyweekly
Run timeup to 5 days
Data storing30 days

DNA

€549 / mo

setup fee €799

Data limits3,000,000
Frequency3 times daily
Run timesame day
Data storing90 days

What Coolblue data is used for

Coolblue prices are a visible reference point in the Benelux and in the German market it moved into later. Suppliers, brands and competing retailers watch them because the assortment overlaps with their own, and the Fabrikantcode makes the match to an internal catalogue mechanical: you align on manufacturer code instead of guessing from titles.

Price and promotion monitoring is the most requested job. Track the sales price against the Adviesprijs, catch the moment a model appears under an /aanbieding refinement, and measure how long a discount survives. Brands run the same feed for RRP and channel checks across the three country sites, where the shared Artikelnummer lets you compare NL, BE and DE pricing for the identical article without building a mapping table first.

Assortment research is the second job. Which producttypes are carried, how deep each category runs, which models are flagged Coolblue's Keuze, where Tweedekans stock exists at all. Merchandising and content teams take the Specificaties blocks and energy labels to fill gaps in their own product records. Category and search crawls answer the placement question: where a model lands on page one under Relevantie or Prijs laag - hoog, and whether that slot was organic or an Advertentie.

Related Case Studies

The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days

The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days

Scraping supplement products from iHerb.com with full details, including descriptions and packaging variations.

Learn More about The Entire Iherb Supplements Catalog, Captured End-to-End in 3 Days
The Lowest Allegro Prices from 150K Eans Collected

The Lowest Allegro Prices from 150K Eans Collected

Daily scraping of lowest prices for 150K products on Allegro.pl to support marketplace pricing and margin optimization.

Learn More about The Lowest Allegro Prices from 150K Eans Collected
Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset

Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset

Regular monitoring of Ralph Lauren clothing, footwear, and accessories sold across Amazon subdomains: AE, DE, ES, FR, IT, NL, PL, UK.

Learn More about Ralph Lauren Monitoring on Amazon, 8 Markets Scanned Into One Clean Dataset
Our Blog

Reads Our Latest News & Blog

Learn how to use web scraping to solve data problems for your organization

6 E-Commerce Sites Like eBay to Scrape in 2026

6 E-Commerce Sites Like eBay to Scrape in 2026

If you sell online, run a marketplace, or advise e-commerce clients, you already know why eBay matters: it’s one of the few places where big retailers compete side by side with thousands of small merchants and private sellers.

Top 8 E-commerce Websites to Scrape in 2026 (From Amazon to 1688)

Top 8 E-commerce Websites to Scrape in 2026 (From Amazon to 1688)

E-commerce teams do not just need “some” competitor data anymore. They need a continuous stream of real prices, discounts, stock levels, reviews, and seller behavior from the platforms that actually shape their markets.

How to Scrape Amazon Data: Benefits, Challenges & Best Practices

How to Scrape Amazon Data: Benefits, Challenges & Best Practices

Amazon provides valuable information gathered in one place: products, reviews, ratings, exclusive offers, news, etc. So scraping data from Amazon will help solve the problems of the time-consuming process of extracting data from e-commerce.

scrapeit logo

Working with ScrapeIt

ScrapeIt is a managed service. You install nothing and you maintain no selectors. We absorb the front-end churn - Coolblue ships Next.js micro-frontends and moves parts of the page into server component payloads without warning - and we monitor field-level completeness, so a column that quietly empties is caught here rather than in your report. One team covers Coolblue.nl, Coolblue.be and Coolblue.de on a single schedule, and one engineer owns your project and answers you directly.

FAQ

Is it legal to collect Coolblue product and price data?

We read only pages Coolblue serves publicly to any browser, we respect the Disallow rules in its robots.txt - cart, login, account, /vergelijken/*, /productreviews/*, /kassakoopje, */api/*, the /*:* facet paths and the /*?selector_*=* parameters - and we crawl at a rate that does not burden the site. Public prices and specifications are factual information, but database rights, your contracts and what you intend to publish are questions for your own counsel rather than for us. Tell us which paths and which fields are in scope and we will keep the crawler inside that boundary.

Why does a Python or curl request to a Coolblue page return 403?

Coolblue filters at the edge on request identity. An empty user agent, curl, python-requests, Scrapy and even a spoofed Googlebot or Bingbot string all receive HTTP 403 with a short branded splash page instead of the product HTML, while an ordinary desktop Chrome user agent receives a 200. Traffic is fronted by CloudFront and every response hands out session cookies. We do not sell a way around protection. We run a correctly configured, rate limited, browser-grade client, keep sessions coherent and back off when the site signals load. When Coolblue tightens the rules, adapting is our maintenance work, not yours.

How do you reach every Coolblue product without crawling the entire site?

Two routes, usually combined. robots.txt points at per-locale product sitemap indexes on sitemaps.coolblue.nl, and the Dutch index links 673 per-category sitemap files named by category id and Dutch slug, published with changefreq daily; the German site reuses those same Dutch category slugs. Separately, because /product/{id} resolves with a 308 to the canonical URL and unissued ids return 404, an id sweep across the Artikelnummer range reaches products without knowing a single slug. Category paths with ?pagina=N fill the gaps, and since a request past the last page returns 404 rather than an empty grid, the crawler gets a clean stop signal.

Can one crawler cover Coolblue.nl, Coolblue.be and Coolblue.de, and do the ids match?

Yes to both. The numeric Artikelnummer is shared across the country sites; only the slug and the path word change - /product/ on Dutch pages including coolblue.be/nl, /fr/produit/ for French Belgium, /produkt/ on the German site, with /en/ locales on top. Each locale canonicalises to itself and there are no hreflang tags to follow, so we generate the variants from the id and the URL pattern and verify that each one resolves. Every row carries a locale column, so a single file can hold NL, BE and DE records for the same article and you can compare them directly. All three sites price in EUR, rendered in Dutch notation such as 1.429,-.

How do I tell a discontinued product from one that is temporarily out of stock, and can I get Tweedekans prices?

Both come from the page rather than from inference. Tijdelijk uitverkocht means the article is expected back; Niet meer leverbaar or Nooit meer leverbaar with schema.org SoldOut means it is finished, and that page stays online with its last known price still rendered, so it never becomes a 404. We return the raw Dutch label and a normalised state side by side. Tweedekans is a second price on the same product page: when an open-box unit exists you get the Voordelige Tweedekans price next to the new price and the Adviesprijs, and when none exists the field comes back empty rather than absent, which makes appearing and disappearing open-box stock easy to chart.

How does it Work?

Step 1 - Make a Request

You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.

Step 2 - Configuring Custom Web Crawlers

Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.

Step 3 - Collect and Deliver

Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.

Step 4 - Maintain and Support

Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.

Request a Quote

Tell us more about you and your project information.
Which sites, which fields, how often. A couple of lines is enough.

We reply within 1 business day. No obligation.

scrapiet

Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582