Gelbe Seiten Scraper: German Business Leads avatar

Gelbe Seiten Scraper: German Business Leads

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Gelbe Seiten Scraper: German Business Leads

Gelbe Seiten Scraper: German Business Leads

Collect live German business data from Gelbe Seiten by city and category: names, addresses, phones, websites, ratings, and reviews — plus contact emails and social profiles for outreach teams. Rows stream to your dataset as structured JSON in real time.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Emmanuel

Emmanuel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Categories

Share

Gelbe Seiten Real-Time Data

Live German business directory data from Gelbe Seiten (gelbeseiten.de) — streamed to your dataset in real time.

⚠️ Free-tier notice: on a free Apify plan this Actor exports a small sample of results per run (2 rows). Upgrade to a paid Apify plan for full, unlimited output.

Search German businesses by category and city, enrich every row in place with full listing details (description, opening hours, payment methods, coordinates), collect public ratings and reviews, and discover contact emails and social profiles on business websites for outreach. Structured JSON, one row per business, delivered to your dataset as it is collected — plus optional real-time webhooks.

Who is this for?

  • Lead generation & sales teams building DACH-wide B2B outreach lists with phones, websites, and emails
  • Local SEO & marketing agencies mapping competitors and branch presence city by city
  • CRM & SDR platform builders feeding clean German business records into pipelines
  • Market researchers tracking branch structures across German cities
  • Franchise & expansion analysts counting and qualifying businesses per region
  • Data journalists analyzing business density by category and region

Use cases

  1. Build a local outreach list — search steuerberater in berlin, enrich with emails and phones, push straight into your CRM via webhook.
  2. Map a vertical across cities — run one search task per city (zahnarzt in münchen, hamburg, köln) and compare market density.
  3. Size a branch nationwide — keyword searches across all of Germany to see how a trade is distributed before picking target cities.
  4. Enrich a list you already have — paste Gelbe Seiten listing URLs and get the same structured rows back.
  5. Reputation snapshot — collect ratings, review counts, and public review texts per business.
  6. Website-based lead enrichment — discover contact emails and social profiles on the businesses' own websites.

Feature matrix

FeatureInputWhat you get
🔎 Search 1 — City & category (default on)enableCitySearch + cityTasksBusinesses in one category within one city — the classic branchenbuch lookup
🔎 Search 2 — Keyword (nationwide)enableKeywordSearch + keywordTasksBusinesses across all of Germany matching a free-text keyword
🔗 Listing URLsenableScrapeByUrl + scrapeUrlsFull structured row for any Gelbe Seiten listing URL
🎯 Details & enrichmentenableEnrichment + three togglesOne master switch plus three enrichments (details / leads / reviews), all filling the same row
🔔 WebhookswebhookUrl + webhookFormatEvery row also POSTed to your URL (JSON or Slack) the moment it is saved

Both search groups carry prefilled demo rows when the Actor form opens. City & category is switched on — click Start and rows stream into your dataset within seconds. The nationwide keyword group is off by default; flip its toggle and its demo rows are ready to run as they are.

Enrichment is additive: every discovered listing goes to the dataset, and when details are enabled the same row is filled in (detailsFetched: true). Nothing is filtered and no second rows are created — partial results are always exported.

Input reference

🔎 Search 1 — City & category (default on)

FieldTypeDefaultDescription
enableCitySearchbooleantrueToggle for category + city searches.
cityTasks[].categorystring—Branch to look up: steuerberater, zahnarzt, hotel, autohändler, … Plain words work.
cityTasks[].citystring—City: berlin, münchen, hamburg, köln, … Umlauts are fine.
cityTasks[].maxResultsintegerrun limitMax rows for this one search. Collection continues until this number is reached or the directory runs out of results — no fixed page cap.

Example: tax advisors in Berlin, dentists in Munich —

{
"enableCitySearch": true,
"cityTasks": [
{ "category": "steuerberater", "city": "berlin", "maxResults": 10 },
{ "category": "zahnarzt", "city": "münchen", "maxResults": 10 }
]
}

🔎 Search 2 — Keyword (nationwide)

FieldTypeDefaultDescription
enableKeywordSearchbooleanfalse (demo rows prefilled)Toggle for nationwide keyword searches.
keywordTasks[].keywordstring—Free-text term, e.g. steuerberater, buchhaltung, dachdecker. Searched across all of Germany, no city filter.
keywordTasks[].maxResultsintegerrun limitMax rows for this one search. Collection continues until this number is reached or the directory runs out of results.

Example — 15 Steuerberater matches across Germany:

{
"enableKeywordSearch": true,
"keywordTasks": [
{ "keyword": "steuerberater", "maxResults": 15 }
]
}

Each group has its own on/off switch, so you run exactly the searches you need. Enable both and city tasks run first, then keyword tasks in listed order.

🔗 Listing URLs

FieldTypeDefaultDescription
enableScrapeByUrlbooleanfalseCollect specific listing URLs.
scrapeUrlsstring[][]Gelbe Seiten listing URLs (https://www.gelbeseiten.de/gsbiz/...).

🎯 Details & enrichment (one group, one master switch)

FieldTypeDefaultDescription
enableEnrichmentbooleanfalseMaster switch for the whole group. Off = fast mode (results-page fields only).
enableListingDetailsbooleanfalseFill description, opening hours, payment methods, coordinates, fax, keywords.
enableLeadDetailsbooleanfalseDiscover emails + socials on the business website (needs a website on the row).
enableReviewsbooleanfalseAggregate rating + public review texts (capped per business).

The three individual toggles sit in the same section as the master switch and only apply when it is on — one place to decide speed vs. depth.

⚙️ Output & limits

FieldTypeDefaultDescription
concurrencyinteger2Parallel detail enrichments (1–4).

🔔 Webhooks

FieldTypeDefaultDescription
webhookUrlstring""Your receiver URL (CRM, Zapier, Make, Slack incoming webhook, Google Sheets). Each saved row is also POSTed here in real time.
webhookFormatselectjsonjson = the full record; slack = a Slack-friendly message.

Delivery is best-effort: a failing webhook never stops a run or blocks dataset writes.

Output field reference

One row per business (type: "business", platform: "gelbeseiten"):

FieldDescription
name, category, branch, descriptionBusiness identity; description appears with full details
profileUrl, profileIdListing link and listing id
phone, fax, websiteContact data as listed
email, emailsContact emails discovered on the business website (lead details)
socials, instagram, facebook, linkedin, twitterSocial profiles (details/enrichment)
street, zipCode, city, district, locationPostal address
lat, lng, distanceKmCoordinates and distance from the search center (when shown)
openingHours, openingHoursTodayWeekly hours and the open/closed status line
paymentAccepted, keywordsPayment methods, services/specialities
rating, ratingSource, reviewCount, reviewsPublic ratings and review texts
featureTypesearch or scrape_by_url
detailsFetched, leadDetailsEnrichment flags for this row
searchCity, searchCategory, searchTaskIndex, searchTaskLabelWhich search produced this row
scrapedAtISO timestamp

The run also writes a summary to the OUTPUT key-value entry: totals, duration, errors, spending-limit and paywall status.

Webhook guide

  1. JSON — set webhookFormat: "json". Each record is POSTed as the same JSON object you get in the dataset. Works with Zapier, Make, n8n, your own receiver.
  2. Slack — set webhookFormat: "slack" and use a Slack incoming webhook URL. You get a compact message per business: name, category, location, phone, website, email, rating, and a link to the listing.
{
"enableCitySearch": true,
"cityTasks": [{ "category": "hotel", "city": "hamburg", "maxResults": 5 }],
"webhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ",
"webhookFormat": "slack"
}

Using with AI agents (MCP)

This Actor works out of the box with the Apify MCP Server, so Claude or any MCP-capable agent can call it:

"Find me 10 Steuerberater in Berlin with their phone numbers and websites."

The agent enables Directory search, runs the task, and reads the dataset — no code needed. See Apify MCP docs.

FAQ

Do I need my own proxies? No. A residential connection is configured by default. Adjust the proxy settings only if your plan or use case requires it.

How current is the data? Every run queries the directory live, so results reflect the directory's state at run time — not a stored copy.

What does the free plan get me? A small sample per run (2 rows) so you can verify the output shape. Paid plans export the full, uncapped result set.

Why are some email fields empty? Emails appear only when the business publishes them on its own website, and only with lead details enabled. Fields are filled when discoverable — rows are never dropped.

Can I run the same search for many cities? Yes — one search task per city. The per-search "Max results" governs each row; the run streams everything to one dataset.

How deep does each search go? Until the per-search "Max results" is reached or the directory runs out of results for that search — whichever comes first. There is no fixed page cap.


Kurzanleitung auf Deutsch

Dieser Actor sammelt Live-Daten aus dem Gelbe-Seiten-Branchenverzeichnis: Unternehmen nach Branche und Stadt, vollständige Detailangaben (Beschreibung, Öffnungszeiten, Koordinaten), öffentliche Bewertungen sowie Kontakt-E-Mails und Social-Media-Profile von den Unternehmens-Websites. Jeder Datensatz wird in Echtzeit als strukturiertes JSON in den Datensatz geschrieben — optional zusätzlich per Webhook an Ihre eigene URL.

Beispiel-Eingabe (Steuerberater in Berlin):

{
"enableCitySearch": true,
"cityTasks": [
{ "category": "steuerberater", "city": "berlin", "maxResults": 10 }
]
}

Hinweis für kostenlose Apify-Tarife: Pro Lauf wird nur eine kleine Auswahl von Ergebnissen exportiert (2 Zeilen). Mit einem bezahlten Apify-Tarif erhalten Sie das vollständige, unbegrenzte Ergebnis.

Alle Felder und Optionen sind in den englischen Abschnitten oben dokumentiert — die Eingabemaske in der Apify Console führt ebenfalls auf Englisch durch die Einrichtung.