# WLW.de Scraper (`solidcode/wlw-de-scraper`) Actor

\[💰 $2.5 / 1K] Extract B2B supplier listings from WLW.de (Wer Liefert Was) — company name, address, phone, email, website, certifications, product categories, employee count, founding year, and coordinates. Search by keyword, browse by category, or scope to Germany, Austria, or Switzerland.

- **URL**: https://apify.com/solidcode/wlw-de-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## WLW.de Scraper

Pull B2B supplier listings from WLW.de (Wer Liefert Was) at scale — company name, full mailing address, phone, email, fax, website, VAT ID, founding year, employee count, certifications, named contacts, geo coordinates, and multi-language product categories for every active supplier across Germany, Austria, and Switzerland. Built for DACH procurement teams, B2B sales reps, supply-chain analysts, and industrial market researchers who need a fresh, structured WLW.de dataset without manually clicking through thousands of supplier profiles.

### Why This Scraper?

- **All three DACH markets in one run** — toggle a single dropdown to search Germany, Austria, Switzerland, or "All DACH" (fan-out across DE, AT, and CH with automatic deduplication by company ID).
- **33 top-level WLW.de industry categories** — from Maschinenbau and Elektrotechnik to IT-Dienstleistungen and Beratung, each pickable by name from a dropdown (no slug hunting).
- **Five supplier-type tags on every row** — `manufacturer`, `service_provider`, `wholesaler`, `distributor`, and `custom_manufacturer`, sourced directly from each company's WLW classification.
- **Optional detail-page enrichment** — flip one switch to pull business email, fax, VAT ID, full description, named contact people (first name, last name, role, email, phone), payment terms, incoterms, and full certificate names.
- **Latitude + longitude on most suppliers** — map suppliers geographically straight from the dataset, no extra geocoding step (included whenever the supplier publishes a location).
- **URL-paste mode** — paste any WLW.de search URL, category URL, or supplier detail URL directly; the actor reverse-engineers the filters so you skip rebuilding queries.
- **Up to 3,000 suppliers per filter combination** — hits WLW.de's own deep-pagination ceiling; for larger pulls, slice by category or country to multiply the cap.
- **German-and-English-aware search** — WLW's AI text search bridges both languages, so "CNC milling" and "CNC Fräsen" both work; German keywords still match more precisely.
- **Single flat row per supplier** — 35 fields per row covering identity, address, contact, business profile, certifications, and operational metrics — ready for direct CSV import.

### Use Cases

**Procurement & Sourcing**
- Build short-lists of certified DACH suppliers for tender evaluations
- Filter manufacturers by city, postal code, or distribution area
- Compare supplier counts per industry category to gauge sourcing depth
- Extract payment terms and incoterms for vendor onboarding

**Sales & Lead Generation**
- Build outbound prospect lists for industrial machinery, plastics, metal, or chemicals verticals
- Capture named contact people (managing directors, sales leads) with email and phone
- Segment by employee count and founding year for ICP targeting
- Pull every supplier in a postal-code radius for territory planning

**Market Research & Competitive Intelligence**
- Map the DACH supplier landscape per industry — count of producers vs. wholesalers vs. distributors
- Identify newcomers by founding year and established players by certification breadth
- Compare WLW category coverage across Germany, Austria, and Switzerland
- Track distribution areas to understand each supplier's geographic reach

**Supply Chain Mapping & Risk**
- Index alternative suppliers per product category in case of disruption
- Geo-plot suppliers via latitude/longitude to model logistics distance
- Detect single-source dependencies by spotting categories with only one or two listed suppliers
- Capture VAT IDs and certificates for compliance and KYC workflows

### Getting Started

#### Search by German Keyword

```json
{
    "searchQuery": "CNC Fräsen",
    "country": "de",
    "maxResults": 100
}
````

#### Browse a Category in All DACH

```json
{
    "searchQuery": "Verpackungsmaschinen",
    "category": "100007",
    "country": "all",
    "maxResults": 500
}
```

#### Full Enrichment Run

```json
{
    "searchQuery": "Logistikdienstleister",
    "country": "de",
    "includeDetails": true,
    "maxResults": 200
}
```

#### Paste WLW.de URLs Directly

```json
{
    "searchUrls": [
        "https://www.wlw.de/de/suche/cnc-fraesen",
        "https://www.wlw.de/de/produkte/maschinenbau-anlagenbau-100007",
        "https://www.wlw.at/de/firma/example-gmbh-12345"
    ],
    "includeDetails": true,
    "maxResults": 1000
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchUrls` | string\[] | `[]` | Paste one or more WLW.de URLs — search pages, category pages, or supplier detail pages. Mix and match. Overrides the guided fields below when set. |
| `searchQuery` | string | `"CNC Fräsen"` | Free-text product or service keyword (German recommended). Ignored when `searchUrls` is populated. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `category` | select | `All Categories` | One of 33 top-level WLW industry categories — Maschinenbau, Elektrotechnik, IT-Dienstleistungen, Beratung, and 29 others. Pick by German name from the dropdown. |
| `country` | select | `Germany` | `Germany`, `Austria`, `Switzerland`, or `All DACH` (runs the search across all three and dedupes). |

#### Output Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeDetails` | boolean | `false` | Visit each supplier's profile page to enrich the row with business email, fax, VAT ID, full description, certificates, named contacts, payment terms, and incoterms. Slower (one extra request per supplier) but much richer data. |
| `maxResults` | integer | `200` | Cap on total suppliers per run. `0` means unlimited (internally capped at 50,000 for safety). Final pages are kept in full even if they slightly overshoot the cap. |

### Output

Here's a representative supplier row with `includeDetails` enabled:

```json
{
    "companyName": "Beispiel Maschinenbau GmbH",
    "wlwId": "1234567",
    "slug": "beispiel-maschinenbau-gmbh-1234567",
    "detailUrl": "https://www.wlw.de/de/firma/beispiel-maschinenbau-gmbh-1234567",
    "supplierType": "manufacturer",
    "supplierTypes": ["production", "service"],
    "description": "Familienbetrieb mit über 40 Jahren Erfahrung in der CNC-Zerspanung...",
    "street": "Industriestraße 42",
    "zip": "70565",
    "city": "Stuttgart",
    "country": "DE",
    "addressFormatted": "Industriestraße 42, 70565 Stuttgart",
    "phone": "+49 711 1234567",
    "fax": "+49 711 1234568",
    "email": "info@beispiel-maschinenbau.de",
    "website": "https://www.beispiel-maschinenbau.de",
    "logoUrl": "https://cdn.wlw.de/logos/1234567.png",
    "latitude": 48.7758,
    "longitude": 9.1829,
    "employeeCount": "50-99",
    "foundingYear": 1982,
    "distributionArea": "Deutschland, Österreich, Schweiz",
    "vatId": "DE123456789",
    "certifications": ["ISO 9001:2015", "ISO 14001:2015"],
    "productCategories": [
        "CNC-Fräsen",
        "CNC-Drehen",
        "Zerspanungstechnik"
    ],
    "mainBusinessArea": {
        "id": "100020",
        "title": "Zerspanung & Umformung",
        "slug": "zerspanung-umformung"
    },
    "contacts": [
        {
            "firstName": "Klaus",
            "lastName": "Müller",
            "title": "Geschäftsführer",
            "email": "k.mueller@beispiel-maschinenbau.de",
            "phone": "+49 711 1234560",
            "executiveType": "ceo"
        }
    ],
    "paymentMethods": ["invoice", "advance_payment"],
    "paymentTerms": ["net_30"],
    "incoterms": ["EXW", "FCA"],
    "averageResponseTime": "Within 24 hours",
    "responseRate": 0.92,
    "sourceUrl": "https://www.wlw.de/de/suche/cnc-fraesen",
    "searchQuery": "CNC Fräsen",
    "scrapedAt": "2026-05-15T14:30:00Z"
}
```

#### Core Identity

| Field | Type | Description |
|-------|------|-------------|
| `companyName` | string | Legal company name |
| `wlwId` | string | Stable WLW supplier identifier (shared across .de/.at/.ch) |
| `slug` | string | URL-safe company slug used on the supplier detail page |
| `detailUrl` | string | Direct link to the supplier's WLW.de profile |
| `supplierType` | string | Primary tag — one of `manufacturer`, `service_provider`, `wholesaler`, `distributor`, `custom_manufacturer` |
| `supplierTypes` | string\[] | All raw classification tags the supplier carries |
| `description` | string | Company description (longer text when `includeDetails` is on) |
| `logoUrl` | string | Direct URL to the company logo image |

#### Address & Geo

| Field | Type | Description |
|-------|------|-------------|
| `street` | string | Street and house number |
| `zip` | string | Postal code |
| `city` | string | City |
| `country` | string | Two-letter country code (DE / AT / CH) |
| `addressFormatted` | string | Single-line formatted mailing address |
| `latitude` | number | WGS84 latitude |
| `longitude` | number | WGS84 longitude |

#### Contact

| Field | Type | Description |
|-------|------|-------------|
| `phone` | string | Main business phone number |
| `fax` | string | Fax number (detail-page only) |
| `email` | string | Business email (detail-page only) |
| `website` | string | Company homepage URL |
| `contacts` | object\[] | Named contact people: `firstName`, `lastName`, `title`, `email`, `phone`, `executiveType` (detail-page only) |

#### Business Profile

| Field | Type | Description |
|-------|------|-------------|
| `employeeCount` | string | Headcount band (e.g. `1-9`, `10-49`, `50-99`, `100-249`, `250+`) |
| `foundingYear` | integer | Year the company was founded |
| `distributionArea` | string | Geographic distribution area as published by the supplier |
| `vatId` | string | VAT identification number (detail-page only) |
| `mainBusinessArea` | object | Primary WLW category — `{ id, title, slug }` (detail-page only) |
| `averageResponseTime` | string | Self-reported response time bucket |
| `responseRate` | number | Self-reported inquiry response rate (0.0–1.0, where 0.92 means 92%) |

#### Categories & Commercial

| Field | Type | Description |
|-------|------|-------------|
| `productCategories` | string\[] | Top product / service categories the supplier is listed under |
| `certifications` | string\[] | ISO and industry certificate names (detail-page only) |
| `paymentMethods` | string\[] | Accepted payment methods (detail-page only) |
| `paymentTerms` | string\[] | Standard payment terms (detail-page only) |
| `incoterms` | string\[] | Supported Incoterms (detail-page only) |

#### Meta

| Field | Type | Description |
|-------|------|-------------|
| `sourceUrl` | string | Search or detail URL that produced this row |
| `searchQuery` | string | Keyword used (when applicable) |
| `scrapedAt` | string | ISO timestamp of data extraction |

### Tips for Best Results

- **Use German keywords for precision** — WLW's AI text search bridges English and German, but German terms (`Verpackungsmaschinen`, `Zerspanungstechnik`, `Logistikdienstleister`) match more accurately than English equivalents.
- **Combine `category` with `searchQuery`** — picking a top-level category narrows the corpus before the keyword runs, returning fewer but far more relevant rows.
- **Hit "All DACH" once instead of three runs** — the actor fans out across Germany, Austria, and Switzerland in a single run and deduplicates by `wlwId`, so you never pay for the same supplier twice.
- **Turn on `includeDetails` for outreach lists** — listing-tier rows already include phone and website, but only the detail tier carries business email, fax, VAT ID, and named contact people with their personal email and phone.
- **Stay under 3,000 rows per filter combo** — that's WLW's own search-deep-pagination ceiling. For bigger pulls, split your run by category (33 available) or by country to multiply the cap.
- **Paste URLs you already filtered in the WLW UI** — the URL mode replays the exact filters, so refining a search in your browser and pasting the URL is faster than rebuilding it in the input form.
- **Set `maxResults` to 10–50 first** — sanity-check the data shape and field coverage on a small run before scaling up to thousands of rows.

### Pricing

**$2.50 per 1,000 results** — flat pay-per-result. No compute charges — you only pay per result returned.

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.25 |
| 1,000 | $2.50 |
| 10,000 | $25.00 |
| 100,000 | $250.00 |

A "result" is any supplier row pushed to the dataset. Platform fees (storage, data transfer) are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate B2B research, procurement, market analysis, and lead generation. Users are responsible for complying with applicable laws (including GDPR and the German UWG), WLW.de's Terms of Service, and any cookie or data-protection notices on the source site. Do not use extracted contact data for spam, unsolicited marketing, harassment, or any unlawful purpose. Personal contact information must be processed under a lawful basis under GDPR Art. 6.

# Actor input Schema

## `searchUrls` (type: `array`):

Paste one or more WLW.de search-result URLs (e.g. https://www.wlw.de/de/suche/cnc-fraesen). When provided, these override the guided search fields below.

## `searchQuery` (type: `string`):

Free-text product or service keyword to search (e.g. "CNC Fräsen", "Verpackungsmaschinen", "Logistikdienstleister"). Ignored when URLs are provided above.

## `category` (type: `string`):

Top-level WLW.de product category to browse. Use "All Categories" combined with a search keyword for keyword-driven search. Ignored when URLs are provided.

## `country` (type: `string`):

Country / regional WLW.de subdomain. Choose "All DACH" to run the query across Germany, Austria, and Switzerland and merge the results.

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

Visit each supplier's detail page to enrich the row with business email, fax, full description, certifications, full product taxonomy, named contacts, VAT ID, payment terms, and main business area. Best-effort: if a detail page fails on a given run, the actor still returns full listing-tier data (name, address, phone, website, geo, logo). Slower (one extra request per supplier).

## `maxResults` (type: `integer`):

Maximum number of suppliers to fetch across all sources. Default 200 — increase for bigger runs, or set to 0 for unlimited (capped at 50,000 per run as a safety limit). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots. WLW.de's search API returns up to 3,000 results per filter combination — for larger result sets, narrow your filters (category, country, or keyword).

## Actor input object example

```json
{
  "searchUrls": [],
  "searchQuery": "CNC Fräsen",
  "category": "all",
  "country": "de",
  "includeDetails": false,
  "maxResults": 200
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped suppliers with the most useful columns at a glance.

# 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 = {
    "searchUrls": [],
    "searchQuery": "CNC Fräsen",
    "category": "all",
    "country": "de",
    "includeDetails": false,
    "maxResults": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/wlw-de-scraper").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 = {
    "searchUrls": [],
    "searchQuery": "CNC Fräsen",
    "category": "all",
    "country": "de",
    "includeDetails": False,
    "maxResults": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/wlw-de-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchUrls": [],
  "searchQuery": "CNC Fräsen",
  "category": "all",
  "country": "de",
  "includeDetails": false,
  "maxResults": 200
}' |
apify call solidcode/wlw-de-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/wlw-de-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WLW.de Scraper",
        "description": "[💰 $2.5 / 1K] Extract B2B supplier listings from WLW.de (Wer Liefert Was) — company name, address, phone, email, website, certifications, product categories, employee count, founding year, and coordinates. Search by keyword, browse by category, or scope to Germany, Austria, or Switzerland.",
        "version": "1.0",
        "x-build-id": "efziR6S29SU4vKvAs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~wlw-de-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-wlw-de-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~wlw-de-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-wlw-de-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~wlw-de-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-wlw-de-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchUrls": {
                        "title": "WLW.de URLs",
                        "type": "array",
                        "description": "Paste one or more WLW.de search-result URLs (e.g. https://www.wlw.de/de/suche/cnc-fraesen). When provided, these override the guided search fields below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQuery": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Free-text product or service keyword to search (e.g. \"CNC Fräsen\", \"Verpackungsmaschinen\", \"Logistikdienstleister\"). Ignored when URLs are provided above."
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "all",
                            "100001",
                            "100003",
                            "100007",
                            "100008",
                            "100014",
                            "100016",
                            "100017",
                            "100019",
                            "100020",
                            "100038",
                            "100045",
                            "100055",
                            "100057",
                            "100059",
                            "100064",
                            "100067",
                            "100068",
                            "100075",
                            "100077",
                            "100079",
                            "100080",
                            "100086",
                            "100087",
                            "100088",
                            "100090",
                            "100092",
                            "100097",
                            "100100",
                            "100101",
                            "100105",
                            "100106",
                            "100107",
                            "100108"
                        ],
                        "type": "string",
                        "description": "Top-level WLW.de product category to browse. Use \"All Categories\" combined with a search keyword for keyword-driven search. Ignored when URLs are provided.",
                        "default": "all"
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "de",
                            "at",
                            "ch",
                            "all"
                        ],
                        "type": "string",
                        "description": "Country / regional WLW.de subdomain. Choose \"All DACH\" to run the query across Germany, Austria, and Switzerland and merge the results.",
                        "default": "de"
                    },
                    "includeDetails": {
                        "title": "Include Detail-Page Data",
                        "type": "boolean",
                        "description": "Visit each supplier's detail page to enrich the row with business email, fax, full description, certifications, full product taxonomy, named contacts, VAT ID, payment terms, and main business area. Best-effort: if a detail page fails on a given run, the actor still returns full listing-tier data (name, address, phone, website, geo, logo). Slower (one extra request per supplier).",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of suppliers to fetch across all sources. Default 200 — increase for bigger runs, or set to 0 for unlimited (capped at 50,000 per run as a safety limit). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots. WLW.de's search API returns up to 3,000 results per filter combination — for larger result sets, narrow your filters (category, country, or keyword).",
                        "default": 200
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
