Gelbe Seiten Scraper — German Yellow Pages Leads with Emails
Pricing
from $2.00 / 1,000 business listing (search page)s
Gelbe Seiten Scraper — German Yellow Pages Leads with Emails
Scrape German business leads from Gelbe Seiten (gelbeseiten.de) — Yellow Pages Germany. Extract names, phones, decoded emails, websites, addresses, ratings, opening hours, payment methods & GPS coordinates for B2B lead generation in DACH region. Export to CSV, JSON, HubSpot, or integrate via API.
Pricing
from $2.00 / 1,000 business listing (search page)s
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Gelbe Seiten Scraper — German Yellow Pages Leads 🇩🇪
Scrape German business leads from Gelbe Seiten (gelbeseiten.de), the German Yellow Pages directory. Extract business names, phone numbers, emails, websites, addresses, ratings, opening hours, payment methods, and GPS coordinates for B2B lead generation, sales prospecting, and market research in Germany.
Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.
Why this actor
- 3+ million German businesses listed across all branches and cities
- Decoded emails — the only Gelbe Seiten scraper that decodes Cloudflare-protected email addresses
- Structured opening hours — get a clean
{monday: "07:30–16:30", ...}object, not raw text - GPS coordinates — extract latitude/longitude for mapping and geo-analysis
- Detail-page enrichment — full descriptions, payment methods, and secondary phone numbers
- Dual input modes — search by branch + city, or paste direct gelbeseiten.de URLs
- Automatic pagination — handles the site's
/ajaxsucheendpoint to walk through thousands of results - MCP-ready — semantic field names, structured output, and a tool description optimized for AI agents (Claude, GPT, Cursor)
Use cases
- B2B lead generation — build targeted contact lists of German lawyers, doctors, contractors, restaurants, etc.
- Sales prospecting — enrich CRM records with phone, email, and website data
- Market research — analyze business density, ratings, and categories by region
- Local SEO — audit competitor presence across German cities
- Geo-analytics — map business locations for territory planning
Input parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQuery | string | No* | Rechtsanwalt | What to search for — a German branch, profession, or business type (e.g. Maler, Restaurant, Kfz-Werkstatt). |
location | string | No* | Berlin | Where to search — a German city, postal code, or region (e.g. München, 10115, Nordrhein-Westfalen). |
startUrls | array | No | [] | Direct gelbeseiten.de URLs to scrape instead of search. Accepts search-result and business detail URLs. |
maxResults | integer | No | 50 (prefill 3) | Maximum business records to collect. Pagination handled automatically. |
scrapeDetailPages | boolean | No | true | Visit each business detail page to extract email, full opening hours, description, payment methods, and GPS. |
proxyUrl | string | No | "" | Optional custom proxy URL (e.g. http://user:pass@host:port). Leave empty to use Apify proxies. |
*Either startUrls OR both searchQuery + location are required.
Output fields
Each record in the dataset contains:
| Field | Type | Description |
|---|---|---|
businessName | string | Business or professional name |
category | string|null | Branch / category (e.g. "Rechtsanwälte: Fachanwälte für Steuerrecht") |
street | string|null | Street address |
postalCode | string|null | 5-digit German postal code |
city | string|null | City name |
district | string|null | City district (e.g. "Charlottenburg") |
phone | string|null | Primary phone number |
phoneSecondary | string|null | Secondary phone (from detail page) |
email | string|null | Email address (decoded from Cloudflare protection on detail page) |
website | string|null | Business website URL |
rating | number|null | Star rating (0–5) |
reviewCount | number|null | Total review count |
openingHours | object|null | { monday: "...", tuesday: "...", ... sunday: "..." } |
openStatus | string|null | Current open/closed status text |
description | string|null | Business description ("Über das Unternehmen") |
paymentMethods | array|null | Accepted payment methods (e.g. ["Rechnung","Bar"]) |
partnerStatus | string|null | Gelbe Seiten partner badge (e.g. "Silber Partner") |
detailUrl | string | Full gelbeseiten.de detail page URL |
latitude | number|null | GPS latitude |
longitude | number|null | GPS longitude |
scrapedAt | string | ISO 8601 timestamp |
sourceUrl | string | Source page URL |
Pricing
This actor uses Pay-Per-Event pricing — you only pay for what you get:
| Event | Price | When charged |
|---|---|---|
| Actor Start | $0.00005 | Once per run |
| Search result | $0.002 | Per business listing extracted from search results |
| Detail enriched | $0.005 | Per business enriched from its detail page (only when scrapeDetailPages=true) |
Cost examples
- 100 leads (search only): ~$0.20
- 100 leads (with detail enrichment): ~$0.70
- 1,000 leads (with enrichment): ~$7.00
- 10,000 leads (with enrichment): ~$70.00
Quick start
Via Apify Console
- Go to the actor page in Apify Console
- Set
searchQuery=Rechtsanwalt,location=Berlin,maxResults=10 - Click Start and view results in the Dataset tab
Via API
curl -X POST "https://api.apify.com/v2/acts/muhammadafzal~gelbe-seiten-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery":"Maler","location":"München","maxResults":50,"scrapeDetailPages":true}'
Via MCP (Claude, Cursor, GPT)
Ask your AI agent:
"Find 50 lawyers in Berlin with emails and phone numbers from Gelbe Seiten."
The actor is MCP-discoverable with semantic field names and a tool description optimized for agent selection.
How it works
- Search URL construction —
searchQuery+locationare slugified and combined intogelbeseiten.de/branchen/{query}/{location}. - SERP extraction — the initial search page is parsed with Cheerio to extract all visible business listings.
- Pagination — the site's
/ajaxsuchePOST endpoint is called repeatedly (50 results per page) untilmaxResultsis reached. - Detail enrichment — when
scrapeDetailPages=true, each business detail page (/gsbiz/{uuid}) is visited to extract the decoded email, full opening hours object, description, payment methods, and GPS coordinates. - Deduplication — business UUIDs are tracked in a
seenIdsset to prevent duplicate records across paginated results.
Limitations
- Some businesses do not list an email or website — these fields return
null. - Email addresses on Gelbe Seiten are protected by Cloudflare email obfuscation; this actor decodes them, but a few may still be
nullif the page uses a different protection method. - GPS coordinates are only available on detail pages and may be
nullfor some listings. - Very broad searches (e.g. all businesses in Berlin) can return thousands of results — use
maxResultsto cap run cost.
Proxy & reliability
- Uses Apify's default datacenter proxies with automatic residential fallback.
- For aggressive use cases, provide your own residential proxy via
proxyUrl(compatible with Decodo, Bright Data, IPRoyal). - Session pool with
maxUsageCount: 15and random request delays prevent rate limiting. - State is persisted to the KV store for migration recovery on Apify.
Support & feedback
If you encounter issues, have feature requests, or want a custom enrichment (e.g. website email scraping, CRM export formats), open an issue on the actor's Apify Console page. Reviews help the actor rank higher in the Apify Store — please leave one if it works for you!