Das Telefonbuch Scraper - German Business Leads & New Listings avatar

Das Telefonbuch Scraper - German Business Leads & New Listings

Pricing

from $3.50 / 1,000 business returneds

Go to Apify Store
Das Telefonbuch Scraper - German Business Leads & New Listings

Das Telefonbuch Scraper - German Business Leads & New Listings

For B2B lead lists and local sales teams: German businesses from Das Telefonbuch by category or company name and city, district or postcode, with name, address, phone in +49 format, website, category and rating. Monitor returns only newly listed businesses. Businesses only, no private persons.

Pricing

from $3.50 / 1,000 business returneds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Get German business listings from Das Telefonbuch (dastelefonbuch.de) as clean JSON: business name, categories (Branchen), street, postcode, city and district, phone number as shown and in +49 (E.164) format, website and its domain, rating, and whether it is a paid premium listing. Search by category (Zahnarzt, Rechtsanwalt, Friseur, Steuerberater, Restaurant ...) or by company name, in any German city, district or postcode. Turn on Monitor mode and scheduled runs return only businesses that are newly listed since the last check - new practices, new shops, new offices - so a lead list, CRM or local sales team gets the new ones without paying for the same businesses again.

  • Businesses only - no private persons. This Actor uses the directory's business search (Branchen) and company search (Firmen). It never searches people's names, and every row is checked: a listing that Das Telefonbuch does not mark as a business is never returned.
  • New listings monitor. onlyNew reads the whole list of each search and returns only businesses that were not on it at the previous check (changeType: new). Runs where nothing is new return one free row that says so.
  • Honest about the 500 limit. Das Telefonbuch shows at most 500 businesses for one search (50 pages of 10). When a list is bigger, the free row says so and tells you to search by district (Berlin-Charlottenburg) or postcode (10707). A monitor never pretends to watch a list it cannot see completely.
  • Phone numbers ready to dial. phone is the number exactly as the directory shows it (030 8 64 73 20); phoneE164 is the same number as +49308647320.
  • No charge when the directory cannot be read. Pages that could not be read, a place or category the directory does not know, and a monitor list that could not be read completely come back as free rows that say why.
  • Several searches in one run. Categories and company names times locations, up to 10 searches per run.
  • Fast. One page is 10 businesses: production runs on 2026-09-24 took 4-8 s for 17-50 businesses and 5-7 s for a monitor check of a 17-business list, at 256 MB.

Unofficial. Reads the public Das Telefonbuch business listing pages (/Branchen/... and /Firmen/...), the same pages a person sees without logging in. It does not open private (residential) listings, does not decode protected e-mail addresses, and does not solve or bypass check pages. Only publicly listed business information is returned.

What you get

One row per business. Example (a production run on 2026-09-24, category Zahnarzt in 10707):

{
"status": "ok",
"changeType": null,
"businessName": "KU64 Dr. Ziegler & Partner",
"categories": ["Zahnärzte"],
"keywords": ["Zahnarzt Berlin", "Zahnärzte", "Zahnklinik Berlin", "Zahnmedizin Berlin"],
"street": "Kurfürstendamm 64",
"postalCode": "10707",
"city": "Berlin",
"district": "Charlottenburg",
"address": "Kurfürstendamm 64, 10707 Berlin",
"phone": "030 8 64 73 20",
"phoneE164": "+49308647320",
"website": "http://ku64.de",
"websiteDomain": "ku64.de",
"rating": 3.5,
"ratingCount": 51,
"isPremiumListing": true,
"listingId": "0001131496977",
"detailUrl": "https://adresse.dastelefonbuch.de/Berlin/1-Zahnarzt-KU64-Dr-Ziegler-Partner-Berlin-Kurf%C3%BCrstendamm.html",
"positionInSearch": 1,
"listingsInSearch": 17,
"listingsInSearchIsLowerBound": false,
"directoryHeading": "Zahnarzt in 10707",
"searchType": "category",
"searchWhat": "Zahnarzt",
"searchWhere": "10707",
"searchUrl": "https://www.dastelefonbuch.de/Branchen/Zahnarzt/10707",
"watchName": null,
"checkedAt": "2026-09-24T12:18:59.952Z"
}

Checked against the same Das Telefonbuch pages in a browser after the runs: 15 of 15 businesses from three production runs had the same name, street, postcode, website and the same phone number on screen.

ColumnMeaning
statusok for a business row. Other values are free rows that say why nothing (or not everything) was returned (below)
changeTypeMonitor mode only: first-check (first run of this watch) or new (not on the list at the previous check). Null when monitor mode is off
businessNameName as listed
categories, keywordsThe directory's categories (Branche) and keywords (Stichworte) for the business, when listed
street, postalCode, city, district, addressAddress as listed; address joins street, postcode and city
phone, phoneE164Phone as shown, and the same number in international format (+49...). Null when the listing has no phone
website, websiteDomainWebsite link as listed, and its domain without www.
rating, ratingCountAverage rating (1-5) and number of ratings shown on the listing; null when there are none
isPremiumListingTrue when the listing is a paid premium entry
listingId, detailUrlThe directory's listing ID and its detail page
positionInSearchPosition in the list of this search (1 = first)
listingsInSearch, listingsInSearchIsLowerBoundNumber of businesses the directory reports for this search. For 1,000 or more it only says "> 999": then listingsInSearch is null and listingsInSearchIsLowerBound is true
directoryHeadingThe heading of the result page, for example Zahnarzt in 10707
searchType, searchWhat, searchWhere, searchUrlThe search this row came from
noteFree rows only: why nothing (or not everything) was returned
watchName, checkedAtThe watch name you gave, and the time of the check

Free rows (not charged)

statusWhen
no-resultsThe directory lists no business for this search
not-foundThe directory does not know this category, company name or place (check the German spelling, for example München)
no-new-listingsMonitor mode: nothing on the list is new since the previous check
more-not-returnedMore businesses than maxResultsPerSearch, or more than the 500 the directory shows for one search; says how many and what to do
too-broad-to-watchMonitor mode: the list has more than 500 businesses, so it cannot be watched completely. Nothing is charged or remembered; watch districts or postcodes instead
not-checkedMonitor mode: the run already read 60 pages; put this search in its own run
incompleteSome pages of the list could not be read; the businesses before them were returned, the rest were not
unreadableThe directory could not be read, even after asking again from other IP addresses. In monitor mode also when only part of the list could be read (nothing is judged new from a partial list)
blockedThe directory showed a check page. This Actor does not solve or bypass check pages; it stops and does not run the remaining searches
budget-reachedThe run hit the maximum total charge you set. In monitor mode the businesses not returned are not remembered, so the next run returns them
bad-inputThe input could not be used

Input

FieldTypeDefaultDescription
categorieslist of strings-Categories or keywords in German: Zahnarzt, Rechtsanwalt, Friseur, Steuerberater, Restaurant, Physiotherapie ... Leave Categories, Company names and Locations all empty to run the example Zahnarzt in Berlin
companyNameslist of strings-Company names to look up, for example Siemens
locationslist of strings-Cities, districts or postcodes: Berlin, Berlin-Charlottenburg, Frankfurt am Main, München, 10707
maxResultsPerSearchinteger 1-50050Most businesses returned for one search. In monitor mode: most new businesses per search in one run (the rest come next run)
onlyNewbooleanfalseMonitor mode: return only businesses that are new on the list since the previous check
watchNamestring-Separate memories for monitor mode, for example one per client
resetMonitoringStatebooleanfalseForget what this watch has seen, so the run is a first check again

Each category and each company name is searched in each location (up to 10 searches per run).

Examples

Dentists in two districts, 100 each:

{ "categories": ["Zahnarzt"], "locations": ["Berlin-Charlottenburg", "Berlin-Wilmersdorf"], "maxResultsPerSearch": 100 }

New law firms and tax advisers in a postcode area, every morning (schedule this input):

{ "categories": ["Rechtsanwalt", "Steuerberater"], "locations": ["60311"], "onlyNew": true, "watchName": "frankfurt-leads" }

A company in a city:

{ "companyNames": ["Siemens"], "locations": ["München"] }

Pricing

Pay per event:

  • Run start - once per run that read the directory: before the first business row is returned, or, in monitor mode, when a whole list was read (also when nothing is new - that pays for the check). Not charged when nothing could be read, the place or category is unknown, or the list is too big to watch.
  • Business returned - per business row.

Free rows are never charged. If you set a maximum total charge for a run, the run stops before it would go over it and says so; a run whose maximum has no room for the start fee plus one business does not request anything.

Monitor mode, step by step

  1. First run: reads the whole list of each search (up to 500 businesses), returns up to maxResultsPerSearch as first-check, and remembers every business on the list as the starting point.
  2. Later runs: read the whole list again and return only businesses that were not on it before, as new.
  3. If a page of a list cannot be read, that list is not judged at all in that run (nothing returned, remembered or charged); the next run checks it again.

Keep one schedule per search and watch name. Two overlapping runs of the same watch can both return the same new business (the memory is a key-value store without transactions).

Limits

  • Das Telefonbuch shows at most 500 businesses for one search. Use districts or postcodes for bigger lists.
  • Very deep pages of a big list (page 40 and later) are slow on the directory's side and sometimes time out (HTTP 504) even after asking again. Then the run returns what it read and an incomplete row says from which page on nothing was returned (in a production run on 2026-09-24, 430 of 500 for dentists in Berlin). Smaller areas avoid deep pages.
  • Only the fields shown on the result list are returned. E-mail addresses (protected on the directory's detail pages) and opening hours are not returned.
  • Private (residential) listings are never returned.
  • Each search is its own list: a business that appears in two of your searches (for example a postcode and the city around it) comes back once for each search. Use listingId to remove duplicates.

Support

Questions, a field you need, or a search that does not work: open an issue on the Issues tab of this Actor.