# Notebooksbilliger Product Scraper (`truenorth/notebooksbilliger-product-monitor`) Actor

Extract notebook prices, EAN/GTIN, MPN, availability, features, images, and product URLs from notebooksbilliger.de.

- **URL**: https://apify.com/truenorth/notebooksbilliger-product-monitor.md
- **Developed by:** [TrueNorth](https://apify.com/truenorth) (community)
- **Categories:** E-commerce, Marketing
- **Stats:** 2 total users, 1 monthly users, 96.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Notebooksbilliger Product Scraper

Extract live notebook prices, previous prices, availability, identifiers, descriptions, features, and product URLs from notebooksbilliger.de. Use the structured dataset for German retail price monitoring, assortment tracking, competitive analysis, procurement, and catalog enrichment.

### What you get

- Live notebook listing data from notebooksbilliger.de
- Optional product-detail enrichment
- SKU, GTIN-13/EAN, MPN, brand, title, and description
- Current and previous prices in EUR
- Availability and delivery text
- Product features, image URL, canonical product URL, and crawl provenance
- Automatic pagination up to the requested product limit
- Deduplicated JSON records exportable as JSON, CSV, Excel, XML, or through the Apify API

### Input

The Actor currently supports the official notebooks listing URL. Set `includeDetails` to `false` for faster listing-only monitoring or keep it enabled for richer product records.

```json
{
  "startUrls": [
    { "url": "https://www.notebooksbilliger.de/notebooks" }
  ],
  "maxItems": 40,
  "includeDetails": true,
  "maxConcurrency": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "DE"
  }
}
```

| Field | Type | Description |
| --- | --- | --- |
| `startUrls` | array | Required. Use `https://www.notebooksbilliger.de/notebooks`. |
| `maxItems` | integer | Global product limit from 1 to 100. Default: 20. |
| `includeDetails` | boolean | Follow product pages and merge identifiers, descriptions, and features. Default: `true`. |
| `maxConcurrency` | integer | Fixed at 1 for reliable browsing. |
| `proxyConfiguration` | object | Optional. Apify Cloud defaults to a German Residential Proxy. |

### Output

Each dataset item follows this structure:

```json
{
  "productId": "904450",
  "sku": "A1102342",
  "gtin13": "0199764598493",
  "mpn": "CV4B2EA#ABD",
  "title": "HP OMEN 16-am0168ng 16.0-inch WUXGA notebook",
  "brand": "HP",
  "description": "16-inch WUXGA display, Intel Core Ultra 7, 24 GB RAM, 1 TB SSD, RTX 5070",
  "currentPrice": 1399,
  "previousPrice": 1499,
  "currency": "EUR",
  "availability": "InStock",
  "availabilityText": "Sofort ab Lager / Express",
  "specifications": [],
  "features": [
    "16-inch WUXGA IPS display",
    "Intel Core Ultra 7",
    "24 GB RAM | 1 TB SSD"
  ],
  "url": "https://www.notebooksbilliger.de/hp+omen+16+am0168ng+904450",
  "imageUrl": "https://media2.nbb-cdn.de/images/products/example.png",
  "source": {
    "listingUrl": "https://www.notebooksbilliger.de/notebooks",
    "detailUrl": "https://www.notebooksbilliger.de/hp+omen+16+am0168ng+904450",
    "scrapedAt": "2026-07-27T09:29:00.806Z"
  }
}
```

Nullable values such as `gtin13`, `previousPrice`, or `availability` remain `null` when the source page does not provide them. `specifications` may be empty; verified product features are returned separately in `features`.

### How to use it

1. Keep the default notebook listing URL and choose a product limit.
2. Run the Actor, optionally with detail enrichment.
3. Download the dataset or connect it to the Apify API, webhooks, schedules, Make, Zapier, or your data warehouse.

### Common use cases

- Monitor notebook prices and promotions
- Detect price changes and discontinued offers
- Compare identifiers such as EAN/GTIN, SKU, and MPN across catalogs
- Track availability for procurement or reseller workflows
- Enrich internal product catalogs
- Build recurring retail intelligence datasets

### AI, LLM, and RAG integration

The structured product records can feed catalog-matching models, price-change summaries, procurement assistants, and retrieval-augmented generation systems. Store records in a vector database using title, description, and features as searchable text while retaining price, availability, GTIN, and URLs as metadata. The default dataset is also available through the Apify API and MCP integrations.

### Reliability and limitations

- The Actor uses a browser with a German Residential Proxy on Apify Cloud and fails loudly when the target serves a blocked or unusable page.
- Only the notebooks listing route is currently supported; arbitrary search, category, and product start URLs are not accepted.
- Website changes can affect extraction. Schedule a small recurring run to monitor continuity.
- Data is collected from public pages. Use it in accordance with applicable laws and the target website's terms.

### Cost control

Runtime depends mainly on the number of products and whether detail enrichment is enabled. Use listing-only mode for frequent price snapshots and detail mode when identifiers and descriptions are required. Platform compute and proxy usage are charged separately by Apify.

# Actor input Schema

## `startUrls` (type: `array`):

Use exact https://www.notebooksbilliger.de/notebooks only.

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

Global limit across deduplicated products.

## `includeDetails` (type: `boolean`):

Follow product links discovered from listing and emit one merged record.

## `maxConcurrency` (type: `integer`):

Strict first Cloud milestone is fixed at concurrency 1.

## `proxyConfiguration` (type: `object`):

Apify Cloud defaults to German Residential Proxy when omitted.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.notebooksbilliger.de/notebooks"
    }
  ],
  "maxItems": 20,
  "includeDetails": true,
  "maxConcurrency": 1
}
```

# Actor output Schema

## `products` (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("truenorth/notebooksbilliger-product-monitor").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("truenorth/notebooksbilliger-product-monitor").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 truenorth/notebooksbilliger-product-monitor --silent --output-dataset

```

## MCP server setup

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

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/2I2mPN2E9jGR3a0Dt/builds/wIm8Eb6CTeNk7xSjb/openapi.json
