Hoogvliet Product Scraper
Under maintenancePricing
from $4.00 / 1,000 product results
Hoogvliet Product Scraper
Under maintenanceScrape every Hoogvliet (hoogvliet.com) product from the official Intershop API: name, brand, price, offer, unit price, size, category and image. Clean JSON/CSV. National pricing, no login. Needs a Dutch (NL) proxy. Failed lookups are never billed.
Pricing
from $4.00 / 1,000 product results
Rating
0.0
(0)
Developer
Elena Vance
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Hoogvliet Product Scraper — Prices, Discounts, Unit Prices & Images from Hoogvliet.com
Turn the entire Hoogvliet (hoogvliet.com) assortment into clean, structured JSON or CSV: product name, brand, current price, offer/discount, per-unit price (€/kg, €/l), pack size, category, image, and the product link — one tidy record per product.
Browse the whole catalog by category and get back data ready to drop into a spreadsheet, database, price-comparison site, or app. No login, no accounts — and you are never billed for failed requests.
Good to know: This Actor needs a Dutch residential proxy (already pre-selected in the input — just keep it enabled). Hoogvliet uses a single national price list, so one run captures the price every shopper in the Netherlands sees.
Why this Actor
- National pricing in one run. Hoogvliet publishes one price list for the whole country — no per-store fan-out, no store IDs. One run = the price everyone sees.
- Offers and discounts, detected for you. Each record carries the current
price, the pre-discountoriginalPrice("was" price), anisOnOfferflag, adiscountLabel(e.g.2e halve prijs), and the fullpromotionText— filter the whole assortment down to this week's deals in one expression. - Per-unit prices for real comparison.
pricePerUnit+pricePerUnitType(per kg, l, or stuk) let you compare value across pack sizes — and against other supermarkets. - The full assortment, or a focused slice. Leave everything default to scrape every category, or list specific category URIs to scrape just those.
- Complete product detail. Brand, description, pack size, category, the product image (at the largest available size), and the canonical hoogvliet.com product URL — one normalized record.
- You never pay for failures. Blocked, timed-out, and removed products are reported in the run summary — not written to your dataset and not billed.
- Fast and lightweight. Runs are quick and compute stays minimal.
- Clean, consistent EUR output. Prices as euro floats, whitespace-normalized text, JSON-safe values throughout.
Problems this Actor solves
| If you are… | Your problem | How this Actor solves it |
|---|---|---|
| A price-comparison / deals site | Keeping a grocery price database current by hand is impossible | Schedule a daily run; ingest every product with price, offer, and unit price as JSON |
| A market researcher / analyst | Grocery-price and inflation tracking needs structured, repeatable data | Dated, normalized records per product — export straight to pandas, Sheets, or BI |
| A category manager at another retailer | Benchmarking a competitor's assortment and pricing is slow and partial | Full category-level coverage with price and unit price in a single run |
| An app / chatbot / agent developer | You need Hoogvliet catalog data without building and babysitting a scraper | Pay per record on demand; a stable, normalized schema you can rely on |
| A deal hunter / content creator | Finding the best weekly discounts means clicking through the site | Pull the assortment and filter on isOnOffer / discountLabel |
What data you get
Each product becomes one dataset record:
| Field | Description |
|---|---|
id / sku | Hoogvliet's stable SKU (the record's unique id) |
title | Product name |
brand | Brand name, when present (null otherwise) |
description | Short or long product description, when available |
categoryId / categoryName / categoryUri | Category id, title, and full hierarchical URI the product was found under |
price | Current price as a EUR float (null if the product has no available price) |
currency | Always EUR |
originalPrice | The pre-discount "was" price — only present when it is strictly higher than price (else null) |
isOnOffer | true when the product carries a promotion |
discountLabel | Short promo label (e.g. 2e halve prijs, 25% korting), when available |
promotionText | Longer promotion description, when available |
unitSize | Pack / sales unit text (e.g. 500 gram, 1.5 liter) |
baseUnit | The product's base unit (gram, ml, stuk, …) |
unit | Hoogvliet's own unit field, when present |
pricePerUnit / pricePerUnitType | Per-unit price and its unit (kg, liter, stuk) |
available / isInStock | Availability flags |
imageUrl | Product image (at the largest available size) |
productUrl | Canonical hoogvliet.com product page |
source | Provenance tag for the record |
scrapedAt | ISO 8601 timestamp of the run |
rawData | Optional: the full raw Hoogvliet product object, when Include raw payload is on |
Example output
{"id": "100012345","sku": "100012345","title": "Hoogvliet Halfvolle Melk 1 liter","brand": "Hoogvliet","description": "Verse halfvolle melk, 1 liter.","categoryId": "100495","categoryName": "Zuivel, eieren","categoryUri": "org-webshop-Site/-/categories/schappen/100/100495","price": 0.89,"currency": "EUR","originalPrice": 1.09, // present because this product is on offer"isOnOffer": true,"discountLabel": "2e halve prijs","promotionText": "2e halve prijs op verse melk","unitSize": "1 liter","baseUnit": "liter","unit": "stuk","pricePerUnit": 0.89, // i.e. € 0.89 / liter"pricePerUnitType": "liter","available": true,"isInStock": true,"imageUrl": "https://www.hoogvliet.com/.../melk.jpg","productUrl": "https://www.hoogvliet.com/product/100012345","source": "hoogvliet","scrapedAt": "2026-06-18T08:30:00+00:00"}
Inputs that could not be fetched are not written to the dataset (and never
billed). They are listed in the run's SUMMARY record in the key-value store —
{ "failures": [ { "input": "…", "source": "hoogvliet", "error": "…" } ] }
— and the run's status message tells you at a glance how many products succeeded.
How to use it (60 seconds)
- Click Try for free / Start.
- Choose what to scrape:
- Everything (default): leave Category URIs empty to scrape the full Hoogvliet assortment.
- Specific categories: add one full category URI per line under Category
URIs, e.g.
org-webshop-Site/-/categories/schappen/100/100495.
- Keep the Dutch residential proxy enabled (required — see above).
- Click Save & Start. Download results as JSON, CSV, Excel, or via API from the Dataset tab; check Key-value store → SUMMARY for run totals and any failed requests.
Tip — finding category URIs: categories are addressed by their full hierarchical URI, not a bare id (bare ids won't work). The companion Hoogvliet Category Scraper Actor lists every category with its exact URI — run it once to discover the paths you want, then paste them here.
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
| Category URIs | list | (empty) | One full hierarchical category URI per line (e.g. org-webshop-Site/-/categories/schappen/100/100495). Empty = scrape the whole assortment. Bare ids do not work — use the full URI (see the Category Scraper tip). |
| Include raw payload | boolean | false | Adds the full raw Hoogvliet product object under rawData. Increases item size. |
| Proxy configuration | object | Apify Residential, NL | Required — keep the Dutch residential default unless you route NL traffic another way. |
| Max concurrency | integer | 5 | Parallel requests (1–20). Kept moderate to be respectful. |
| Delay between requests | integer | 0 | Politeness delay in seconds before each request (0–10); a small delay is recommended. |
| Max items | integer | 0 | Stop after N product records (0 = unlimited). |
Good to know
- Products are de-duplicated by SKU across categories, and prices and promotions are normalized to clean EUR values.
- A product with no available price is still returned (with
price: null) — only items without a stable SKU or a real name are skipped.
Pricing — what a run costs
This Actor uses transparent pay-per-event pricing with a built-in volume discount: a small Actor-start fee, a fixed price per successful product record for the first 10,000 results of a run, and a cheaper rate for every result beyond that. No subscription, no minimums, and failures are never charged. The exact per-result rate is shown on the Actor's Pricing tab.
- Failed requests are free. Blocked, timed-out, and removed products are reported in the summary, never billed.
- Bigger runs cost less per item. The discount tier resets per run, so one large run is cheaper than the same job split into many small ones.
- Try it free: an Apify free account includes $5 of monthly platform credit — enough to try the Actor before paying anything.
- Stay in control: set Max items and Apify's maximum charge per run; the Actor stops gracefully at your cap, keeping everything already scraped.
Compared to the alternatives
| This Actor | Build your own scraper | Manual checking | |
|---|---|---|---|
| Full assortment, normalized | Yes | You maintain it | Impractical |
| Offers & discount labels | Yes | You maintain it | One product at a time |
| Per-unit prices (€/kg, €/l) | Yes | You compute it | Mental math |
| Dutch residential proxy built in | Yes | You source proxies | – |
| Category coverage | Yes (full assortment + companion Actor) | You build it | – |
| Never billed for failures | Yes | – | – |
| Export JSON / CSV / Excel / API | Yes, built-in | DIY | Copy-paste |
| Setup time | ~60 seconds | Days; breaks on site changes | Hours per run |
Integrate the data
- Exports: JSON, CSV, Excel, XML from the Dataset tab — or fetch
programmatically:
GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json
- Run on a schedule: use Apify Schedules to refresh prices daily or weekly, and webhooks to push finished runs into your pipeline (Sheets, Slack, your backend).
- From code: call the Actor with the Apify API or SDKs (Python / JavaScript) and read the dataset when the run finishes.
- Run summary: every run writes a
SUMMARYrecord (key-value store) with totals, successes, failures, and billing counts — ideal for monitoring automated pipelines.
FAQ
Do I need a Hoogvliet account or login? No. There is no login or account needed.
Why is a Dutch proxy required?
This Actor needs a Dutch (NL) residential proxy and ships with one pre-selected —
just keep it enabled. Without an NL proxy, the run returns no products (and the
issue is reported in SUMMARY).
Are prices per store? No — Hoogvliet uses a single national price list, so one run reflects the price nationwide.
How do I scrape only certain categories? Add their full hierarchical URIs under Category URIs. Use the companion Hoogvliet Category Scraper to discover those URIs — bare category ids don't work.
Why is price sometimes null?
If a product currently has no available price, it comes back with price: null —
the product is still included.
How do I get only discounted products?
Scrape, then filter on isOnOffer == true (or a non-null discountLabel).
How fresh is the data? Each run fetches live data, so you get exactly what hoogvliet.com shows at that moment. Schedule the Actor to keep your dataset as fresh as you need.
What formats can I export? JSON, CSV, Excel, XML — from the Console or via the Apify API.
Related Actors
Pair this with the Hoogvliet Category Scraper. These two Actors are built to run together:
- Hoogvliet Category Scraper — maps Hoogvliet's full recursive Intershop category tree and returns every category with its exact full hierarchical URI. Run it first to discover the category paths you want (bare category ids don't work here — only full URIs do).
- Hoogvliet Product Scraper (this Actor) — paste those URIs into Category URIs to scrape exactly the categories you care about, or leave it empty for the whole assortment.
Map the tree once, then scrape products as often as you like.
The Dutch supermarket family — the same clean schema and pay-per-event billing across every chain, so you can mix and match for full market coverage:
- Albert Heijn Product Scraper
- Lidl Product Scraper (pairs with the Lidl Category Scraper, same way)
- Plus Product Scraper
- Dirk van den Broek Product Scraper
- DekaMarkt Product Scraper
Disclaimer
This Actor is intended for personal and research use. You are responsible for ensuring your use complies with Hoogvliet's terms and applicable law. Please scrape responsibly — keep concurrency moderate and delays reasonable. This project is not affiliated with, endorsed by, or sponsored by Hoogvliet.