# Gelbe Seiten Scraper - German Business Leads (`xtech/gelbe-seiten-scraper-pro`) Actor

𝗙𝗶𝗻𝗱 𝗚𝗲𝗿𝗺𝗮𝗻 𝗯𝘂𝘀𝗶𝗻𝗲𝘀𝘀 𝗹𝗲𝗮𝗱𝘀. Search Gelbe Seiten by service and location. Export names, categories, addresses, phones, websites, ratings, reviews, and source URLs. Filter by rating or contact availability and deduplicate overlapping searches.

- **URL**: https://apify.com/xtech/gelbe-seiten-scraper-pro.md
- **Developed by:** [Xtech](https://apify.com/xtech) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 business records

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 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

## German Business Lead Finder for Gelbe Seiten

Build a clean, source-traceable list of public German businesses for local market research, territory planning, supplier discovery, and legitimate B2B prospecting.

**Unofficial tool — not affiliated with, endorsed by, or sponsored by Gelbe Seiten.**

Enter the services and places you want to explore—such as *Zahnarzt in Berlin* or *Steuerberater in Köln*. The Actor combines the searches, removes duplicate listings, and gives you an export-ready list of businesses.

### What you get

- Business name, listed category, address, postcode, city, and district
- Public phone number and website when the directory displays them
- Public rating and review count
- Listing description when available
- Source listing and search URLs for auditability
- Contact-availability flags and a transparent record-completeness score

The completeness score measures how many useful public fields were present. It is not a recommendation, credit score, or assessment of a business.

### Quick start

```json
{
  "searches": [
    { "keyword": "Zahnarzt", "location": "Berlin" },
    { "keyword": "Kieferorthopädie", "location": "Potsdam" }
  ],
  "maxResults": 50,
  "deduplicate": true
}
```

### Find more relevant businesses

Use the optional filters to create a more focused research list:

- **Minimum rating** and **minimum review count** for reputation-led research
- **Keep only listings with a phone number** when calling is relevant to your workflow
- **Keep only listings with a website** when you need a public company web presence
- **Remove duplicate businesses** when combining overlapping cities, districts, or services

You can also paste an existing Gelbe Seiten results-page URL when you need to repeat a precise search.

### Typical uses

- Map local competitors, suppliers, or service coverage
- Build a territory list for sales planning
- Identify businesses with public contact channels for account research
- Compare categories, cities, ratings, and review volume
- Export a source-traceable shortlist to CSV, Excel, JSON, or your own workflow

### Use public business data responsibly

This Actor collects information displayed publicly in the directory. It does not verify contact preferences, consent, legal basis, or the suitability of any outreach. Public business contact details can still be personal data. You are responsible for ensuring your collection, storage, enrichment, and any contact comply with applicable law, platform terms, and your organization’s policies. This is not legal advice.

### Tips for reliable results

- Start with 10–25 results to check that a search matches your target market.
- Use a specific service plus a city or district instead of a broad national query.
- Combine related searches in one run; duplicate listings are removed by default.
- Not every directory result shows a website, rating, or phone number—use filters only when those fields are essential.

# Actor input Schema

## `searches` (type: `array`):

Add one or more business type and location pairs. Results from every search are combined into one lead list.

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

Advanced option: paste existing Gelbe Seiten result-page URLs. Use this when you have a precise search URL to reuse.

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

Maximum number of unique business records to save across all searches. Start small to check relevance.

## `minRating` (type: `number`):

Only save listings with this rating or higher. Leave empty to keep listings without ratings too.

## `minReviewCount` (type: `integer`):

Only save listings with at least this many public reviews.

## `requirePhone` (type: `boolean`):

Exclude results where no public business phone number is displayed.

## `requireWebsite` (type: `boolean`):

Exclude results where no public website link is displayed.

## `deduplicate` (type: `boolean`):

Keep one record when the same listing appears in more than one search.

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

Optional. Use a proxy if Gelbe Seiten rate-limits or blocks direct requests.

## Actor input object example

```json
{
  "searches": [
    {
      "keyword": "Zahnarzt",
      "location": "Berlin"
    }
  ],
  "maxResults": 50,
  "minReviewCount": 0,
  "requirePhone": false,
  "requireWebsite": false,
  "deduplicate": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `businesses` (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 = {
    "searches": [
        {
            "keyword": "Zahnarzt",
            "location": "Berlin"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtech/gelbe-seiten-scraper-pro").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 = {
    "searches": [{
            "keyword": "Zahnarzt",
            "location": "Berlin",
        }],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("xtech/gelbe-seiten-scraper-pro").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 '{
  "searches": [
    {
      "keyword": "Zahnarzt",
      "location": "Berlin"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call xtech/gelbe-seiten-scraper-pro --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9650NMPwvKr0V42wI/builds/coaqeaKrPkwNqMoqo/openapi.json
