This tutorial shows how to scrape BundesTelefonbuch leads into a clean CSV with the BundesTelefonbuch Leads Scraper template for UScraper. You will prepare listing URLs, import the workflow, confirm the export path, validate the first rows, and handle common issues before using the file for B2B research.
Before you start
Prerequisites, scope, and policy checks
You need UScraper installed as a local desktop app, the BundesTelefonbuch leads scraper template, and a short list of BundesTelefonbuch result pages your team is allowed to process. Start with one city and one business category before you widen the run.
BundesTelefonbuch is a German directory search portal for companies, addresses, phone numbers, opening hours, ratings, and related listing details. The site exposes search result pages such as company searches in Cologne or category and city combinations. That makes it useful for market mapping, supplier discovery, and contact-data review, but it does not make every reuse lawful or appropriate.
Review the current BundesTelefonbuch robots.txt, the live page you plan to automate, and general robots.txt guidance from Google Search Central. For EU projects, treat public business listings as a compliance workflow, not just a scraping workflow: data protection, database rights, direct marketing rules, and retention policy can all matter.
Technical access is not permission. If your objective is cold call leads, telemarketing leads, or call center data, document the lawful basis, opt-out handling, source URL, and enrichment steps before you contact anyone.
Input prep
Build a clean BundesTelefonbuch URL list
The template is built around known search-result URLs rather than open-ended crawling. The bundled JSON includes pages for techniker in Hamburg and arbeiter in Berlin, with pagination encoded as explicit URLs. You can replace those with your own approved result pages, such as a trade, service, or company search in a city.
Use the official portal manually first. Search the category and city, inspect the result pages, and copy only the URLs that match your research scope. Avoid the bare /suche route for production runs; the bundle notes that it returned a 429 response during analysis, so the workflow intentionally uses reviewed listing URLs.
Good input hygiene looks like this:
- One category and one city for the first validation pass.
- Explicit page URLs for each paginated result page you want to process.
- A saved text file with the source URLs, run purpose, owner, and date.
- A decision on whether blank emails, missing fax numbers, or missing homepage fields are acceptable.
Workflow anatomy
What the BundesTelefonbuch scraper does
The workflow is intentionally small:
Navigate -> Sleep -> Wait for Element -> Structured Export
-> Sleep -> Loop Continue
Navigate holds the reviewed listing URLs. The first short sleep gives the page time to paint. Wait for Element watches #scrollingcontent .companyBox, because result cards can be ready before ads or third-party page resources finish loading. Structured Export then extracts one row per visible card. A second sleep slows the loop before the workflow advances to the next URL.
The important point is that this is BundesTelefonbuch data extraction from visible listing cards, not an API integration, account export, CAPTCHA bypass, or background cloud crawl. The local desktop app opens pages, waits for the expected DOM elements, and writes a CSV on your machine.
The JSON export is the authoritative workflow definition. The truncated shape below is enough to understand what you are validating:
{
"project": {
"name": "BundesTelefonbuch Leads Scraper",
"description": "Scrapes BundesTelefonbuch lead listings for title, address, telephone number, fax number, homepage, and email."
},
"blocks": [
{
"title": "Navigate",
"config": {
"urls": [
"https://www.bundes-telefonbuch.de/suche?what=techniker&where=hamburg&whereLat=&whereLng=",
"https://www.bundes-telefonbuch.de/suche?what=arbeiter&where=berlin&whereLat=&whereLng="
]
}
},
{
"title": "Wait for Element",
"config": {
"selector": "#scrollingcontent .companyBox",
"timeout": 60
}
},
{
"title": "Structured Export",
"config": {
"rowSelector": "#scrollingcontent .companyBox",
"fileName": "bundestelefonbuch-leads-scraper.csv",
"fileMode": "append",
"columns": ["titel", "adresse", "telefonnummer", "faxnummer", "homepage", "email"]
}
}
]
}
Output map
CSV fields for BundesTelefonbuch data extraction
No CSV sample was bundled with the workflow, so validate against the JSON definition and the live page. Treat the table below as the expected contract for the first run.
| CSV column | What it captures | Validation check |
|---|---|---|
titel | Company or listing title from the result card heading | Match the visible business name. |
adresse | Postal address text from the card | Check street, postcode, and city formatting. |
telefonnummer | Telephone number when exposed | Expect blanks when the listing does not show a phone. |
faxnummer | Fax number when present | Blank cells are normal for many businesses. |
homepage | Homepage action text or URL | Confirm whether you need raw text or a resolved URL later. |
email | Email action text when exposed | Review carefully before any outreach import. |
Runbook
How to scrape BundesTelefonbuch leads to CSV
Import the template
Open BundesTelefonbuch Leads Scraper, download the workflow JSON, and import it into UScraper.
Replace the listing URLs
In Navigate, replace the bundled Hamburg and Berlin examples with approved BundesTelefonbuch search-result URLs for your city, category, and page range.
Preserve the waits
Keep the short page wait, the result-card wait, and the longer delay between pages. They reduce empty rows and lower the risk of rate-limit failures.
Set the export folder
In Structured Export, confirm bundestelefonbuch-leads-scraper.csv, headers, append mode, and a local folder that matches the client, campaign, or research project.
Run one page first
Export a single result page, open the CSV, compare five rows with the browser, then widen the URL list only after title, address, phone, homepage, and email fields look right.
After the first page, sort the CSV by homepage, telefonnummer, or titel to catch duplicates. For lead generation projects, keep raw exports separate from enriched CRM files so you can audit what came directly from BundesTelefonbuch and what was added later.
Troubleshooting
Validate rows and fix common export issues
| Symptom | Likely cause | Fix |
|---|---|---|
| Zero rows exported | Result cards did not render, a prompt blocked the page, or the selector changed | Rerun one URL, inspect .companyBox, and extend the wait. |
| Many blank emails | Listings do not expose email on the result card | Treat as normal, or scope to categories where email is visible. |
| Missing homepage values | The listing has no homepage action or the selector changed | Compare against the card and update the column selector if needed. |
| Repeated businesses | Same listing appears on multiple pages or append-mode reruns mixed tests | Dedupe by phone, homepage, or title plus address. |
| 429 or throttling | Too many requests, wrong route, or tight reruns | Slow down, reduce pages, and avoid the bare search route. |
Alternatives
BundesTelefonbuch vs DasTelefonbuch scraper choices
BundesTelefonbuch and DasTelefonbuch are both German directory surfaces, but you should choose based on the source your team actually reviewed, the fields visible in that source, and the permission story behind the project. A DasTelefonbuch scraper may be a better fit when your stakeholders rely on that directory, while a BundesTelefonbuch scraper alternative is useful when the category, city, or contact coverage is stronger on BundesTelefonbuch.
| Approach | Good fit | Trade-off |
|---|---|---|
| UScraper BundesTelefonbuch template | Analyst-led German directory exports, local CSV review, visible selector edits | You maintain URL lists and selectors when the source layout changes. |
| DasTelefonbuch scraper tools | Teams comparing a neighboring German phone directory | Output fields, policies, and page structure differ by source. |
| Hosted scraper actors | Scheduled remote jobs, APIs, proxy infrastructure, larger queues | Vendor cost, data custody, and template maintenance vary. |
| Manual research | Very small supplier or prospect checks | Slow, inconsistent, and hard to repeat across pages. |
For most "best German directory scraper" research tasks, start with the smallest defensible export: one category, one city, one page, clear permission, and a CSV you can explain.
FAQ
BundesTelefonbuch leads scraper FAQ
BundesTelefonbuch listings may be public, but automated extraction can still be limited by terms, robots rules, database rights, privacy law, and outreach regulations. Check the current site rules, keep runs modest, collect only fields you need, and get legal review before using exported rows for sales or telemarketing.
Next step
Download the BundesTelefonbuch leads scraper template
Use the BundesTelefonbuch Leads Scraper template as the download path, then keep this tutorial open during the first validation pass. For adjacent workflows, browse the broader UScraper template library or return to the UScraper blog for more local desktop app scraping tutorials.

