# Gelbe Seiten Scraper (`anyxsolutions/gelbe-seiten-scraper`) Actor

Scrape German business listings from Gelbe Seiten by trade and city: names, addresses, phone and fax numbers, emails, websites, opening hours, ratings, categories, services and map coordinates. Built for B2B lead generation and local market research in Germany.

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

## Pricing

from $1.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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

![banner](https://anyx.solutions/banners/gelbe-seiten-scraper.png)

## Gelbe Seiten Scraper

**German business leads from Gelbe Seiten — address, phone, fax, email, website, opening hours, ratings and coordinates — as clean JSON.**

Scrape German business listings from Gelbe Seiten by trade and city: names, addresses, phone and fax
numbers, emails, websites, opening hours, ratings, categories, services and map coordinates. Type a
trade and a place ("Klempner" in "Berlin", "Steuerberater" in "80331"), or paste any Gelbe Seiten
results or business URL, and get every business on the list, with the email address and website
the business published, all its phone numbers, its opening hours per weekday, its rating and review
count, its categories and services, the payment methods it accepts and its social media profiles.
There is no login and no API key. Built for B2B lead generation, sales prospecting, agencies that
sell to local businesses, and anyone mapping a local market in Germany.

### ⚡ Quick start

```json
{
  "startUrls": [
    { "url": "https://www.gelbeseiten.de/branchen/klempner/berlin" }
  ],
  "maxItems": 5
}
```

Or search by trade and place:

```json
{
  "searchTerms": ["Zahnarzt", "Steuerberater"],
  "location": "Hamburg",
  "radiusKm": 10,
  "maxItems": 100
}
```

### 🧩 Input

| Field                | Type    | Required | Default                      | Description                                                                                                                                                                                                                         |
| -------------------- | ------- | -------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`          | array   | no¹      | —                            | Gelbe Seiten results pages, such as `https://www.gelbeseiten.de/branchen/klempner/berlin`, searches such as `https://www.gelbeseiten.de/suche/zahnarzt/hamburg`, or single business pages (`https://www.gelbeseiten.de/gsbiz/...`). |
| `searchTerms`        | array   | no¹      | —                            | Trades or business names to search for, one per line, e.g. `Klempner`, `Zahnarzt`, `Steuerberater`.                                                                                                                                 |
| `location`           | string  | no       | —                            | City, district or postcode to search in, e.g. `Berlin`, `Hamburg-Altona`, `80331`. Empty searches all of Germany.                                                                                                                   |
| `radiusKm`           | integer | no       | —                            | Search this many kilometres around the place, 1 to 50. Applies to search terms and to results-page URLs.                                                                                                                            |
| `includeDetails`     | boolean | no       | `true`                       | Open every business page for its email, fax, all phone numbers, opening hours, coordinates, description, services and payment methods. Turn it off for a faster run with the results-page fields only.                              |
| `maxItems`           | integer | no       | —                            | Maximum businesses per start URL or search term. The input form starts at 5; leave it empty to get every result.                                                                                                                    |
| `proxyConfiguration` | object  | no       | `{ "useApifyProxy": false }` | Proxy settings. Gelbe Seiten works without a proxy; switch to a German residential proxy if requests get blocked.                                                                                                                   |

¹ Provide `startUrls`, `searchTerms`, or both.

**Gelbe Seiten URLs.** Open gelbeseiten.de, search for a trade in a city, and copy the address bar —
or open a business and copy its page. **Trades or business names** and **Location** build the same
search for you; each search term is its own search with its own **Maximum businesses per URL or
search**. **Radius (km)** widens or narrows the area around the place. **Include business details**
is on by default. Leave the **Proxy configuration** off unless runs start failing.

### 📤 Output

Each business is one dataset row, in the order Gelbe Seiten ranks them. A business that appears on
two of your searches is returned once per search. Fields the business has not published are `null`
(or empty), so every row has the same shape.

#### Fields

| Field              | Type   | Description                                                                                                                                                                   |
| ------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`               | string | Gelbe Seiten's id for the business, as in its URL.                                                                                                                            |
| `name`             | string | Business name.                                                                                                                                                                |
| `url`              | string | The business page on gelbeseiten.de.                                                                                                                                          |
| `categories`       | array  | Branches the business is listed under, e.g. `Klempnereien`.                                                                                                                   |
| `address`          | string | Street, postcode and city on one line.                                                                                                                                        |
| `street`           | string | Street and house number.                                                                                                                                                      |
| `postalCode`       | string | Postcode (PLZ).                                                                                                                                                               |
| `city`             | string | City.                                                                                                                                                                         |
| `district`         | string | City district, e.g. `Mitte`, when the listing names one.                                                                                                                      |
| `latitude`         | number | Map latitude. Needs details.                                                                                                                                                  |
| `longitude`        | number | Map longitude. Needs details.                                                                                                                                                 |
| `phone`            | string | Main phone number, as listed.                                                                                                                                                 |
| `phones`           | array  | Every phone number listed.                                                                                                                                                    |
| `fax`              | string | Fax number. Needs details.                                                                                                                                                    |
| `email`            | string | Email address the business published. Always present with details on when the business lists one; with details off, only for businesses that offer chat.                      |
| `website`          | string | The business's own website.                                                                                                                                                   |
| `openingHours`     | object | Opening hours per weekday, e.g. `{ "monday": "09:00-13:00, 14:00-18:00" }`. Closing days read `closed`; other entries are kept as written, e.g. `auf Anfrage`. Needs details. |
| `openingHoursNote` | string | Note beside the hours, e.g. `nach Terminvereinbarung`.                                                                                                                        |
| `rating`           | number | Average rating out of 5.                                                                                                                                                      |
| `reviewCount`      | number | Number of reviews.                                                                                                                                                            |
| `description`      | string | The business's description as plain text. With details off, the short teaser from the results page.                                                                           |
| `descriptionHtml`  | string | The description as HTML. Needs details.                                                                                                                                       |
| `services`         | array  | Services and keywords the business lists ("Leistungsumfang"). Needs details.                                                                                                  |
| `paymentMethods`   | array  | Accepted payment methods, e.g. `Bar`, `Visa`. Needs details.                                                                                                                  |
| `languages`        | array  | Languages the business serves customers in. Needs details.                                                                                                                    |
| `socialLinks`      | array  | Social media profiles. Needs details.                                                                                                                                         |
| `logo`             | string | Logo image URL.                                                                                                                                                               |
| `updatedAt`        | string | When Gelbe Seiten last updated the entry (YYYY-MM-DD). Needs details.                                                                                                         |
| `distanceKm`       | number | Distance from the centre of the searched place, in km.                                                                                                                        |
| `position`         | number | Rank in the results, starting at 1. `null` for a business URL given directly.                                                                                                 |
| `searchQuery`      | string | The trade searched for. `null` for a business URL given directly.                                                                                                             |
| `searchLocation`   | string | The place searched in. `null` for a business URL given directly.                                                                                                              |
| `startUrl`         | string | The start URL or search the row came from.                                                                                                                                    |

<details><summary>Example output</summary>

```json
[
  {
    "id": "1aea7ffa-a033-49f1-a642-45a8132ae29c",
    "name": "A + M Heizung-Sanitär GmbH",
    "url": "https://www.gelbeseiten.de/gsbiz/1aea7ffa-a033-49f1-a642-45a8132ae29c",
    "categories": ["Klempnereien"],
    "address": "Torstr. 105- 107, 10119 Berlin",
    "street": "Torstr. 105- 107",
    "postalCode": "10119",
    "city": "Berlin",
    "district": "Mitte",
    "latitude": 52.530052,
    "longitude": 13.403331,
    "phone": "0162 2 30 90 09",
    "phones": ["0162 2 30 90 09", "030 24 62 83 50"],
    "fax": null,
    "email": "pruessing@a-m-hsl.de",
    "website": "https://www.heizungsanitaer-berlin.de",
    "openingHours": {
      "monday": "closed",
      "tuesday": "closed",
      "wednesday": "closed",
      "thursday": "closed",
      "friday": "closed",
      "saturday": "closed",
      "sunday": "closed"
    },
    "openingHoursNote": "Montag, Dienstag, Mittwoch, Donnerstag, Freitag: Termin nach Vereinbarung",
    "rating": null,
    "reviewCount": null,
    "description": "Seit 2005 als familiengeführtes Unternehmen für Sie im Einsatz!Herzlich willkommen beim A + M Heizung-Sanitär GmbH!Wir sind Ihr kompetenter Ansprechpartner im Bereich Sanitärinstallationen. Bei weiteren Fragen können Sie uns gerne kontaktieren. Ihr A + M Heizung-Sanitär GmbH",
    "descriptionHtml": "Seit 2005 als familiengeführtes Unternehmen für Sie im Einsatz!Herzlich willkommen beim A + M Heizung-Sanitär GmbH!Wir sind Ihr kompetenter Ansprechpartner im Bereich Sanitärinstallationen. Bei weiteren Fragen können Sie uns gerne kontaktieren. Ihr A + M Heizung-Sanitär GmbH",
    "services": [
      "Heizungsbau",
      "Sanitär",
      "Sanitäranlagen",
      "Rohrreinigung",
      "Heizungsreparatur",
      "Badumbau",
      "Badsanierung",
      "Heizungsbau Berlin",
      "Badbau Berlin",
      "Heizungsbau in Berlin",
      "Sanitär in Berlin",
      "Sanitäranlagen in Berlin",
      "Rohrreinigung in Berlin",
      "Heizungsreparatur in Berlin",
      "Badumbau in Berlin"
    ],
    "paymentMethods": ["Bar", "Rechnung"],
    "languages": ["Deutsch"],
    "socialLinks": [],
    "logo": "https://ies.v4all.de/200/GS/0001/2/7502/70877502_310x190.png",
    "updatedAt": "2026-09-04",
    "distanceKm": 2.3,
    "position": 1,
    "searchQuery": "klempner",
    "searchLocation": "berlin",
    "startUrl": "https://www.gelbeseiten.de/branchen/klempner/berlin"
  },
  {
    "id": "5c27f30a-5cdb-49c5-b74d-adf7139f4e7b",
    "name": "Karros",
    "url": "https://www.gelbeseiten.de/gsbiz/5c27f30a-5cdb-49c5-b74d-adf7139f4e7b",
    "categories": ["Gaststätten: Café-Restaurants"],
    "address": "Proskauer Str. 8, 10247 Berlin",
    "street": "Proskauer Str. 8",
    "postalCode": "10247",
    "city": "Berlin",
    "district": "Friedrichshain",
    "latitude": 52.516518,
    "longitude": 13.461173,
    "phone": "0157 39 06 22 17",
    "phones": ["0157 39 06 22 17"],
    "fax": null,
    "email": "contact@karros.cafe",
    "website": "https://karros.cafe/",
    "openingHours": {
      "monday": "09:00-18:00",
      "tuesday": "09:00-18:00",
      "wednesday": "09:00-18:00",
      "thursday": "09:00-18:00",
      "friday": "09:00-18:00",
      "saturday": "09:00-18:00",
      "sunday": "09:00-18:00"
    },
    "openingHoursNote": null,
    "rating": 5,
    "reviewCount": 1,
    "description": "Das Karros ist ein gemütliches Café, das mit direkt gehandeltem Kaffee, leckeren Eierspeisen und einer Auswahl an veganen Gerichten überzeugt. Neben frischen Kuchen bietet das Café auch einen schönen Sitzbereich im Freien. Die Gerichte können entweder vor Ort genossen oder zur Abholung bestellt werden. Perfekt für eine entspannte Auszeit oder einen schnellen Genuss unterwegs.",
    "descriptionHtml": "Das Karros ist ein gemütliches Café, das mit direkt gehandeltem Kaffee, leckeren Eierspeisen und einer Auswahl an veganen Gerichten überzeugt. Neben frischen Kuchen bietet das Café auch einen schönen Sitzbereich im Freien. Die Gerichte können entweder vor Ort genossen oder zur Abholung bestellt werden. Perfekt für eine entspannte Auszeit oder einen schnellen Genuss unterwegs.<br><br>",
    "services": [],
    "paymentMethods": [
      "American Express",
      "Apple Pay",
      "Geldkarte",
      "Mastercard",
      "Visa",
      "Bar"
    ],
    "languages": [],
    "socialLinks": ["https://www.instagram.com/coffee_karros/"],
    "logo": "https://ies.v4all.de/200/GS/0001/9/6119/70686119_310x190.png",
    "updatedAt": "2026-08-30",
    "distanceKm": 5.6,
    "position": 4,
    "searchQuery": "restaurant",
    "searchLocation": "berlin",
    "startUrl": "https://www.gelbeseiten.de/branchen/restaurant/berlin"
  }
]
```

</details>

### 💡 Use cases

- **B2B lead generation** — build prospect lists of tradespeople, practices, restaurants or shops in any German city, with email, phone and website.
- **Sales territory planning** — pull every business in a branch within a radius of your office or depot.
- **Agencies selling to local businesses** — find businesses without a website, with few reviews, or with no opening hours listed.
- **Market research** — count and compare businesses by branch, district and rating across cities.
- **Data enrichment** — complete an existing list of German companies with addresses, phone numbers and coordinates.

### ❓ FAQ

- **Which searches work?** Any trade or business name Gelbe Seiten knows, in any German city, district or postcode — the same searches you would type on gelbeseiten.de. A search Gelbe Seiten has no results for ends with a warning in the log and no rows.
- **Do I need an account, an API key or a proxy?** No. The Actor reads the same public pages anyone can open. If a run starts failing, set the proxy to Apify's residential group with country Germany.
- **How many businesses can I get?** Every result of a search: a big city and a common trade run to thousands (restaurants in Berlin list over 2,000). For more, split by district or postcode, or by trade.
- **Why is the email empty for some businesses?** Only businesses that published an email address on Gelbe Seiten have one, and the Actor never guesses one. With details off, emails come only from businesses that offer chat, so leave details on for lead lists.
- **What does turning off business details change?** The run is much faster (one request per ten businesses instead of one per business, after the first fifty), and rows keep the name, address, district, distance, main phone, website, rating, category and teaser. Coordinates, fax, every phone number, opening hours, services and payment methods need details.
- **Can I search a radius?** Yes: set `radiusKm` (1 to 50) with a location or a results-page URL.
- **Does it follow robots.txt?** Yes. Search URLs you paste are opened as the matching branch results page, which Gelbe Seiten allows crawlers to read.

### 🔗 More scrapers by Anyx

- [Yellow Pages Scraper](https://apify.com/anyxsolutions/yellowpages-scraper)
- [Google Maps Email Extractor](https://apify.com/anyxsolutions/google-maps-email-extractor)
- [Immowelt Scraper](https://apify.com/anyxsolutions/immowelt-scraper)
- [Kleinanzeigen Scraper](https://apify.com/anyxsolutions/kleinanzeigen-scraper)

### 🤝 Anyx Solutions

We build custom scrapers and data-extraction pipelines.

- Email: tantosthor@gmail.com

### 🖼 Image credit

Image credit: [gelbeseiten.de](https://www.gelbeseiten.de/)

# Actor input Schema

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

Gelbe Seiten results pages, such as https://www.gelbeseiten.de/branchen/klempner/berlin or a search such as https://www.gelbeseiten.de/suche/zahnarzt/hamburg, or single business pages (https://www.gelbeseiten.de/gsbiz/...).

## `searchTerms` (type: `array`):

What to search for, one search per line, for example Klempner, Zahnarzt or Steuerberater. Each search runs in the location below.

## `location` (type: `string`):

City, district or postcode to search in, for example Berlin, Hamburg-Altona or 80331. Leave empty to search all of Germany.

## `radiusKm` (type: `integer`):

Search this many kilometres around the location, from 1 to 50, for example 10. Applies to search terms and to results-page URLs. Leave empty for the site's own area.

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

Open every business page for its email, fax, all phone numbers, opening hours, coordinates, description, services and payment methods. Turn off for a faster run with the results-page fields only.

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

Maximum number of businesses to return per start URL or search term. Leave empty to get every result the search has.

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

Proxy settings. Gelbe Seiten works without a proxy; switch to a German residential proxy if requests start getting blocked.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.gelbeseiten.de/branchen/klempner/berlin"
    }
  ],
  "includeDetails": true,
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://www.gelbeseiten.de/branchen/klempner/berlin"
        }
    ],
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("anyxsolutions/gelbe-seiten-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": [{ "url": "https://www.gelbeseiten.de/branchen/klempner/berlin" }],
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("anyxsolutions/gelbe-seiten-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.gelbeseiten.de/branchen/klempner/berlin"
    }
  ],
  "maxItems": 5
}' |
apify call anyxsolutions/gelbe-seiten-scraper --silent --output-dataset

```

## MCP server setup

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

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/De6EN0X1SatefRRzo/builds/ascGl4uSnfLT0C1XT/openapi.json
