Gelbe Seiten Scraper - German Business Directory
Pricing
Pay per event
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
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
- Open the actor on Apify and click Try for free.
- Enter search terms — e.g.
zahnarzt,restaurant,klempner(German keywords work best). - Enter locations — German city names such as
Berlin,München,Hamburg, or regions likeBayern. - Set a result limit — default is 50 per term+location combination (the maximum per page).
- Enable detail extraction (optional) — toggle on to fetch structured address, coordinates, and opening hours from each business profile page.
- Configure proxy (optional) — Apify datacenter proxies are sufficient; residential is rarely needed.
- Click Start — the run completes in seconds for small searches, minutes for large-scale extractions.
- 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
| Field | Type | Required | Description |
|---|---|---|---|
searchTerms | string[] | ✅ | Keywords to search (e.g. ["restaurant", "zahnarzt"]) |
locations | string[] | ✅ | German cities or regions (e.g. ["Berlin", "München"]) |
maxResultsPerSearch | integer | ❌ | Max listings per term+location pair (1–50, default 50) |
extractDetails | boolean | ❌ | Fetch detail page for structured address, hours, coords (default false) |
maxRequestRetries | integer | ❌ | Retry attempts for failed requests (default 3) |
proxyConfiguration | object | ❌ | Apify 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.
| Field | Type | Description |
|---|---|---|
businessId | string | Gelbe Seiten internal UUID |
name | string | Business name |
category | string | Primary business category |
snippet | string | Short description from search result |
phone | string | Phone number |
website | string | Business website URL |
addressText | string | Full address as a single string |
streetAddress | string | Street and house number (detail only) |
postalCode | string | Postal code (detail only) |
addressLocality | string | City (detail only) |
addressCountry | string | Country code (e.g. DE) (detail only) |
latitude | number | Geographic latitude (detail only) |
longitude | number | Geographic longitude (detail only) |
ratingValue | number | Average star rating |
reviewCount | number | Number of reviews |
openingHours | string[] | Opening hours (e.g. ["Mo-Fr 09:00-18:00"]) (detail only) |
businessTypes | string[] | Schema.org business types (detail only) |
description | string | Business description |
detailUrl | string | URL to the Gelbe Seiten profile page |
searchTerm | string | Search term that produced this result |
location | string | Location 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:
| Event | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|
| 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 ApifyClientclient = 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().itemsprint(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.
Related Actors
- automation-lab/yellowpages-scraper — US Yellow Pages equivalent for American business data
- automation-lab/imprint-contact-scraper — Extract legal imprint contact data from German websites
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.