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
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.
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.
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:
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 QuoteDevelopers
Customers worldwide
Pages extracted
Hours saved for our clients
€199 / one-time
setup fee - included
€169 / mo
setup fee €499
€229 / mo
setup fee €499
€349 / mo
setup fee €499
€549 / mo
setup fee €799
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.
Scraping supplement products from iHerb.com with full details, including descriptions and packaging variations.
Learn More
Daily scraping of lowest prices for 150K products on Allegro.pl to support marketplace pricing and margin optimization.
Learn More
Regular monitoring of Ralph Lauren clothing, footwear, and accessories sold across Amazon subdomains: AE, DE, ES, FR, IT, NL, PL, UK.
Learn MoreLearn how to use web scraping to solve data problems for your organization
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.
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.
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 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.
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.
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.
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.
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,-.
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.
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.
Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582