Das Oertliche Scraper avatar

Das Oertliche Scraper

Pricing

Pay per event

Go to Apify Store
Das Oertliche Scraper

Das Oertliche Scraper

🇩🇪 Scrape Das Örtliche by keyword and city for German business leads with names, addresses, phones, websites, emails, ratings, and profile URLs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Extract public German local-business listings from Das Örtliche by keyword and city. Use it to build lead lists, verify contact details, and enrich CRM or local SEO workflows with structured business data.

What does Das Oertliche Scraper do?

Das Oertliche Scraper searches dasoertliche.de result pages and saves public business listings to an Apify dataset.

It can:

  • 🔎 Search by business keyword and German city
  • 🧾 Read existing Das Örtliche result URLs
  • ☎️ Extract public phone and fax numbers
  • 🌐 Open profile pages for public website and email links
  • 📍 Parse address components such as street, postal code, city, and district
  • ⭐ Capture rating and review count when visible
  • 🧹 Deduplicate overlapping leads by profile URL and phone

Who is it for?

This actor is designed for teams that need German local directory data in a repeatable workflow. Each persona below can turn the same Das Örtliche search inputs into a different operational workflow.

💼 B2B sales and SDR teams

  • Build city-by-city prospect lists for dentists, installers, agencies, restaurants, and other local services.
  • Export phone numbers, websites, categories, and source URLs into CRM enrichment or outbound sequencing tools.
  • Re-run the same keyword and city combinations regularly to find new local businesses.

📈 Local SEO and citation agencies

  • Map competitor presence across German cities and business categories.
  • Check whether clients have consistent directory profiles, phone numbers, websites, and category labels.
  • Collect profile URLs that analysts can review before citation cleanup or local ranking reports.

🧑‍💼 Recruiters, staffing, and partnerships teams

  • Research regional employers by industry and location before outreach campaigns.
  • Prioritize companies with public websites, phone numbers, review counts, and active directory listings.
  • Build territory lists for field recruiters, franchise teams, or partner managers.

🏢 Market research and data operations teams

  • Size local business categories across selected German cities with repeatable inputs.
  • Enrich internal company records with public address, phone, category, website, and source metadata.
  • Feed normalized JSON, CSV, Excel, or API output into downstream dashboards and data QA workflows.

Why use it?

Manual Das Örtliche searches are fine for a few contacts, but they do not scale. This actor turns repeated searches into a structured dataset with consistent fields, export formats, and API access.

Use it when you need:

  • Faster lead collection across many cities
  • A repeatable enrichment process
  • Standard JSON, CSV, Excel, or API output
  • A transparent source URL for every record
  • Optional profile-page enrichment for public email and website links

What data can it extract?

FieldDescription
nameBusiness or professional name
profileUrlDas Örtliche detail page URL
categoryMain category shown in the result
categoriesCategory/snippet terms split into a list
streetAddressStreet and house number when parsed
postalCodeGerman postal code
cityCity from the listing
districtDistrict/neighborhood when shown
phonePublic telephone number
faxPublic fax number when available
emailPublic email from the profile page when available
websitePublic website from the profile page when available
ratingPublic rating score when visible
reviewCountNumber of public reviews when visible
openingStatusOpening-hours status text when visible
sourceKeywordKeyword used for the search
sourceCityCity used for the search
positionSearch result position
scrapedAtISO timestamp of extraction

How much does it cost to scrape Das Örtliche leads?

The actor uses pay-per-event pricing.

  • A small start event is charged once per run.
  • A result event is charged for each saved listing.
  • Your final run cost depends on maxItems, detail enrichment, and proxy settings.

For the cheapest first run, keep maxItems low and leave proxy disabled unless you see rate limiting.

How to use Das Oertliche Scraper

  1. Open the actor on Apify.
  2. Enter one or more keywords, for example Zahnarzt or Steuerberater.
  3. Enter one or more German cities, for example Berlin or München.
  4. Set maxItems to the number of listings you need.
  5. Keep includeDetails enabled if you need public website and email fields.
  6. Run the actor.
  7. Export the dataset as JSON, CSV, Excel, XML, or HTML.

Input options

Keywords

Use business categories, services, professions, or company types.

Examples:

  • Zahnarzt
  • Steuerberater
  • Rechtsanwalt
  • Physiotherapie
  • Friseur

Cities

Use German cities or localities supported by Das Örtliche.

Examples:

  • Berlin
  • Hamburg
  • München
  • Köln
  • Dresden

Exact keyword/city pairs

Use searchQueries when each keyword should only run against a specific city.

[
{ "keyword": "Steuerberater", "city": "München" },
{ "keyword": "Zahnarzt", "city": "Berlin" }
]

Start URLs

You can paste Das Örtliche result URLs directly.

[
{ "url": "https://www.dasoertliche.de/?form_name=search_nat&kw=Zahnarzt&ci=Berlin" }
]

Example input

{
"keywords": ["Zahnarzt"],
"cities": ["Berlin"],
"maxItems": 50,
"includeDetails": true,
"useApifyProxy": false
}

Example output

{
"name": "KU64 Dr. Ziegler & Partner",
"profileUrl": "https://www.dasoertliche.de/?form_name=detail&id=...",
"category": "Zahnärzte",
"streetAddress": "Kurfürstendamm 64",
"postalCode": "10707",
"city": "Berlin",
"district": "Charlottenburg",
"phone": "030 8 64 73 20",
"email": "info@example.de",
"website": "http://example.de",
"sourceKeyword": "Zahnarzt",
"sourceCity": "Berlin",
"position": 1,
"scrapedAt": "2026-07-03T00:00:00.000Z"
}

Tips for better results

  • Use German business terms rather than broad English categories.
  • Start with one city and a small maxItems value.
  • Enable proxy only if direct requests are rate-limited.
  • Use exact searchQueries for carefully planned regional campaigns.
  • Keep includeDetails enabled when email and website fields matter.

Lead generation workflows

Common workflows include:

  • Build a list of dentists in Berlin.
  • Find tax advisors in Munich.
  • Map tradespeople across several German cities.
  • Enrich CRM rows with public website and phone fields.
  • Compare local competitors for agency audits.

Local SEO workflows

Agencies can use the actor to check category coverage, discover competitors, and build citation-audit source lists.

Useful columns for SEO work:

  • name
  • category
  • address
  • phone
  • website
  • profileUrl

CRM enrichment workflows

Export results to CSV or call the Apify API to feed records into HubSpot, Pipedrive, Salesforce, Airtable, Google Sheets, or a warehouse.

Match records by:

  • Company name
  • Phone number
  • Website domain
  • Postal code and city

Integrations

Apify datasets can connect to many tools.

  • 📊 Google Sheets for review and cleanup
  • 🧲 CRM systems for sales outreach
  • 🗄️ BigQuery or Snowflake for analysis
  • 🔁 Make, Zapier, or n8n for automations
  • 🧪 Custom Node.js or Python scripts through the Apify API

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/das-oertliche-scraper').call({
keywords: ['Zahnarzt'],
cities: ['Berlin'],
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Using the API with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/das-oertliche-scraper').call(run_input={
'keywords': ['Zahnarzt'],
'cities': ['Berlin'],
'maxItems': 50,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Using cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~das-oertliche-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"keywords":["Zahnarzt"],"cities":["Berlin"],"maxItems":50}'

MCP usage

Use this actor through Apify MCP tools in Claude Code, Claude Desktop, or compatible MCP clients.

MCP tool URL:

https://mcp.apify.com/?tools=automation-lab/das-oertliche-scraper

Add it in Claude Code:

$claude mcp add apify-das-oertliche --transport http https://mcp.apify.com/?tools=automation-lab/das-oertliche-scraper

Claude Desktop JSON config example:

{
"mcpServers": {
"apify-das-oertliche": {
"url": "https://mcp.apify.com/?tools=automation-lab/das-oertliche-scraper"
}
}
}

Example prompts:

  • "Run Das Oertliche Scraper for tax advisors in Munich and summarize the top websites."
  • "Find 100 dentists in Berlin and return a CSV-ready table."
  • "Compare categories for electricians in Hamburg from Das Örtliche results."

Proxy and reliability notes

Direct HTTP is used by default to reduce cost. If Das Örtliche rate-limits your workload, enable Apify Proxy and start with a low-cost proxy group before using residential proxies.

The actor retries transient HTTP errors and skips detail enrichment failures without losing the base listing.

FAQ and troubleshooting

Why are email or website fields empty?

Not every Das Örtliche listing exposes email or website links. Keep includeDetails enabled, and remember that the actor only extracts public links visible on the profile page.

Why did I get fewer rows than maxItems?

The source may have fewer matching listings than requested, or duplicate records may be removed when searches overlap.

Why does a city return no results?

Check the spelling and try the same keyword/city on Das Örtliche manually. Some smaller locations may require nearby city names.

Data freshness

Each run fetches current public pages from Das Örtliche and saves a scrapedAt timestamp. Schedule runs if you need recurring refreshes.

Legality and responsible use

This actor extracts publicly available business directory information. You are responsible for using the data lawfully, respecting applicable privacy, database, anti-spam, and terms-of-service requirements. Do not use scraped contact data for unlawful outreach.

You may also find these automation-lab actors useful:

Changelog

Initial version extracts Das Örtliche result listings with optional profile-page enrichment.

Support

If you need a field that is visible on Das Örtliche but not returned by this actor, open an Apify issue with an example URL and expected field.