# WLW Wer liefert Was? German Supplier Leads Scraper (`truenorth/wlw-supplier-search-scraper`) Actor

Extract supplier leads, product listings, company profiles, and contact signals from WLW.de search results.

- **URL**: https://apify.com/truenorth/wlw-supplier-search-scraper.md
- **Developed by:** [TrueNorth](https://apify.com/truenorth) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$6.00 / 1,000 records extracteds

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 Supplier Leads Scraper

#### Hero Section

Find and export B2B suppliers from WLW.de without manual copy-pasting.

The WLW Supplier Leads Scraper extracts structured supplier, product, and company-profile data from WLW.de / Wer liefert was search result pages. It is built for sales teams, procurement teams, market researchers, lead generation agencies, and B2B data workflows that need clean German/DACH supplier records at scale.

Use it to build supplier lists, discover manufacturers and distributors, monitor search visibility, enrich CRM pipelines, and feed structured company data into analytics or AI workflows.

#### Search Coverage

Use this Actor as a WLW Lieferanten Scraper, Wer liefert was Scraper, WLW Daten-Extractor, and German supplier directory scraper for buyer-ready B2B lead generation. It helps teams export WLW search results to CSV, build B2B supplier search scraper workflows, and find DACH suppliers by product keyword across Germany, Austria, Switzerland.

German and localized search terms covered include Lieferanten Leads exportieren, B2B Lieferantenverzeichnis, Herstellerdaten, Firmendaten Export, WLW Suchergebnisse CSV, Wer liefert was Daten exportieren, WLW Firmendaten Scraper, Lieferanten Leads Deutschland, Hersteller Verzeichnis Scraper, WLW Suchergebnisse exportieren, and B2B Lieferanten Datenbank Deutschland.

DACH means Germany, Austria, Switzerland. EAN means European Article Number; the Actor focuses on supplier and product records, not EAN lookup.

#### Key Features

- Extract supplier and product search results from WLW.de.
- Supports keyword/search URLs and WLW product-result pagination.
- Preserves WLW filter query parameters across paginated result pages.
- Parses Nuxt 3 SSR payloads from `__NUXT_DATA__` instead of relying on brittle CSS selectors.
- Captures product/listing fields and embedded company profile fields.
- Provides a transparent output schema, German-localized SEO metadata, polished buyer-value README, stronger German SEO synonyms, and documented SSR reliability approach.
- Addresses buyer research gaps such as unclear visible pricing metadata in API, opportunity for transparent output schema and German-localized SEO metadata, and more polished buyer-value README.
- Includes ranking metadata such as page and position for search monitoring.
- Detects AWS WAF challenge responses and treats them as retry/challenge conditions.
- Deduplicates records by stable product/company identifiers where available.
- Outputs clean JSON/CSV/Excel-ready records for CRM, sales, procurement, analytics, and AI workflows.

#### How it Works

1. Enter a WLW search URL or a search query and choose how many records to extract.
2. Run the Actor on Apify with proxy settings if needed.
3. Download results as JSON, CSV, Excel, or connect the dataset to an API, CRM, automation, or AI pipeline.

#### Input Example

```json
{
  "query": "cnc fräsen",
  "startUrls": [
    "https://www.wlw.de/de/products?isPserpFirst=1&q=cnc%20fr%C3%A4sen"
  ],
  "maxItems": 1000,
  "maxPages": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

#### Output Sample (JSON format)

```json
{
  "searchQuery": "cnc fräsen",
  "page": 1,
  "position": 3,
  "url": "https://www.wlw.de/de/firma/example-gmbh-123456/produkte/cnc-fraesteile-987654",
  "uuid": "product-uuid-example",
  "name": "CNC-Frästeile nach Zeichnung",
  "slug": "cnc-fraesteile-nach-zeichnung",
  "description": "Precision CNC milled parts for industrial applications and custom drawings.",
  "sellPoints": [
    "Custom manufacturing",
    "Small and large series",
    "DACH delivery"
  ],
  "imageUrl": "https://img.wlw.de/example-product.jpg",
  "images": [
    "https://img.wlw.de/example-product.jpg"
  ],
  "auctionId": "auction-example-id",
  "vCategory": "CNC machining",
  "relevanceType": "organic",
  "spaceType": "standard",
  "isShowcased": false,
  "companySlug": "example-gmbh",
  "companyId": "123456",
  "companyName": "Example GmbH",
  "companyUrl": "https://www.wlw.de/de/firma/example-gmbh-123456",
  "companyUuid": "company-uuid-example",
  "countryCode": "DE",
  "foundingYear": 1998,
  "distributionArea": "Europe",
  "certificatesCount": 3,
  "epId": "ep-example-id",
  "logoUrl": "https://img.wlw.de/example-logo.png",
  "emailExisting": true,
  "isCustomer": true
}
```

#### AI & LLM Integration (RAG-Ready)

The Actor returns structured supplier, product, and company fields that can be used directly in AI and automation workflows:

- Feed product descriptions, sell points, company names, and categories into lead scoring or supplier classification prompts.
- Store company and product records in vector databases for retrieval-augmented generation (RAG).
- Build supplier-discovery assistants that answer procurement questions from WLW search result data.
- Use page/position metadata for competitor monitoring and search visibility tracking.
- Connect the dataset to an MCP server, CRM enrichment workflow, market research dashboard, or outbound sales pipeline.

#### Use Cases

- Build German/DACH B2B supplier lead lists.
- Discover manufacturers, distributors, and service providers by product keyword.
- Export WLW search results to CSV or Excel.
- Monitor supplier rankings for target keywords.
- Enrich CRM accounts with product and company context.
- Source procurement alternatives for specific industrial categories.
- Create AI-ready supplier knowledge bases.

#### Limitations

- WLW.de may return AWS WAF challenge responses under some traffic patterns. Use Apify Proxy and conservative concurrency for larger jobs.
- Availability of contact signals such as `emailExisting` depends on the data exposed in the public WLW SSR payload.
- The Actor should not claim private emails or hidden contact details unless they are publicly present in the extracted page data.

#### Recommended Apify Console Settings

- Monetization: Pay-Per-Event (PPE).
- Event: `per-1000-supplier-records`.
- Price: `$3.00 per 1,000 extracted supplier/product records`.
- Pass platform usage costs to users: Enabled.
- Categories: Lead Generation, Business, Data Extraction, Marketing, Automation.

# Actor input Schema

## `query` (type: `string`):

WLW product search query, for example maschinenbau.

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

Maximum supplier product records to save.

## `maxPages` (type: `integer`):

Maximum WLW search result pages to crawl per start URL.

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

Optional WLW product search URLs. If provided, these are used instead of generated query URL.

## `countryCodesStr` (type: `string`):

WLW country filter, for example DE, AT, CH, or DE,AT.

## `supplierTypeStr` (type: `string`):

WLW supplier type filter, for example production, distribution, service, wholesaler.

## `verified` (type: `boolean`):

Only include verified profiles.

## `topResponder` (type: `boolean`):

Only include companies marked as reliable responders.

## `sort` (type: `string`):

WLW sort query parameter, for example -1.

## `requestDelayMs` (type: `integer`):

Delay between paginated page requests.

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

Apify proxy configuration.

## Actor input object example

```json
{
  "maxItems": 100,
  "maxPages": 50,
  "startUrls": [],
  "verified": false,
  "topResponder": false,
  "requestDelayMs": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `records` (type: `string`):

Default dataset with one item per extracted WLW supplier/product result.

# 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 = {
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("truenorth/wlw-supplier-search-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 = { "startUrls": [] }

# Run the Actor and wait for it to finish
run = client.actor("truenorth/wlw-supplier-search-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 '{
  "startUrls": []
}' |
apify call truenorth/wlw-supplier-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WLW Wer liefert Was? German Supplier Leads Scraper",
        "description": "Extract supplier leads, product listings, company profiles, and contact signals from WLW.de search results.",
        "version": "1.0",
        "x-build-id": "wr3kOw7J2mVha1184"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/truenorth~wlw-supplier-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-truenorth-wlw-supplier-search-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/truenorth~wlw-supplier-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-truenorth-wlw-supplier-search-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/truenorth~wlw-supplier-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-truenorth-wlw-supplier-search-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": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "WLW product search query, for example maschinenbau."
                    },
                    "maxItems": {
                        "title": "Maximum records",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum supplier product records to save.",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum WLW search result pages to crawl per start URL.",
                        "default": 50
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional WLW product search URLs. If provided, these are used instead of generated query URL.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL",
                                    "description": "WLW product search URL."
                                }
                            }
                        }
                    },
                    "countryCodesStr": {
                        "title": "Country codes",
                        "type": "string",
                        "description": "WLW country filter, for example DE, AT, CH, or DE,AT."
                    },
                    "supplierTypeStr": {
                        "title": "Supplier type",
                        "type": "string",
                        "description": "WLW supplier type filter, for example production, distribution, service, wholesaler."
                    },
                    "verified": {
                        "title": "Verified only",
                        "type": "boolean",
                        "description": "Only include verified profiles.",
                        "default": false
                    },
                    "topResponder": {
                        "title": "Top responders only",
                        "type": "boolean",
                        "description": "Only include companies marked as reliable responders.",
                        "default": false
                    },
                    "sort": {
                        "title": "Sort",
                        "type": "string",
                        "description": "WLW sort query parameter, for example -1."
                    },
                    "requestDelayMs": {
                        "title": "Request delay in ms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Delay between paginated page requests.",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy configuration.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
