Gelbe Seiten Scraper - German Business Directory avatar

Gelbe Seiten Scraper - German Business Directory

Pricing

Pay per event

Go to Apify Store
Gelbe Seiten Scraper - German Business Directory

Gelbe Seiten Scraper - German Business Directory

Scrape business listings from Gelbe Seiten (gelbeseiten.de), Germany's largest Yellow Pages directory. Extract contact details, addresses, phone numbers, websites, ratings, and opening hours.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Gelbe Seiten Scraper — German Business Directory

Extract business listings from Gelbe Seiten, Germany's largest Yellow Pages directory with ~5 million business entries. Search by keyword and location to build targeted lead lists with contact details, addresses, phone numbers, websites, ratings, and opening hours.

What Does This Actor Do?

This actor scrapes the Gelbe Seiten (Yellow Pages Germany) business directory. It accepts one or more search terms (e.g. restaurant, zahnarzt, klempner) combined with one or more German cities or regions (e.g. Berlin, München, Hamburg). For each combination it fetches up to 50 business listings from the search results page.

With the Extract full details option enabled, it additionally visits each business's detail page to retrieve structured address, phone, opening hours, geo-coordinates, and the business website URL from structured JSON-LD data.

Who Is It For?

  • Sales & BD teams prospecting German businesses by category and region
  • Marketing agencies building local outreach lists for German markets
  • Recruiters mapping companies in specific sectors across German cities
  • Market researchers analysing business density, contact coverage, and review trends
  • Data providers enriching CRM or sales intelligence databases with German business data

Features

  • 🔍 Multi-term × multi-location — combine any number of search queries with any number of locations
  • 📞 Contact data — phone numbers, website URLs
  • 🗺️ Address data — street, postal code, city; structured fields when detail pages are fetched
  • Ratings & reviews — star rating value and review count from search listings
  • 🕐 Opening hours — available with detail page extraction
  • 📍 Geo-coordinates — latitude/longitude from structured data
  • 🏢 Business type — e.g. Dentist, Restaurant, Plumber from Schema.org types
  • 💡 HTTP+Cheerio — fast, lightweight; no browser required
  • 🔒 Apify Proxy — optional datacenter or residential proxies

Use Cases

  • B2B lead generation — build prospect lists of German businesses by category and region
  • Sales outreach — extract phone and email data for German sales campaigns
  • Market research — map business density, contact coverage, and ratings by area
  • Local SEO audits — check competitor presence in a specific German city
  • Data enrichment — add address and contact data to an existing business list
  • Recruitment — find companies in a specific sector and region to target

How to Use This Actor

  1. Open the actor on Apify and click Try for free.
  2. Enter search terms — e.g. zahnarzt, restaurant, klempner (German keywords work best).
  3. Enter locations — German city names such as Berlin, München, Hamburg, or regions like Bayern.
  4. Set a result limit — default is 50 per term+location combination (the maximum per page).
  5. Enable detail extraction (optional) — toggle on to fetch structured address, coordinates, and opening hours from each business profile page.
  6. Configure proxy (optional) — Apify datacenter proxies are sufficient; residential is rarely needed.
  7. Click Start — the run completes in seconds for small searches, minutes for large-scale extractions.
  8. Download results — export as JSON, CSV, Excel, or NDJSON from the dataset view.

Integrations

CRM / Sales Pipeline

Push extracted business contacts directly into your CRM using Apify's Zapier integration or the HTTP webhook. Example workflow: gelbeseiten-scraper → Zapier → HubSpot / Salesforce contact creation.

Google Sheets Export

Use the Apify → Google Sheets integration to stream results into a spreadsheet for review, deduplication, or sharing with sales teams.

Automated Lead Enrichment

Combine with automation-lab/imprint-contact-scraper: run this actor to gather business website URLs from Gelbe Seiten, then pass those URLs to the imprint scraper to enrich with legal contact emails from German impressum pages.

Scheduled Monitoring

Schedule weekly runs via Apify's cron scheduler to monitor new businesses entering a category or track rating changes in a target city — useful for competitive intelligence or franchise mapping.

MCP (Claude + AI Assistant Usage)

Connect this actor to Claude or other AI assistants via the Apify MCP server and extract Gelbe Seiten data using natural language.

Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/gelbeseiten-scraper"

Claude Desktop / Cursor / VS Code

Add to your MCP config file (claude_desktop_config.json or .cursor/mcp.json):

{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com?tools=automation-lab/gelbeseiten-scraper",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Example Prompts

  • "Find all dentists in München and export their phone numbers to a CSV."
  • "Scrape the top 20 restaurants in Hamburg with ratings, addresses, and website URLs."
  • "Get a list of plumbers in Berlin with full contact details including opening hours."

Input Configuration

FieldTypeRequiredDescription
searchTermsstring[]Keywords to search (e.g. ["restaurant", "zahnarzt"])
locationsstring[]German cities or regions (e.g. ["Berlin", "München"])
maxResultsPerSearchintegerMax listings per term+location pair (1–50, default 50)
extractDetailsbooleanFetch detail page for structured address, hours, coords (default false)
maxRequestRetriesintegerRetry attempts for failed requests (default 3)
proxyConfigurationobjectApify proxy settings (datacenter is sufficient)

Example Input

{
"searchTerms": ["zahnarzt", "restaurant"],
"locations": ["Berlin", "Hamburg"],
"maxResultsPerSearch": 50,
"extractDetails": true,
"proxyConfiguration": { "useApifyProxy": true }
}

This will search 4 combinations (2 terms × 2 cities) and fetch up to 50 businesses each = up to 200 listings.

Output

Each item in the output dataset represents one business listing.

FieldTypeDescription
businessIdstringGelbe Seiten internal UUID
namestringBusiness name
categorystringPrimary business category
snippetstringShort description from search result
phonestringPhone number
websitestringBusiness website URL
addressTextstringFull address as a single string
streetAddressstringStreet and house number (detail only)
postalCodestringPostal code (detail only)
addressLocalitystringCity (detail only)
addressCountrystringCountry code (e.g. DE) (detail only)
latitudenumberGeographic latitude (detail only)
longitudenumberGeographic longitude (detail only)
ratingValuenumberAverage star rating
reviewCountnumberNumber of reviews
openingHoursstring[]Opening hours (e.g. ["Mo-Fr 09:00-18:00"]) (detail only)
businessTypesstring[]Schema.org business types (detail only)
descriptionstringBusiness description
detailUrlstringURL to the Gelbe Seiten profile page
searchTermstringSearch term that produced this result
locationstringLocation that produced this result

Example Output Item

{
"businessId": "8037cc6f-04c7-4956-8f5f-a91e20b2aeae",
"name": "Altstadtcafé Cöpenick",
"category": "Gaststätten und Restaurants",
"snippet": "Gemütliches Café in der Berliner Altstadt Köpenick...",
"phone": "030 65 47 40 69",
"website": "http://www.altstadtcafe.de",
"addressText": "Alt-Köpenick 16, 12555 Berlin",
"streetAddress": "Alt-Köpenick 16",
"postalCode": "12555",
"addressLocality": "Berlin",
"addressCountry": "DE",
"latitude": 52.44627,
"longitude": 13.57612,
"ratingValue": 3.5,
"reviewCount": 4,
"openingHours": null,
"businessTypes": ["FoodEstablishment", "Restaurant"],
"description": "Im Altstadtcafé Cöpenick...",
"detailUrl": "https://www.gelbeseiten.de/gsbiz/8037cc6f-04c7-4956-8f5f-a91e20b2aeae",
"searchTerm": "restaurant",
"location": "Berlin"
}

Pricing

This actor uses pay-per-result (PPR) pricing:

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
Actor run started$0.005$0.005$0.005$0.005$0.005$0.005
Per business scraped$0.003$0.0025$0.00195$0.0015$0.001$0.0007

The start event is a flat one-time charge of $0.005 for all subscription tiers. Per-business prices decrease with higher Apify subscription tiers.

A typical run scraping 50 businesses costs $0.005 + 50 × $0.003 = $0.155 at the FREE tier.

With extractDetails: true, detail page requests are included in the per-business charge — no additional cost per request.

API Usage

Use this actor programmatically via the Apify API or the Apify client libraries.

Node.js (Apify Client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automation-lab/gelbeseiten-scraper').call({
searchTerms: ['zahnarzt'],
locations: ['Berlin'],
maxResultsPerSearch: 20,
extractDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python (Apify Client)

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/gelbeseiten-scraper").call(run_input={
"searchTerms": ["zahnarzt"],
"locations": ["Berlin"],
"maxResultsPerSearch": 20,
"extractDetails": True,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~gelbeseiten-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": ["zahnarzt"],
"locations": ["Berlin"],
"maxResultsPerSearch": 20,
"extractDetails": true
}'

Performance & Limits

  • 50 results maximum per search+location pair — the Gelbe Seiten search page returns up to 50 results (server-rendered, no pagination via HTTP).
  • Speed: ~50 listings in 5–15 seconds without detail pages; with detail pages, add ~2s per business.
  • Memory: 256 MB is sufficient for all run sizes.
  • No login or JavaScript required — uses lightweight HTTP+Cheerio.

FAQ — Frequently Asked Questions

How do I search for businesses in a specific district of a city? Include the district in the location field, e.g. "Berlin Mitte" or "München Schwabing".

Can I get more than 50 results for a single city? The Gelbe Seiten search page returns up to 50 results via HTTP. To get broader coverage, use more specific sub-area searches (e.g. city districts) or combine multiple location strings.

Does this work for all German cities? Yes — Gelbe Seiten covers all German cities, regions, and postal codes.

Is a proxy required? Datacenter proxies are usually sufficient. The site does not aggressively block scrapers under a normal browser User-Agent. For large-scale runs, enable Apify's datacenter proxies.

What's the difference between detail mode on and off? Without details: extracts name, category, snippet, phone (when shown), address text, and rating from the search result card. With details: additionally fetches the business profile page for structured address (street/postal/city/country), geo-coordinates, opening hours, business type, website URL, and full description.

The scraper returned zero items — what should I check? First, verify the search term works on gelbeseiten.de directly — use German keywords (e.g. zahnarzt not dentist) and a valid German city name. If the site returns results but the actor does not, enable Apify datacenter proxies in the proxy configuration. Also check that your searchTerms and locations inputs are non-empty arrays of strings.

Why am I getting fewer results than the limit I set? Gelbe Seiten returns up to 50 results per search term+location combination — this is a server-side limit, not an actor limitation. If you need broader coverage for a city, split the search into districts (e.g. "Berlin Mitte", "Berlin Prenzlauer Berg") or use multiple location strings. Increasing maxResultsPerSearch beyond 50 has no effect.

Legality

This actor collects publicly available business directory data from Gelbe Seiten. Usage must comply with the Gelbe Seiten Terms of Service and applicable data protection regulations (GDPR). Do not use the extracted data for spam or unsolicited contact in violation of local laws. The operator assumes no liability for misuse.