DACH Residential White Pages & Reverse Phone Lookup
Pricing
from $0.80 / 1,000 record scrapeds
DACH Residential White Pages & Reverse Phone Lookup
Search residential and business phone directories across Germany, Switzerland and Austria by name and city, or run a reverse phone lookup by number. Returns full name, phone (E.164), mobile, street address, postal code and district in one normalised schema per country.
Pricing
from $0.80 / 1,000 record scrapeds
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Search Germany, Switzerland and Austria's national phone directories by name and city, or run a reverse phone lookup by number, across all three countries in a single actor. Returns full name, phone number (with E.164 formatting), mobile, street address, postal code, and district for residential and business listings, normalised into one schema regardless of which country a result came from.
DACH Phone Directory Scraper Features
- Searches by name, optionally narrowed to a city, across Germany, Switzerland and Austria in one run
- Runs reverse phone lookups on a German, Swiss or Austrian number — auto-detects the country from a
+49/+41/+43prefix, or searches every selected country when given a bare national number - Returns normalised phone numbers in both display and E.164 format, with mobile numbers split out separately
- Parses street address, postal code, city and district (German Stadtteil / Swiss canton) per listing
- Covers residential and business entries in one search — no separate mode needed
- Pick any combination of the three countries per run, or leave the default (all three) in place
Who Uses This Data?
- Skip tracing and process serving — locate a current address and phone number for a named individual before filing across DACH jurisdictions
- Debt recovery — cross-check a debtor's last known name against current directory listings in Germany, Switzerland or Austria
- Insurance claims — verify a claimant's address and phone against a public directory record
- B2C lead generation — build contact lists by name or region for German-speaking Europe outreach campaigns
- Reverse phone research — identify who's calling from an unknown German, Swiss or Austrian number
- Data enrichment — append name, address and phone fields to an existing DACH-region contact list
How It Works
- Choose a search mode — name search or reverse phone lookup.
- For a name search, give it a name and (optionally) a city. For a phone lookup, give it a number — include the country code (
+49/+41/+43) for a precise match when searching more than one country. - Pick which of the three countries to search via
countries— all three by default. - The actor returns every matched listing with contact details and address, paginating automatically up to your
maxItemslimit. - A name search with no city returns matches from anywhere in the selected country/countries — narrow it if you're only after one region.
Input
{"searchMode": "name","countries": ["DE", "CH", "AT"],"name": "Meier","city": "Berlin","maxItems": 50}
| Field | Type | Default | Description |
|---|---|---|---|
searchMode | String | name | name (search by name, optionally narrowed by city) or phone (reverse phone lookup). |
countries | Array | ["DE","CH","AT"] | Which of Germany, Switzerland and Austria to search. Omit a country to skip it. |
name | String | — | Name to search for — a surname or full name. Required for name mode. |
city | String | — | City to narrow a name search, e.g. "Berlin". Optional — omit for nationwide results in each country. |
phone | String | — | Phone number for a reverse lookup, e.g. "030 3134894" or "+43 1 4032202". Required for phone mode. |
maxItems | Integer | 10 | Maximum number of records to return. |
Reverse phone lookup example:
{"searchMode": "phone","phone": "+43 1 4032202","maxItems": 5}
Resuming a large crawl
Every run emits a resumeCursor in its Output. If a large crawl stops before it finishes — because it hit maxItems, your spend cap (maxTotalChargeUsd), or was aborted — start a new run with the same input plus that resumeCursor to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.
- You are not re-charged for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its
resumeCursoris no longer valid. resumeCursoris opaque — supply it unmodified.
Output Fields
{"source_country": "DE","source_site": "dastelefonbuch.de","listing_id": "0001115703880","listing_type": "private","full_name": "Becker Sabine Meier Ingo","first_name": null,"last_name": null,"phone": "030 3 13 48 94","phone_e164": "+49303134894","mobile": null,"street_address": "Pestalozzistr. 29","postal_code": "10627","city": "Berlin","district": "Charlottenburg","website": null,"listing_url": "https://kontakt-1.dastelefonbuch.de/Berlin/Sabine-Becker-Ingo-Meier-Berlin-Pestalozzistr.html","query_term": "Meier","query_location": "Berlin","query_phone": null,"result_rank": 1,"scraped_at": "2026-09-20T15:23:20.077Z"}
| Field | Type | Description |
|---|---|---|
source_country | String | DE, CH, or AT — which country this listing is from. |
source_site | String | The national directory the listing came from. |
listing_id | String | The source's internal listing identifier. |
listing_type | String | private or business. |
full_name | String | Name as listed. |
first_name | String | Given name, when the source separates it. null for German listings, which do not split names. |
last_name | String | Family name, when the source separates it. null for German listings, which do not split names. |
phone | String | Landline number as displayed, when the number is a landline. |
mobile | String | Mobile number as displayed, when the number is a mobile. Mutually exclusive with phone. |
phone_e164 | String | Phone number normalised to E.164, e.g. +49303134894. |
street_address | String | Street address, when listed. |
postal_code | String | Postal code, when listed. |
city | String | City. |
district | String | German Stadtteil (e.g. Charlottenburg) or Swiss canton (e.g. ZH), when the source exposes one. |
website | String | Homepage link, when the listing includes one. Sparse — most listings don't carry one. |
listing_url | String | Direct URL to the listing on its source site. |
query_term | String | The name your search requested (name mode only). |
query_location | String | The city your search requested (name mode only). |
query_phone | String | The phone your search requested (phone mode only). |
result_rank | Integer | Position of this listing within its search's result set. |
scraped_at | String | ISO 8601 timestamp of when the record was collected. |
Data quality note: none of the three source directories expose fax number, email address, or geolocation on their search-results pages, so those fields are not part of the output. listing_type is source-verified for the Swiss and Austrian legs and inferred from a page-level marker for the German leg — all three are more reliable than a name-keyword guess, but treat them as best-effort rather than a guarantee on every row.
FAQ
How do I scrape German, Swiss and Austrian phone directories in one actor?
Give it a name (and optionally a city), or a phone number for a reverse lookup, and pick which of Germany, Switzerland and Austria to search via countries. It returns every matched listing with contact details and address — no account or API key needed.
How much does this actor cost to run?
Pricing follows Apify's pay-per-event model — see the Pricing tab on the actor page for the current rate per record. Results are paginated, so a broad name search across all three countries costs more than a narrow one scoped to a city.
Can I search for a name across a whole country?
Yes — omit city and a name search returns matches from anywhere in each selected country. Add a city to narrow it.
Does this actor cover business listings, or just residential?
Both. A single name search can return private and business entries together; listing_type on each record tells you which is which.
What happens if a reverse phone lookup finds no match?
The run finishes with zero records for that query — none of the selected countries has a listing for the number you searched.
How do I search only one country?
Set countries to a single value, e.g. ["CH"], and the actor queries only that country's directory.
Need More Features?
Need custom fields, filters, or a different target site? File an issue or get in touch.
Why Use This Scraper?
- Three countries, one schema — Germany, Switzerland and Austria normalised into the same field names, instead of running three separate actors and reconciling the output yourself.
- Reverse phone lookup as a first-class mode — not just name search, with automatic country detection from the number itself.
- Clean, structured output — consistent field names across every record, so you spend less time cleaning data and more time using it.
Further reading: People Search Data in Bulk: 14 Sources, What Each One Returns