DUB.de Scraper - Businesses for Sale in Germany avatar

DUB.de Scraper - Businesses for Sale in Germany

Pricing

from $2.10 / 1,000 company listings

Go to Apify Store
DUB.de Scraper - Businesses for Sale in Germany

DUB.de Scraper - Businesses for Sale in Germany

Scrape companies for sale from DUB.de (Unternehmensbörse): revenue, earnings, employees, region, industry, reason for selling and year-by-year financials with forecasts. Germany, Austria and Switzerland. Filter by region, industry or new listings. Export to Excel, CSV, JSON or API.

Pricing

from $2.10 / 1,000 company listings

Rating

0.0

(0)

Developer

Shivam Prajapati

Shivam Prajapati

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

DUB.de Scraper - Businesses for Sale in Germany, Austria & Switzerland

Get companies and businesses for sale from DUB.de, the German-speaking world's large business marketplace (Deutsche Unternehmerbörse), as clean, ready-to-use data: revenue, earnings, employees, location, industry, reason for selling, shares offered and year-by-year financials including the seller's forecast. Search by region, industry, keyword, financial range or just grab the newest listings every day. Built for search funders, private equity, M&A advisors and strategic buyers looking at the DACH SME market.

Actively maintained. Last update: 2026-11-04. Every release passes 1,300+ automated tests on saved DUB.de pages plus a check against the live site, and Apify test-runs it every day.

Auf Deutsch: Unternehmensbörse-Daten von DUB.de – Unternehmen kaufen, Firma kaufen, Unternehmensnachfolge, Firmenverkauf und Beteiligungen als Excel, CSV oder API.

What can you use it for?

  • Find acquisition targets in the DACH region. Search funders, private equity, family offices and strategic buyers can screen hundreds of German, Austrian and Swiss SMEs by revenue, earnings, employees and region in one spreadsheet.
  • Succession deals (Unternehmensnachfolge). Filter for owners retiring (succession_planning), one of the biggest sources of small-business deals in Germany.
  • Daily deal alerts. Run it every morning with Only listings from the last N days = 1 and send only fresh deals to Google Sheets, Slack or email with Apify integrations.
  • Valuation and market research. Compare revenue, earnings and margins by industry and region, and track how the market changes over time.
  • Lead generation for M&A advisers, banks and lawyers. See which companies in your region are about to change hands.

What data do you get?

Fields marked details are filled when Open each listing for full details is on (the default).

FieldWhat it is
listingIdDUB.de listing ID
urlLink to the listing (Exposé)
titleListing headline (German)
revenueAnnual revenue (Umsatz)
earningsAnnual earnings (Ergebnis), can be negative
currencyCurrency of revenue and earnings, e.g. EUR or CHF
employeesNumber of employees
locationLocation as shown on DUB.de
regionState or region, e.g. Bayern, Tirol, Zug
countryCountry, e.g. Deutschland, Österreich, Schweiz
countryCodeTwo-letter country code: DE, AT, CH, ...
industryIndustry category, e.g. "Bauunternehmen / Baudienstleistungen / Bauhandel" (details)
saleReasonReason for selling as written on DUB.de, e.g. "Altersnachfolge" (details)
saleReasonCodeThe same as a stable code: succession_planning, strategic_sale, personal_reorientation, carve_out, distressed, insolvency, other (details)
sharesForSaleShares offered as written on DUB.de, e.g. "100%-Verkauf" (details)
shareTypeCodesThe same as codes: full_sale, majority, minority (details)
descriptionCompany description
productsServicesProducts and services (details)
customersCustomers (details)
marketMarket (details)
competitionCompetition (details)
financialHistoryRevenue and earnings per past year, e.g. 2023-2025 (details)
financialForecastThe seller's revenue and earnings forecast per future year (details)
isAutoTranslatedtrue if DUB.de machine-translated the listing from another language (details)
hasDetailstrue if the listing page was opened for full details
foundOnThe search page where the listing was found
scrapedAtWhen it was scraped (UTC)

Listings are written in German, so text fields are German. DUB.de does not publish asking prices (they are shared with buyers on request), so there is no price field. We do not collect seller or broker contact details.

Example result

{
"listingId": "65831868-61f7-439d-8188-34236d9f787b",
"url": "https://www.dub.de/de/unternehmen-kaufen/expose/tief-und-asphaltbauunternehmen-fuer-die-kritische-infrastruktur/",
"title": "Tief- und Asphaltbauunternehmen für die kritische Infrastruktur",
"revenue": 6515000,
"earnings": 1143000,
"currency": "EUR",
"employees": 40,
"region": "Bayern",
"country": "Deutschland",
"countryCode": "DE",
"industry": "Bauunternehmen / Baudienstleistungen / Bauhandel",
"saleReason": "Altersnachfolge",
"saleReasonCode": "succession_planning",
"sharesForSale": ["100%-Verkauf", "Mehrheitsbeteiligung"],
"shareTypeCodes": ["full_sale", "majority"],
"financialHistory": [{"year": 2025, "revenue": 6515000, "earnings": 1143000}],
"hasDetails": true
}

How to use it

  1. Pick Regions / countries, Industries, a Keyword or financial filters, or paste DUB.de search URLs.
  2. Set Maximum listings.
  3. Click Start, then download the results as Excel, CSV or JSON, or send them anywhere with Apify integrations.

Leave everything empty and you get the newest companies for sale.

Input options

OptionWhat it does
locationsGerman states, Austrian and Swiss regions, or whole countries
industriesDUB.de industry groups (Handwerk, Produktion, Software & IT, ...)
keywordFree-text search, e.g. "Bäckerei" or "Pflegedienst"
newListingsDaysOnly listings added in the last N days (0 = all)
revenueMin / revenueMaxAnnual revenue range
earningsMin / earningsMaxAnnual earnings range
employeesMin / employeesMaxEmployee count range
saleReasonsOnly these reasons for selling, e.g. succession
shareTypes100% sale, majority or minority stake
startUrlsDUB.de search URLs (set filters on dub.de and copy the address) or single listing URLs
includeDetailsOpen each listing for the full set of fields (default on). Turn off for a fast, cheaper run
onlyNewSkip listings that earlier runs of the same search returned: you get and pay only for ones you haven't had (the first run works as usual)
maxItemsStop after this many listings
maxConcurrencyPages loaded at the same time (keep low to be polite)

Fast mode vs. full details

  • Full details (default): opens every listing. Gives all fields above, including year-by-year financials.
  • Fast mode (includeDetails off): reads only the search results, about 10x faster and cheaper. You still get title, revenue, earnings, employees, location and the full description. DUB.de's search results show "€" for every listing, so in fast mode currency is left empty outside the euro zone (for example Swiss listings in CHF) rather than being wrong. Full details always have the right currency.

How much does it cost?

You pay $3.00 per 1,000 listings returned (plus a tiny $0.00005 per run start). Platform usage is included.

ListingsCost
100$0.30
1,000$3.00
All ~2,000 listings on DUB.deabout $6

Apify's free plan gives you $5 of credit every month, which covers about 1,600 listings. Set a spending limit on any run and the scraper stops exactly there.

Use it via API, on a schedule, or with your tools

  • Schedule it daily with Only listings from the last N days = 1 to get every new deal automatically.
  • Only new listings: turn it on in a scheduled run or task and each run returns only listings you haven't had yet, so you never pay twice for the same listing.
  • Integrations: send results to Google Sheets, Slack, email, Zapier, Make or a webhook.
  • API: run it from your own code and download results as JSON, CSV or Excel.
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("pshivam/dub-de-scraper").call(run_input={"locations": ["de-by", "AT"], "maxItems": 200})
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
print(company["title"], company["revenue"], company["earnings"], company["region"])

Use it in Clay, n8n, Make or Zapier

Actor: pshivam/dub-de-scraper. Paste this input and change the filters to yours:

{"locations": ["DE"], "newListingsDays": 7, "onlyNew": true, "maxItems": 500}
  • Clay: create a table from an Apify source to pull in the results of a scheduled run of this Actor (it refreshes every 24 hours by default), or use the Run Apify Actor enrichment and paste the input.
  • n8n: add the Apify node, choose Run Actor and get dataset items, pick this Actor and paste the input.
  • Make: use Run an Actor with Run synchronously on, then Get Dataset Items with the run's dataset ID.
  • Zapier: schedule this Actor in Apify, then use the Finished Actor Run trigger and Fetch Dataset Items. (Zapier stops waiting for Run Actor after 30 seconds, and a run usually takes about a minute.)

Good to know

  • Filters run on DUB.de itself, so you only pay for listings that match. One exception: DUB.de's industry groups can't be combined with other filters on the site, so when you pick Industries, region and number filters are checked on each listing by the scraper instead, and keyword / newListingsDays are ignored.
  • No duplicates. A listing found by several searches is returned once.
  • You pay per listing returned. The run stops at your Maximum listings or at your spending limit, whichever comes first.
  • Removed listings are skipped and replaced with the next one.

This scraper vs. the alternatives

This scraperCopying from DUB.de by handBuilding your own scraper
100 listings with full detailsAbout 1 minuteHours (open and copy each page)Days to build, then upkeep
OutputExcel, CSV, JSON or API; 27 fields per listingA spreadsheet you typeWhatever you code
Revenue, earnings, year-by-year financialsNumbers with currency, ready to sortRetyped by handYou write the parsing
Only new listings each dayBuilt in (onlyNew)Compare lists yourselfYou build it
When the site changesWe fix it; Apify test-runs it daily-You fix it
Seller contact detailsRemovedYour responsibilityYour responsibility
Cost$3.00 per 1,000 listingsYour timeYour time plus hosting

FAQ

How much does it cost?

$3.00 per 1,000 listings (less on paid Apify plans), so 100 companies cost $0.30.

Which countries does it cover?

Germany, Austria and Switzerland: all 16 German states plus Austrian states and Swiss cantons (300 regions in total). Listings are in German; field names and codes are in English.

This scraper only reads public pages that the site's robots.txt allows, at a polite speed, and collects business data, not personal data. You are responsible for how you use the data; check the site's terms for your use case.

Why is there no asking price?

DUB.de doesn't publish asking prices; sellers share them with interested buyers after contact.

Can I get the seller's contact details?

No. Contact details are only available to registered buyers on DUB.de. Use the listing url to get in touch through DUB.de.

Something is missing or broken?

Open an issue on the Actor's Issues tab and we will fix it fast.

How do I get only new listings every day?

Save your search as a task, turn on Only new listings and schedule it daily. Each run then skips the listings earlier runs returned, so you get and pay only for ones you haven't had. Tip: set Maximum listings above the number of listings your search has, so the first run gets them all and later runs return just the new ones.

Ready-made examples

Open one, click Try for free, and get data in about a minute:

More business-for-sale scrapers

Other scrapers