# Hoogvliet Scraper (`sleepmodesystems/hoogvliet`) Actor

Hoogvliet product API alternative: all ~8,300 hoogvliet.nl products with prices, deals with dates, next week's deals, EAN barcodes, ingredients, nutrition, Nutri-Score, vegan and organic labels, in about 2 minutes, no proxy. Checked against Hoogvliet's sitemap. Keyword and barcode search.

- **URL**: https://apify.com/sleepmodesystems/hoogvliet.md
- **Developed by:** [Sleep Mode Systems](https://apify.com/sleepmodesystems) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Hoogvliet Scraper extracts products from Hoogvliet (https://hoogvliet.nl): prices, Hoogvliet's own unit prices, deals (aanbiedingen) with their dates and descriptions, **next week's deals**, EAN barcodes, **ingredients, nutrition tables**, Nutri-Score, vegan, vegetarian and organic labels, and categories. Every full run checks itself against Hoogvliet's own catalog sitemap: the last one collected 8,299 of the sitemap's 8,303 products, the other 4 no longer on sale, plus 9 new products the sitemap does not list yet.

**Price: $2.00 per 1,000 products. A full run reads all 8,308 products in about 2 minutes on Apify, with no proxy.**

### What does the Hoogvliet Scraper extract?

| Data          | Fields                                                                                                      | Filled in last full run                                                |
| ------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Identity      | `externalId`, `name`, `brand`, `ean`, `gtins`                                                               | 100% id and name, 8,305 of 8,308 barcodes, 95.6% brand                 |
| Size          | `sizeText`, `quantity`, `unit`                                                                              | 100%                                                                   |
| Price         | `price`, `currency`, `unitPrice`, `unitPriceUnit`                                                           | 100%, unit price as Hoogvliet gives it                                 |
| Deals         | `promoPrice`, `promoText`, `promoStart`, `promoEnd`, `promoDescription`                                     | 851 products on a deal (10.2%), all with dates; 708 with a description |
| Labels        | `organic`, `vegan`, `vegetarian`, `nutriScore`, `badges`, `shelfLifeDays`, `ageRestriction`, `soldByWeight` | 1,292 vegan, 2,224 vegetarian, 235 organic, 2,873 Nutri-Scores         |
| Product facts | `ingredients`, `nutrition`, `storage`, `origin`, `alcoholPercentage`                                        | 82.7% ingredients, 77.8% nutrition table, 84.0% storage                |
| Category      | `categoryPath`, `categoryIds`, `category`                                                                   | 100%                                                                   |
| Links         | `url`, `imageUrl`                                                                                           | 100%                                                                   |
| Run           | `priceDate`, `searchTerm`, `scrapedAt`                                                                      | 100%                                                                   |

Last full run: 2026-11-05 on Apify, 8,308 products in 118 seconds, 505 requests, all HTTP 200.

### Who uses the Hoogvliet Scraper?

- **Price comparison sites** load the full catalog and match it to Albert Heijn, Jumbo, Dirk, PLUS and DekaMarkt on `ean`.
- **Deal and folder apps** publish Hoogvliet's aanbiedingen of this week, and of next week from the Saturday before, with `nextWeek`.
- **Food, diet and allergy apps** read `ingredients`, the `nutrition` table, `nutriScore` and the vegan, vegetarian, gluten-free and organic labels of 8,308 products.
- **Brand and category managers** follow their products' price, deals and unit price at Hoogvliet week by week.
- **Retail and market analysts** track a regional chain's prices, its own brands (`G'woon` 1,128 products, `Hoogvliet` 414) and its deal share.
- **Developers** who need a Hoogvliet product API without maintaining one call this actor from JavaScript, Python or REST.

### How much does the Hoogvliet Scraper cost?

Pay per event. You pay for products written to the dataset and a tiny start fee. Platform usage is included.

| Event                      | Price                                  |
| -------------------------- | -------------------------------------- |
| Product written to dataset | $0.002                                 |
| Actor start                | $0.00005 per run at the default 512 MB |

#### Hoogvliet Scraper cost examples

| Scenario                                | Products  | Cost        |
| --------------------------------------- | --------- | ----------- |
| Small test, `maxItems: 100`             | 100       | $0.20       |
| Keyword search, `keywords: ["melk"]`    | 534       | $1.07       |
| Barcode lookup, 100 barcodes in one run | up to 100 | up to $0.20 |
| This week's deals, `onlyBonus: true`    | 851       | $1.70       |
| Full catalog                            | 8,308     | $16.62      |
| Full catalog every week, 4 runs a month | 33,232    | $66.46      |

Product counts are from runs on 2026-11-04 and 2026-11-05. Set `maxItems` to cap any run. Set the run's maximum charge in Apify to cap spend; the actor stops cleanly when it is reached and reports how many products it got.

### How do you configure the Hoogvliet Scraper?

| Field       | Type             | Default | Meaning                                                                   |
| ----------- | ---------------- | ------- | ------------------------------------------------------------------------- |
| `keywords`  | array of strings | empty   | Search for these words instead of reading the full catalog, every result. |
| `eans`      | array of strings | empty   | Look up these barcodes instead of reading the full catalog.               |
| `onlyBonus` | boolean          | `false` | Keep only products on a deal, in any mode.                                |
| `nextWeek`  | boolean          | `false` | Deals as they will be on the coming Wednesday, instead of today's.        |
| `maxItems`  | integer          | 100000  | Stop after this many products. The default covers the full catalog.       |
| `minItems`  | integer          | 1       | Fail the run if fewer products were found.                                |

With `keywords` and `eans` empty, the actor reads the full catalog.

### How do you scrape the full Hoogvliet catalog with the Hoogvliet Scraper?

Use it for a complete Hoogvliet product list with prices, barcodes, ingredients and nutrition. Leave the input empty. The actor reads every page of Hoogvliet's 20 departments and of its 3 theme pages, where 98 seasonal products are found only, then checks the result against Hoogvliet's sitemap.

```json
{}
```

### How do you get this week's Hoogvliet aanbiedingen with the Hoogvliet Scraper?

`onlyBonus` keeps products on a deal and works with every mode. On the full catalog it stores the products on a deal: 851 in the last run, 708 of them running Wednesday 4 to Tuesday 10 November, each with its dates, Hoogvliet's deal text such as `per pak 0,99`, `2 voor 5,00`, `1 + 1 Gratis` or `25% korting`, and what the deal covers, such as `Alle bekers van 150 gram`.

```json
{
    "onlyBonus": true
}
```

### How do you get next week's Hoogvliet aanbiedingen with the Hoogvliet Scraper?

Use it to publish or plan around next week's folder before it starts. Hoogvliet's deal week runs Wednesday to Tuesday, and Hoogvliet shows a week's deals from the Saturday before. With `nextWeek`, deals are those of the coming Wednesday, read from Hoogvliet's own deal labels for that day; regular prices stay today's. Run it from Saturday: earlier in the week only the deals already running then are given, and the run summary says `nextWeekPublished: false`.

```json
{
    "onlyBonus": true,
    "nextWeek": true
}
```

### How do you search Hoogvliet by keyword with the Hoogvliet Scraper?

Use it when you need a product group. The actor reads every page of Hoogvliet's search for each keyword and stores each product once: `melk` returned 534 products and `halfvolle melk` 42, in 33 requests and 8 seconds on Apify.

```json
{
    "keywords": ["melk", "halfvolle melk"]
}
```

### How do you look up Hoogvliet products by EAN barcode with the Hoogvliet Scraper?

Use it to check the price, deal or ingredients of products you already know. Hoogvliet's own search does not find barcodes, so the actor reads the catalog until it has found yours and then stops: 74 seconds on Apify for the 3 barcodes below, at most about 2 minutes however many you give. Leading zeros are optional. A barcode not in the catalog gives no item and `expected: 0` in the run summary, so it is truly not on sale.

```json
{
    "eans": ["8712113606001", "8710624316389", "24000003649"]
}
```

### Which fields does the Hoogvliet Scraper output?

Source: **Hoogvliet** = Hoogvliet's value unchanged, or only cleaned of HTML. **Derived** = computed by this actor. **Fixed** = same in every item. **Input** = from your input. Missing values are `null`, never an empty string.

| Field               | Source    | Meaning                                                                                                       |
| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------- |
| `chain`             | Fixed     | Always `hoogvliet`.                                                                                           |
| `store`             | Fixed     | Always `null`: Hoogvliet has one national price list.                                                         |
| `externalId`        | Hoogvliet | Hoogvliet article number, such as `047737000`.                                                                |
| `ean`               | Hoogvliet | Barcode: EAN-13, EAN-8, or UPC-A without its leading zero.                                                    |
| `gtins`             | Derived   | The barcode in a list, for the same field on other chains.                                                    |
| `name`              | Hoogvliet | Product name with brand, such as `Hak Rode kool met stukjes appel`.                                           |
| `brand`             | Hoogvliet | Brand.                                                                                                        |
| `sizeText`          | Hoogvliet | Size, such as `500 gram`, `1.5 liter` or `4 stuks`.                                                           |
| `packCount`         | Fixed     | Always `null`: Hoogvliet states one size per product. Kept for the same field on other chains.                |
| `quantity`          | Hoogvliet | Amount in the size, such as 500.                                                                              |
| `unit`              | Derived   | Unit of `quantity`, shortened: `g`, `kg`, `ml`, `l`, `stuk`, `rol`, `pak`.                                    |
| `price`             | Hoogvliet | Regular price in EUR.                                                                                         |
| `currency`          | Fixed     | Always `EUR`.                                                                                                 |
| `unitPrice`         | Hoogvliet | Hoogvliet's regular price per kg, litre, piece, roll or pack, in EUR.                                         |
| `unitPriceUnit`     | Derived   | Unit of `unitPrice`: `kg`, `l`, `stuk`, `rol` or `pak`.                                                       |
| `promoPrice`        | Hoogvliet | Deal price of one pack, when lower than `price`. With `nextWeek`, derived from the deal label.                |
| `promoText`         | Hoogvliet | The deal as shown, such as `per pak 0,99`, `2 voor 5,00`, `1 + 1 Gratis` or `25% korting`.                    |
| `promoType`         | Fixed     | Always `null` on Hoogvliet; kept for the same field on other chains.                                          |
| `promoLabels`       | Fixed     | Always `null` on Hoogvliet; kept for the same field on other chains.                                          |
| `promoStart`        | Hoogvliet | First day of the deal, `YYYY-MM-DD`, usually a Wednesday.                                                     |
| `promoEnd`          | Hoogvliet | Last day of the deal, `YYYY-MM-DD`, usually a Tuesday.                                                        |
| `promoDescription`  | Hoogvliet | What the deal covers, from Hoogvliet's deals page, such as `Alle bekers van 150 gram`.                        |
| `organic`           | Hoogvliet | `true` with Hoogvliet's `Biologisch` label.                                                                   |
| `vegan`             | Hoogvliet | `true` with Hoogvliet's `Veganistisch` label.                                                                 |
| `vegetarian`        | Hoogvliet | `true` with Hoogvliet's `Vegetarisch` label, or vegan.                                                        |
| `nutriScore`        | Hoogvliet | Nutri-Score `A` to `E`.                                                                                       |
| `badges`            | Hoogvliet | Hoogvliet's labels, such as `Spotgoedkoop`, `Beter Leven`, `Glutenvrij`, `MSC`, `Diepvries` or `18+`.         |
| `shelfLifeDays`     | Hoogvliet | Hoogvliet's versgarantie: days the product stays fresh at least.                                              |
| `ageRestriction`    | Hoogvliet | `18` or `16` when sold from that age only.                                                                    |
| `soldByWeight`      | Hoogvliet | `true` for a weighed portion (cheese, meat, deli), priced for the stated weight.                              |
| `ingredients`       | Hoogvliet | Ingredients as the supplier states them.                                                                      |
| `nutrition`         | Hoogvliet | Nutrition table: `per` (such as `100 gram`) and `values`, each a `name` and `value` as Hoogvliet writes them. |
| `storage`           | Hoogvliet | Storage instructions.                                                                                         |
| `origin`            | Hoogvliet | Country of origin, when the supplier states one.                                                              |
| `alcoholPercentage` | Hoogvliet | Alcohol by volume, when above 0.                                                                              |
| `categoryPath`      | Hoogvliet | Category names from department down, such as `Aardappelen, Groente, Fruit/Groente/Komkommer, avocado`.        |
| `categoryIds`       | Hoogvliet | The same categories as Hoogvliet's address slugs.                                                             |
| `category`          | Hoogvliet | Department.                                                                                                   |
| `url`               | Hoogvliet | Product page on hoogvliet.nl.                                                                                 |
| `imageUrl`          | Hoogvliet | Product image.                                                                                                |
| `inStock`           | Hoogvliet | Always `true`: Hoogvliet lists products in stock only.                                                        |
| `availabilityLabel` | Fixed     | Always `null` on Hoogvliet.                                                                                   |
| `priceDate`         | Derived   | The day the prices and deals apply to: today, or the coming Wednesday with `nextWeek`.                        |
| `searchTerm`        | Input     | The keyword or barcode that found the product; `null` in full-catalog mode.                                   |
| `scrapedAt`         | Fixed     | Time the product was read, ISO 8601.                                                                          |

#### Hoogvliet Scraper output example

```json
{
    "chain": "hoogvliet",
    "store": null,
    "externalId": "051343000",
    "ean": "8720600304101",
    "gtins": ["8720600304101"],
    "name": "Hak Haricots verts extra fijn",
    "brand": "Hak",
    "sizeText": "340 gram",
    "packCount": null,
    "quantity": 340,
    "unit": "g",
    "price": 3.59,
    "currency": "EUR",
    "unitPrice": 10.56,
    "unitPriceUnit": "kg",
    "promoPrice": 1.29,
    "promoText": "per pot 1,29",
    "promoType": null,
    "promoLabels": null,
    "promoStart": "2026-11-04",
    "promoEnd": "2026-11-10",
    "promoDescription": "Alle potten van 330-370 gram of spliterwten van 500 gram",
    "organic": false,
    "vegan": true,
    "vegetarian": true,
    "nutriScore": "A",
    "badges": ["Vegetarisch", "Veganistisch"],
    "shelfLifeDays": 20,
    "ageRestriction": null,
    "soldByWeight": false,
    "ingredients": "Prinsessenbonen, water, zout.",
    "nutrition": {
        "per": "100 gram",
        "values": [
            {
                "name": "Energie",
                "value": "79 Kilojoule"
            },
            {
                "name": "Energie",
                "value": "19 Kilocalorie"
            },
            {
                "name": "Totale vetten",
                "value": "0.3 Gram"
            }
        ]
    },
    "storage": "Na openen gekoeld (max. 7°C) bewaren en beperkt houdbaar.",
    "origin": null,
    "alcoholPercentage": null,
    "categoryPath": "Soepen, conserven, sauzen, kruiden/Conserven/Groenteconserven",
    "categoryIds": ["soepen-conserven-sauzen-kruiden", "conserven", "groenteconserven"],
    "category": "Soepen, conserven, sauzen, kruiden",
    "url": "https://hoogvliet.nl/product/hak-haricots-verts-extra-fijn-051343000",
    "imageUrl": "https://static.hoogvliet.nl/ecom/product/051343000.jpg",
    "inStock": true,
    "availabilityLabel": null,
    "priceDate": "2026-11-05",
    "searchTerm": null,
    "scrapedAt": "2026-11-04T23:10:24.086Z"
}
```

The nutrition table is shortened here; the dataset holds every row Hoogvliet gives.

### How does the Hoogvliet Scraper report on its run?

Every run saves a `SUMMARY` record in its key-value store. From the last full run:

```json
{
    "mode": "catalog",
    "priceDate": "2026-11-05",
    "itemsPushed": 8308,
    "distinctIds": 8308,
    "productsRead": 8308,
    "sitemapProducts": 8303,
    "sitemapCollected": 8299,
    "sitemapNotOnSale": 4,
    "notInSitemap": 9,
    "barcodesMissing": 3,
    "dealsRead": 153,
    "nextWeekPublished": null,
    "labelsMissing": 0,
    "buildRefreshed": false,
    "pagesRecovered": 1,
    "stoppedAtChargeLimit": false,
    "blocked": false,
    "concurrencyReduced": false,
    "eanCatalogScan": false,
    "durationSec": 118,
    "requests": 505,
    "statusCodes": { "200": 505 },
    "errors": [],
    "retries": [{ "request": "page aardappelen-groente-fruit 18", "reason": "page without products" }],
    "categories": [{ "id": "zuivel-eieren-boter", "name": "zuivel-eieren-boter", "expected": 630, "collected": 630 }],
    "searches": []
}
```

| Field                              | Meaning                                                                                                       |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `itemsPushed`, `distinctIds`       | Products stored. Only products Apify accepted count.                                                          |
| `productsRead`                     | Distinct products read, including those left out by `onlyBonus`, `maxItems` or your charge limit.             |
| `sitemapProducts`                  | Products in Hoogvliet's catalog sitemap, weekly deal bundles left out.                                        |
| `sitemapCollected`                 | Of those, products collected.                                                                                 |
| `sitemapNotOnSale`                 | Of those, products on no listing: their pages answer 404.                                                     |
| `notInSitemap`                     | Products on sale the sitemap does not list yet.                                                               |
| `barcodesMissing`                  | Products with no barcode, only an in-store code of 3 digits.                                                  |
| `dealsRead`                        | Deals on Hoogvliet's deals page for the price date, the source of `promoDescription`.                         |
| `nextWeekPublished`                | With `nextWeek`: `false` when Hoogvliet has not published that week's deals yet.                              |
| `labelsMissing`                    | With `nextWeek`: products the deal labels did not answer.                                                     |
| `buildRefreshed`                   | `true` when Hoogvliet published a new website build during the run; the actor followed it.                    |
| `pagesRecovered`                   | Listing pages Hoogvliet answered without products, read again through their subcategories.                    |
| `categories`                       | Per listing page, the products Hoogvliet says it holds (`expected`) and those read (`collected`).             |
| `searches`                         | In search mode, the products found and collected per keyword or barcode.                                      |
| `stoppedAtChargeLimit`             | `true` when the run stopped at your maximum charge.                                                           |
| `blocked`                          | `true` when Hoogvliet refused twice in a row (HTTP 403); the run then fails with the products it already had. |
| `concurrencyReduced`               | `true` when Hoogvliet answered 403 or 429; the actor then sends 1 request at a time.                          |
| `statusCodes`, `retries`, `errors` | Every HTTP status received, every retry with its reason, and requests that failed after 3 retries.            |

A full-catalog run is suspect when a category's `collected` is below its `expected`, when `errors` is not empty, when `sitemapCollected + sitemapNotOnSale` is below `sitemapProducts`, when `blocked` or `concurrencyReduced` is `true`, or when `statusCodes` holds anything other than 200. Set `minItems` to make a bad run fail outright.

### How does the Hoogvliet Scraper compare to other Hoogvliet scrapers?

|                              | Hoogvliet Scraper                | incognito_mode/hoogvliet-product-scraper         | harvestedge/dutch-supermarkets-all-11 |
| ---------------------------- | -------------------------------- | ------------------------------------------------ | ------------------------------------- |
| Price per 1,000              | $2.00                            | $4.00 ($2.50 beyond 10,000 a run)                | $5.00                                 |
| Full catalog                 | yes, default, about 2 minutes    | yes, with `maxItems` raised from the default 500 | no, keyword search                    |
| EAN barcode                  | yes, 8,305 of 8,308              | not mentioned                                    | no                                    |
| Ingredients, nutrition table | yes                              | not mentioned                                    | no                                    |
| Nutri-Score, vegan, organic  | yes                              | not mentioned                                    | no                                    |
| Deal dates and descriptions  | yes                              | deal label and text                              | no                                    |
| Next week's deals            | yes, `nextWeek`                  | no                                               | no                                    |
| Unit price                   | yes, Hoogvliet's own             | yes                                              | yes                                   |
| Keyword and barcode search   | yes                              | no, category URIs                                | keyword only                          |
| Completeness check           | yes, against Hoogvliet's sitemap | no                                               | no                                    |
| Proxy                        | none                             | Dutch residential, required                      | not stated                            |

Figures read from each actor's public page on 2026-11-05.

### Things to know about Hoogvliet data from the Hoogvliet Scraper

- **Hoogvliet's deal week runs Wednesday to Tuesday.** In the run of Thursday 5 November, 708 of 851 deals ran Wednesday 4 to Tuesday 10 November, 136 ran all year, and 7 ended on Monday 9 November.
- **Next week's deals appear on the Saturday before.** Hoogvliet's deals page shows week 46 (11 to 17 November) from Saturday 7 November. `nextWeek` reads Hoogvliet's deal labels for the coming Wednesday; run before Saturday, it gives only the deals already running.
- **Multi-buy deals have no single deal price.** `2 voor 5,00`, `3 voor 6,00` and `1 + 1 Gratis` leave the price of one pack unchanged, so `promoPrice` is `null` and the deal is in `promoText`. A per-weight deal such as `per 100 gram 1,99` gives the pack's price for its weight.
- **One national price list.** Hoogvliet's prices were the same in every store checked, so `store` is `null`.
- **Hoogvliet gives its own unit price.** `unitPrice` is Hoogvliet's price per kg, litre, piece, roll or pack. Spices and medicines have real unit prices above €1,000 per kg, such as Salima Safraan, 1 gram for €5.95.
- **241 barcodes are in-store codes.** Cheese, meat, bakery and fresh produce weighed or packed by Hoogvliet carry codes starting with 2, which match no other chain.
- **Barcodes without leading zeros.** 44 products carry UPC-A codes without their leading zero, such as Del Monte's `24000003649`; lookups accept them with or without zeros.
- **Ingredients come from suppliers.** For fresh produce they hold the class and country of origin, such as `Klasse 1` and `Land van herkomst: Spanje`. The actor removes HTML and repeated "Ingrediënten:" labels and leaves the rest as written.
- **Theme pages hold products no department lists.** 98 products, mostly seasonal, are only on Themashops, Feestdagen or Alles voor de barbecue; the actor reads those pages too.
- **Hoogvliet sometimes answers a listing page without its products.** On 5 November one page of Aardappelen, Groente, Fruit came back empty on every try while its subcategories listed the same products. The actor then reads that page's subcategories, a level deeper if needed, and counts it in `pagesRecovered`: the last full run recovered all 20 products of that page, for 26 more requests.
- **Products in stock only.** Hoogvliet's listings show products in stock, so `inStock` is always `true`.

### Is it legal to use the Hoogvliet Scraper?

This actor reads publicly available data only. Hoogvliet product data contains no personal data. It sends at most 4 requests at a time, keeps to Hoogvliet's robots.txt and does not bypass any login or paywall. You are responsible for how you use the data, including any terms that apply to you. See Apify's [guide to web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

### Frequently asked questions about the Hoogvliet Scraper

#### Can I get Hoogvliet products as CSV or Excel?

Yes. Every run's dataset downloads as CSV, Excel, JSON or XML from Apify, or through the API.

#### How often should I run it?

Hoogvliet's deals change every Wednesday. Run the full catalog once a week on Wednesday, and add a run with `onlyBonus` and `nextWeek` on Saturday, Sunday or Monday to have the coming week's deals early.

#### Does it need proxies?

No. Requests go straight to Hoogvliet, at most 4 at a time: the last full run on Apify got HTTP 200 on all 505 requests. If Hoogvliet answers 403 or 429, the actor goes to 1 request at a time; after a 403 it also pauses 60 seconds and tries once more, and a second 403 ends the run with `blocked: true`.

#### Can I schedule it and send results somewhere?

Yes. Use Apify Schedules, and a webhook or integration to send each run's dataset to your database, Google Sheets, Slack or Notion.

#### Does it work with the Apify API and SDK?

Yes. Any Apify client (JavaScript, Python, REST) can start the actor and read the dataset.

#### Can I see the Hoogvliet folder of next week?

Yes, from the Saturday before it starts: run with `onlyBonus` and `nextWeek`. The deals are those Hoogvliet's own deal labels give for the coming Wednesday, with their dates.

#### Until when do Hoogvliet aanbiedingen run?

Most run Wednesday to Tuesday: each deal's `promoEnd` gives its last day. In the last run, 708 of 851 deals ended on Tuesday 10 November.

#### Can I get Hoogvliet's vegan or gluten-free products?

Yes. Run the full catalog and filter on `vegan: true` (1,292 products in the last run), `vegetarian: true` (2,224), or `badges` containing `Glutenvrij` (82), `Suikervrij` (72) or `Biologisch` (235).

#### Does it give ingredients and nutrition values?

Yes, from Hoogvliet's product pages, in the same run and at no extra cost: ingredients for 6,870 products and a nutrition table for 6,464 in the last run, most per 100 gram or 100 milliliter.

#### Can I get Hoogvliet's beer deals?

Yes. Run with `onlyBonus` and filter `categoryPath` on `Bier, wijn, sterke drank/Bier`: 40 beer deals in the last run, all `25% korting`.

#### Is there an official Hoogvliet API?

No public one. Hoogvliet's website uses page data and search endpoints that are not documented for outside use. This actor reads them for you and returns a stable set of fields, so you do not maintain the integration.

#### Can I compare Hoogvliet prices with Albert Heijn, Jumbo, Dirk, PLUS and DekaMarkt?

Yes. The scrapers for those chains by Sleep Mode Systems output the same fields. Match on `ean` (Albert Heijn writes it with a leading zero, so compare without leading zeros) and compare `unitPrice`.

### Other scrapers by Sleep Mode Systems

| Actor                                                                   | What it extracts                                                       | Price per 1,000 |              |
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------- | --------------- | ------------ |
| Hoogvliet Scraper                                                       | Hoogvliet products: prices, next week's deals, EAN, ingredients, vegan | $2.00           | you are here |
| [Albert Heijn Scraper](https://apify.com/sleepmodesystems/albert-heijn) | Albert Heijn products: prices, Bonus deals, EAN, Nutri-Score           | $1.00           |              |
| [Jumbo Scraper](https://apify.com/sleepmodesystems/jumbo)               | Jumbo products: prices, deals with dates, EAN, organic, shelf life     | $1.50           |              |
| [Dirk Scraper](https://apify.com/sleepmodesystems/dirk)                 | Dirk products: prices, next week's deals, EAN, Nutri-Score             | $2.00           |              |
| [PLUS Scraper](https://apify.com/sleepmodesystems/plus)                 | PLUS products: prices, deals with dates, EAN, Nutri-Score, vegan       | $1.50           |              |
| [DekaMarkt Scraper](https://apify.com/sleepmodesystems/dekamarkt)       | DekaMarkt products: prices, next week's deals, EAN, organic            | $2.00           |              |
| [Vomar Scraper](https://apify.com/sleepmodesystems/vomar)               | Vomar products: prices, every EAN barcode, BIO, categories             | $1.00           |              |
| [Poiesz Scraper](https://apify.com/sleepmodesystems/poiesz)             | Poiesz products: prices, deals with dates, EAN, deposit, ingredients   | $1.50           |              |
| [Ekoplaza Scraper](https://apify.com/sleepmodesystems/ekoplaza)         | Ekoplaza products: prices, next week's deals, EAN, allergens, Ekoscope | $2.00           |              |
| [Aldi NL Scraper](https://apify.com/sleepmodesystems/aldi)              | Aldi products: prices, next week's deals, special buys, seals          | $1.00           |              |

All of them share the same output fields, so you can combine their datasets directly. The Aldi NL Scraper adds `articleNumber`, `description`, `specialBuy`, `vegan`, `vegetarian`, `ageRestriction` and `priceDate`, and has no barcodes; the Ekoplaza Scraper adds `articleNumber`, `vegan`, `vegetarian`, `ekoscope`, `origin`, `shelfLifeDays`, `ageRestriction`, `soldByWeight`, `detailsDate`, `description`, `ingredients`, `allergens`, `mayContain`, `freeFrom`, `nutrition` and `priceDate`; the Poiesz Scraper adds `promoDescription`, `deposit`, `depositAmount`, `ageRestriction`, `alcoholPercentage`, `purchaseLimit`, `soldByWeight`, `detailsRead`, `detailsDate`, `ingredients`, `allergens`, `mayContain`, `freeFrom`, `nutrition` and `storage`; the Vomar Scraper adds `soldByWeight`, and fills `gtins` with every barcode Vomar lists; the Hoogvliet Scraper adds `promoDescription`, `vegan`, `vegetarian`, `shelfLifeDays`, `ageRestriction`, `soldByWeight`, `ingredients`, `nutrition`, `storage`, `origin`, `alcoholPercentage` and `priceDate`; the DekaMarkt and Dirk Scrapers add `soldByWeight` and `priceDate`; PLUS adds `vegan`, `vegetarian`, `deposit`, `storeOnly`, `detailsRead` and `detailsDate`; Jumbo adds `promotions` and `shelfLifeDays`. Category ids are text on Jumbo, Dirk, DekaMarkt, Hoogvliet, Vomar, Poiesz, Ekoplaza and Aldi, numbers on Albert Heijn, and not given by PLUS.

### Support for the Hoogvliet Scraper

Questions, a missing field, or a custom pipeline on top of this data: write to Imad at imad@sleepmodesystems.com. Bugs go in the Issues tab of this actor.

# Actor input Schema

## `keywords` (type: `array`):

Search Hoogvliet for these words instead of reading the full catalog, every result of each. Leave empty for the full catalog.

## `eans` (type: `array`):

Look up these barcodes instead of reading the full catalog. Leading zeros are optional. Hoogvliet's search does not find barcodes, so the actor looks them up in the catalog, stopping once all are found: up to about 2 minutes. Leave empty for the full catalog.

## `onlyBonus` (type: `boolean`):

Keep only products on a deal (aanbieding), in full-catalog or search mode.

## `nextWeek` (type: `boolean`):

Give the deals of the coming Wednesday, when Hoogvliet's deal week starts, instead of today's. Hoogvliet publishes a week's deals from the Saturday before; regular prices stay today's.

## `maxItems` (type: `integer`):

Stop after this many distinct products. The full Hoogvliet catalog is about 8,300 products.

## `minItems` (type: `integer`):

Fail the run if fewer products were found.

## Actor input object example

```json
{
  "keywords": [],
  "eans": [],
  "onlyBonus": false,
  "nextWeek": false,
  "maxItems": 100000,
  "minItems": 1
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sleepmodesystems/hoogvliet").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("sleepmodesystems/hoogvliet").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call sleepmodesystems/hoogvliet --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sleepmodesystems/hoogvliet"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/O8ViOV9lu8hmaylba/builds/4jiyj7GEYKqrviIBq/openapi.json
