Das Telefonbuch Scraper avatar

Das Telefonbuch Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Das Telefonbuch Scraper

Das Telefonbuch Scraper

Scrape business and person listings from Das Telefonbuch (dastelefonbuch.de). Extract names, addresses, phone numbers, emails, websites, opening hours, reviews, ratings. JSON/CSV/Excel export. API, MCP, webhook, AI-agent ready.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Scrape Smith

Scrape Smith

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Das Telefonbuch Scraper - German Business & Person Directory

Extract business and person listings from Das Telefonbuch (dastelefonbuch.de), Germany's largest phone and business directory. Get names, addresses, phone numbers, emails, websites, opening hours, reviews, and ratings for any business category or person name across all German cities and regions.

Why this scraper?

  • Richest data available - Up to 30+ fields per listing including aggregated reviews from Google, Yelp, Speisekarte.de, TripAdvisor, Facebook, and golocal
  • Full contact details - Phone, fax, mobile, email, and website extracted and decoded automatically
  • Structured opening hours - Weekly schedule broken down by day, not just a summary
  • Multi-source review aggregation - External review sources with per-source ratings, review counts, and individual review text
  • Business & person search - Toggle between business directory (Branchenbuch) and residential phonebook (Telefonbuch)
  • No setup required - Works out of the box, no API keys or accounts needed
  • Fast & affordable - Thousands of results in minutes at a fraction of manual research cost
  • Reliable - Automatic retry logic and state persistence for long-running jobs
  • Export anywhere - JSON, CSV, Excel, XML with one click

What data do you get?

Every listing includes up to 30+ fields:

Core fields (always available)

FieldTypeDescription
idstringUnique listing identifier
namestringBusiness or person name
addressstringFull formatted address (street, PLZ, city, district)
streetstringStreet name and house number
postalCodestring5-digit German postal code (PLZ)
citystringCity name
districtstringCity district or Stadtteil
countrystringCountry code (always "DE")
phonestringFull phone number
websitestringBusiness website URL
categorystringBusiness category (Branche)
ratingnumberAggregate star rating (0-5)
reviewCountintegerTotal review count
logoUrlstringBusiness logo image URL
openingSummarystringQuick opening status text
sourceUrlstringOriginal listing page URL
searchTypestring"business" or "person"
scrapedAtstringISO 8601 timestamp of extraction

Detail fields (with includeDetails: true)

FieldTypeDescription
emailstringEmail address
faxstringFax number
mobilestringMobile phone number
descriptionstringBusiness description text
openingHoursstringStructured weekly hours (e.g. "Mo 08:00-18:00; Tu 08:00-18:00")
cuisinestringCuisine type (for restaurants)
searchKeywordsarrayBusiness search keywords and tags
servicesarrayListed services and specialties
externalReviewSourcesarrayPer-source review breakdown with source name, rating, count, and URL
recentReviewsarrayIndividual reviews with author, date, text, rating, and source

Input parameters

ParameterTypeRequiredDefaultDescription
searchQuerystringYes-Business category, name, or keyword. Examples: "Restaurant", "Rechtsanwalt", "Zahnarzt", "Friseur", "Hotel", "Steuerberater"
locationstringYes-German city, town, or region. Examples: "Berlin", "Hamburg", "Munchen", "Koln", "Frankfurt am Main"
searchTypestringNo"business"Set to "business" for the Branchenbuch or "person" for the residential Telefonbuch
maxItemsintegerNounlimitedMaximum results to return. Leave empty to collect all available results
includeDetailsbooleanNotrueFetch each listing's full profile page for email, hours, reviews, and more. Set to false for faster extraction with fewer fields

Example output

{
"id": "0001131015407",
"name": "Restaurant und Bierhaus Xantener Eck",
"address": "Xantener Str. 1, 10707 Berlin, Wilmersdorf",
"street": "Xantener Str. 1",
"postalCode": "10707",
"city": "Berlin",
"district": "Wilmersdorf",
"country": "DE",
"phone": "030 8 83 90 14",
"fax": "",
"mobile": "",
"email": "mail@das-xantener-eck.de",
"website": "http://www.das-xantener-eck.de",
"category": "Restaurants",
"rating": 1.0,
"reviewCount": 1,
"logoUrl": "",
"openingSummary": "Jetzt geoffnet",
"openingHours": "Mo 12:00-24:00; Tu 12:00-24:00; We 12:00-24:00; Th 12:00-24:00; Fr 12:00-24:00; Sa 12:00-24:00; Su 12:00-24:00",
"cuisine": "Deutsche Kuche",
"description": "Traditionelles Berliner Restaurant mit Biergarten.",
"searchKeywords": ["Berliner Kuche", "Biergarten", "Brunch", "Deutsche Kuche"],
"services": ["Mittagstisch", "Catering", "Veranstaltungen"],
"externalReviewSources": [
{"source": "google", "rating": 4.5, "count": 2061, "url": "https://..."},
{"source": "yelp", "rating": 3.5, "count": 38, "url": "https://..."}
],
"recentReviews": [
{"source": "yelp", "rating": 5.0, "author": "Barbara N.", "date": "15.09.2024", "text": "Tolles Essen und guter Service!"}
],
"sourceUrl": "https://www.dastelefonbuch.de/...",
"searchType": "business",
"scrapedAt": "2026-07-18T17:45:20.000Z"
}

Use cases

Lead generation and sales prospecting

Build targeted B2B lead lists of businesses by category and city. Search for "Rechtsanwalt" (lawyers) in "Frankfurt" or "Zahnarzt" (dentists) in "Berlin" to get complete contact details including phone, email, and website for sales outreach, cold calling, or direct mail campaigns.

Market research and competitive analysis

Analyze business density, average ratings, and competition across German cities. Compare the number of restaurants, their review scores, and service offerings between neighborhoods to identify market gaps and opportunities.

Local SEO and reputation monitoring

Monitor competitor listings, track review scores across Google, Yelp, and other platforms, and audit your own business listing data. Compare opening hours, categories, and service descriptions across competitors in your area.

CRM and database enrichment

Enrich your existing customer or prospect database with verified German business contact details. Match company names and locations to get phone numbers, email addresses, websites, and full postal addresses.

Directory monitoring and change detection

Run the scraper periodically to detect new businesses entering a market, track rating changes over time, or monitor when competitors update their listings, hours, or service offerings.

Restaurant and hospitality intelligence

Extract restaurant data including cuisine type, opening hours, multi-platform review scores, and individual review text. Build datasets for food delivery market analysis, restaurant recommendation systems, or hospitality industry research.

Real estate and location intelligence

Map business density by postal code and district. Identify which areas have the most services, highest-rated businesses, or specific business types to support real estate investment decisions or retail location planning.

API, MCP & integrations

Use this scraper via the Apify API, MCP server, or integrate with your existing tools:

  • REST API - Call via https://api.apify.com/v2 from any language (Python, JavaScript, Java, Go, Ruby, PHP, etc.)
  • MCP server - Connect directly to AI agents like Claude, ChatGPT, or custom LLM pipelines for real-time data access
  • JavaScript/TypeScript - npm install apify-client for Node.js integration
  • Python - pip install apify-client for Python scripts, Jupyter notebooks, and data pipelines
  • Webhooks - Trigger on completion for automated ETL pipelines
  • Integrations - Works with n8n, Make (Integromat), Zapier, LangChain, LlamaIndex, and any HTTP-capable tool
  • Scheduled runs - Set up recurring extractions (daily, weekly, monthly) for ongoing monitoring
  • Export formats - JSON, CSV, Excel (XLSX), XML, RSS

Python integration example

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("YOUR_ACTOR_ID").call(run_input={
"searchQuery": "Restaurant",
"location": "Berlin",
"maxItems": 100,
"includeDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['name']} - {item['phone']} - {item['email']}")

JavaScript integration example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('YOUR_ACTOR_ID').call({
searchQuery: 'Zahnarzt',
location: 'Hamburg',
maxItems: 50,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(`${item.name} - ${item.phone}`));

Tips for best results

  • Be specific with search queries - "Italienisches Restaurant" returns more targeted results than just "Restaurant"
  • Use German terms - The directory uses German-language categories. "Rechtsanwalt" works better than "lawyer"
  • Start small - Test with maxItems: 10 to verify the output matches your needs before running a large extraction
  • Detail mode tradeoff - Setting includeDetails: false is 3-5x faster but misses email, hours, and reviews. Use it when you only need names, addresses, and phone numbers
  • Common search categories - Restaurant, Hotel, Arzt (doctor), Zahnarzt (dentist), Rechtsanwalt (lawyer), Friseur (hairdresser), Steuerberater (tax advisor), Handwerker (tradesman), Apotheke (pharmacy), Autowerkstatt (car repair)

FAQ

How many results can I get? There is no hard limit. The scraper follows pagination automatically to collect as many results as exist for your search query and location combination.

Does it work for all German cities? Yes. Any city, town, or region listed in Das Telefonbuch is supported, from major cities like Berlin, Hamburg, and Munich to small towns and rural areas.

What is the difference between basic and detail mode? Basic mode (includeDetails: false) extracts data from search result pages only, which is fast but returns fewer fields (no email, opening hours, or reviews). Detail mode (includeDetails: true, the default) visits each listing's full profile page to extract email addresses, structured opening hours, review data, search keywords, services, and business descriptions.

Can I search for specific businesses by name? Yes. Enter the business name as searchQuery and the city as location. For example, search for "Adlon" in "Berlin" to find the Hotel Adlon.

What review sources are included? The scraper collects reviews aggregated from Google, Yelp, Speisekarte.de, TripAdvisor, Facebook, and golocal. Each source includes its own rating and review count, plus individual review text where available.

Can I search for people instead of businesses? Yes. Set searchType to "person" to search the residential phonebook (Telefonbuch) instead of the business directory (Branchenbuch).

How often is the data updated? The scraper extracts live data from Das Telefonbuch on each run. Run it daily, weekly, or monthly depending on your monitoring needs.

What format is the output in? Results are available in JSON, CSV, Excel (XLSX), and XML. You can download them directly from the Apify platform or access them via the API.

Can I filter results by rating or category? The scraper collects all results matching your search. You can filter the output dataset afterward using Apify's built-in dataset filtering or process the data in your own pipeline.

How long does a typical run take? A search with 100 results in detail mode typically completes in 2-5 minutes. Basic mode (without detail pages) is 3-5x faster. Larger extractions scale linearly.

Is there a free tier? Yes. Free users can extract up to 25 results per run to test the scraper before committing to a paid plan.

What happens if a listing has no email or phone? All fields are always present in the output. If a piece of data is not available for a listing, the field will contain an empty string or empty array rather than being omitted. This ensures consistent data structure across all results.