DACH Residential White Pages & Reverse Phone Lookup avatar

DACH Residential White Pages & Reverse Phone Lookup

Pricing

from $0.80 / 1,000 record scrapeds

Go to Apify Store
DACH Residential White Pages & Reverse Phone Lookup

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

BowTiedRaccoon

Maintained by Community

Actor 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/+43 prefix, 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

  1. Choose a search mode — name search or reverse phone lookup.
  2. 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.
  3. Pick which of the three countries to search via countries — all three by default.
  4. The actor returns every matched listing with contact details and address, paginating automatically up to your maxItems limit.
  5. 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
}
FieldTypeDefaultDescription
searchModeStringnamename (search by name, optionally narrowed by city) or phone (reverse phone lookup).
countriesArray["DE","CH","AT"]Which of Germany, Switzerland and Austria to search. Omit a country to skip it.
nameString—Name to search for — a surname or full name. Required for name mode.
cityString—City to narrow a name search, e.g. "Berlin". Optional — omit for nationwide results in each country.
phoneString—Phone number for a reverse lookup, e.g. "030 3134894" or "+43 1 4032202". Required for phone mode.
maxItemsInteger10Maximum 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 resumeCursor is no longer valid.
  • resumeCursor is 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"
}
FieldTypeDescription
source_countryStringDE, CH, or AT — which country this listing is from.
source_siteStringThe national directory the listing came from.
listing_idStringThe source's internal listing identifier.
listing_typeStringprivate or business.
full_nameStringName as listed.
first_nameStringGiven name, when the source separates it. null for German listings, which do not split names.
last_nameStringFamily name, when the source separates it. null for German listings, which do not split names.
phoneStringLandline number as displayed, when the number is a landline.
mobileStringMobile number as displayed, when the number is a mobile. Mutually exclusive with phone.
phone_e164StringPhone number normalised to E.164, e.g. +49303134894.
street_addressStringStreet address, when listed.
postal_codeStringPostal code, when listed.
cityStringCity.
districtStringGerman Stadtteil (e.g. Charlottenburg) or Swiss canton (e.g. ZH), when the source exposes one.
websiteStringHomepage link, when the listing includes one. Sparse — most listings don't carry one.
listing_urlStringDirect URL to the listing on its source site.
query_termStringThe name your search requested (name mode only).
query_locationStringThe city your search requested (name mode only).
query_phoneStringThe phone your search requested (phone mode only).
result_rankIntegerPosition of this listing within its search's result set.
scraped_atStringISO 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