Hoogvliet Product Scraper avatar

Hoogvliet Product Scraper

Under maintenance

Pricing

from $4.00 / 1,000 product results

Go to Apify Store
Hoogvliet Product Scraper

Hoogvliet Product Scraper

Under maintenance

Scrape 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

Elena Vance

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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-discount originalPrice ("was" price), an isOnOffer flag, a discountLabel (e.g. 2e halve prijs), and the full promotionText — 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 problemHow this Actor solves it
A price-comparison / deals siteKeeping a grocery price database current by hand is impossibleSchedule a daily run; ingest every product with price, offer, and unit price as JSON
A market researcher / analystGrocery-price and inflation tracking needs structured, repeatable dataDated, normalized records per product — export straight to pandas, Sheets, or BI
A category manager at another retailerBenchmarking a competitor's assortment and pricing is slow and partialFull category-level coverage with price and unit price in a single run
An app / chatbot / agent developerYou need Hoogvliet catalog data without building and babysitting a scraperPay per record on demand; a stable, normalized schema you can rely on
A deal hunter / content creatorFinding the best weekly discounts means clicking through the sitePull the assortment and filter on isOnOffer / discountLabel

What data you get

Each product becomes one dataset record:

FieldDescription
id / skuHoogvliet's stable SKU (the record's unique id)
titleProduct name
brandBrand name, when present (null otherwise)
descriptionShort or long product description, when available
categoryId / categoryName / categoryUriCategory id, title, and full hierarchical URI the product was found under
priceCurrent price as a EUR float (null if the product has no available price)
currencyAlways EUR
originalPriceThe pre-discount "was" price — only present when it is strictly higher than price (else null)
isOnOffertrue when the product carries a promotion
discountLabelShort promo label (e.g. 2e halve prijs, 25% korting), when available
promotionTextLonger promotion description, when available
unitSizePack / sales unit text (e.g. 500 gram, 1.5 liter)
baseUnitThe product's base unit (gram, ml, stuk, …)
unitHoogvliet's own unit field, when present
pricePerUnit / pricePerUnitTypePer-unit price and its unit (kg, liter, stuk)
available / isInStockAvailability flags
imageUrlProduct image (at the largest available size)
productUrlCanonical hoogvliet.com product page
sourceProvenance tag for the record
scrapedAtISO 8601 timestamp of the run
rawDataOptional: 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)

  1. Click Try for free / Start.
  2. 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.
  3. Keep the Dutch residential proxy enabled (required — see above).
  4. 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

FieldTypeDefaultDescription
Category URIslist(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 payloadbooleanfalseAdds the full raw Hoogvliet product object under rawData. Increases item size.
Proxy configurationobjectApify Residential, NLRequired — keep the Dutch residential default unless you route NL traffic another way.
Max concurrencyinteger5Parallel requests (1–20). Kept moderate to be respectful.
Delay between requestsinteger0Politeness delay in seconds before each request (0–10); a small delay is recommended.
Max itemsinteger0Stop 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 ActorBuild your own scraperManual checking
Full assortment, normalizedYesYou maintain itImpractical
Offers & discount labelsYesYou maintain itOne product at a time
Per-unit prices (€/kg, €/l)YesYou compute itMental math
Dutch residential proxy built inYesYou source proxies
Category coverageYes (full assortment + companion Actor)You build it
Never billed for failuresYes
Export JSON / CSV / Excel / APIYes, built-inDIYCopy-paste
Setup time~60 secondsDays; breaks on site changesHours 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 SUMMARY record (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.


Pair this with the Hoogvliet Category Scraper. These two Actors are built to run together:

  1. 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).
  2. 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.