Discover/DUB API
live

DUB APIdub.de ↗

Search and retrieve company-for-sale listings from DUB.de. Filter by sector, location, revenue, margin, and more. Returns financials, descriptions, and deal data.

Endpoint health
verified 4h ago
search_listings
get_listing
2/2 passing latest checkself-healing
Endpoints
2
Updated
4h ago

What is the DUB API?

The DUB.de API provides 2 endpoints to search and retrieve company acquisition listings from Germany's DUB.de business marketplace. The search_listings endpoint returns paginated summaries across up to 12 listings per page, filterable by sector, location, revenue range, and profit margin. The get_listing endpoint returns the full public exposé for a single company, including structured financials, employee count, sector, and narrative sections.

This call costs1 credit / call— charged only on success
Try it
1-based result page; 12 listings per page.
Free-text keyword matched against listing titles and descriptions. Omitted = all listings.
Comma-separated sector codes from the Sector enum, e.g. online_tech,services. Unknown codes are rejected.
Comma-separated location codes: a lowercase ISO country code for a whole country (e.g. de, at, ch) or country-region for one state/region (e.g. de-by for Bayern, de-nw for Nordrhein-Westfalen, at-9 for Wien). Region codes follow the site's location picker; unknown codes simply match nothing.
Maximum profit margin in percent.
Minimum profit margin in percent.
Maximum annual revenue in EUR.
Minimum annual revenue in EUR.
Comma-separated share-offered codes from the ShareType enum.
Maximum annual earnings (Ergebnis) in EUR.
Minimum annual earnings (Ergebnis) in EUR.
Comma-separated transaction-background codes from the SaleReason enum.
Latest listing activation date, ISO YYYY-MM-DD.
Maximum number of employees.
Minimum number of employees.
Earliest listing activation date, ISO YYYY-MM-DD.
→ api.parse.bot/scraper/c80bf8a4-aed5-4a0f-ac36-c1c16b510d38/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/c80bf8a4-aed5-4a0f-ac36-c1c16b510d38/search_listings?query=Software' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace dub-de-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: DUB.de Unternehmensbörse SDK — search listings and drill into details."""
from parse_apis.dub_de_api import DubDe, Sector, ListingNotFound

client = DubDe()

# Search for tech-sector listings with at least €500k revenue, capped at 5 results.
for summary in client.listing_summaries.search(
    sectors=Sector.ONLINE_TECH,
    revenue_min=500_000,
    limit=5,
):
    print(summary.title, summary.location, summary.revenue_eur)

# Drill down: take the first software-related listing and fetch its full exposé.
hit = client.listing_summaries.search(query="Software", limit=1).first()
if hit is not None:
    listing = hit.details()
    print(listing.title, listing.sector, listing.share_offered)
    print("Employees:", listing.employees)

    # Show narrative sections the seller filled in.
    for section in listing.sections:
        print(f"  [{section.key}] {section.heading}")

    # Show historical/projected financials.
    for fin in listing.financials:
        label = "projected" if fin.projection else "actual"
        print(f"  {fin.year} ({label}): revenue €{fin.revenue_eur}, earnings €{fin.earnings_eur}")

# Point lookup by a known listing_id discovered from the search above.
if hit is not None:
    try:
        detail = client.listings.get(listing_id=hit.listing_id)
        print(detail.title, detail.url)
    except ListingNotFound:
        print("Listing no longer available")

print("exercised: listing_summaries.search / details / listings.get")
All endpoints · 2 totalmissing one? ·

Searches the DUB.de marketplace of companies for sale. Returns one page of up to 12 listing summaries (title, location, revenue, earnings, headcount, teaser description) ordered newest first, plus total_pages and has_more. All filters are optional and combine (AND across filters; multiple values within sectors/locations/share_types/sale_reasons are OR). Pagination is caller-driven via page (1-based, 12 listings per page); page beyond the last returns an empty list. If the keyword matches no listing, listings is empty with total_pages 0 (the site's unrelated suggestions are not returned). Monetary values are integers in EUR as displayed by the site; null means the seller gave no figure. One request per call.

Input
ParamTypeDescription
pageinteger1-based result page; 12 listings per page.
querystringFree-text keyword matched against listing titles and descriptions. Omitted = all listings.
sectorsstringComma-separated sector codes from the Sector enum, e.g. online_tech,services. Unknown codes are rejected.
locationsstringComma-separated location codes: a lowercase ISO country code for a whole country (e.g. de, at, ch) or country-region for one state/region (e.g. de-by for Bayern, de-nw for Nordrhein-Westfalen, at-9 for Wien). Region codes follow the site's location picker; unknown codes simply match nothing.
margin_maxintegerMaximum profit margin in percent.
margin_minintegerMinimum profit margin in percent.
revenue_maxintegerMaximum annual revenue in EUR.
revenue_minintegerMinimum annual revenue in EUR.
share_typesstringComma-separated share-offered codes from the ShareType enum.
earnings_maxintegerMaximum annual earnings (Ergebnis) in EUR.
earnings_minintegerMinimum annual earnings (Ergebnis) in EUR.
sale_reasonsstringComma-separated transaction-background codes from the SaleReason enum.
activation_tostringLatest listing activation date, ISO YYYY-MM-DD.
employees_maxintegerMaximum number of employees.
employees_minintegerMinimum number of employees.
activation_fromstringEarliest listing activation date, ISO YYYY-MM-DD.
Response
{
  "type": "object",
  "fields": {
    "page": "integer, the page returned",
    "has_more": "boolean, true when a later page exists",
    "listings": "array of listing summaries: listing_id (UUID, input for get_listing), slug, title, location (German state/country label), description (teaser), revenue_eur, earnings_eur, employees (integers or null when not stated), url",
    "total_pages": "integer, number of pages for this filter set as reported by the site (0 when nothing matches)"
  },
  "sample": {
    "data": {
      "page": 1,
      "has_more": true,
      "listings": [
        {
          "url": "https://www.dub.de/de/unternehmen-kaufen/expose/profitables-softwarehaus-mit-skalierbarer-technologieplattform/",
          "slug": "profitables-softwarehaus-mit-skalierbarer-technologieplattform",
          "title": "Profitables Softwarehaus mit skalierbarer Technologieplattform",
          "location": "Nordrhein-Westfalen",
          "employees": 17,
          "listing_id": "6eccafbd-818b-4406-9db2-621d9a08d0a6",
          "description": "Zum Verkauf steht ein wachstumsstarkes, inhabergeführtes Softwareunternehmen ...",
          "revenue_eur": 4000000,
          "earnings_eur": 1028000
        }
      ],
      "total_pages": 28
    },
    "status": "success"
  }
}

About the DUB API

Search Company Listings

The search_listings endpoint queries the DUB.de marketplace for companies offered for sale. Results are ordered newest first and paginated at 12 per page. The page parameter controls which page is returned, and total_pages plus has_more in the response let you walk through all results. Filters can be combined: query matches free text against titles and descriptions; sectors accepts comma-separated sector codes (e.g. online_tech,services); locations accepts ISO country codes (de, at, ch) or country-region codes. Financial filters — revenue_min, revenue_max, margin_min, margin_max — are all in EUR and percent respectively. Each listing summary in the listings array includes a listing_id UUID, slug, title, location, and a teaser description.

Retrieve a Full Listing Exposé

Passing a listing_id from search results to get_listing returns the complete public record for that company. The response includes structured financials (an array of {year, revenue_eur, earnings_eur, projection} objects), employees (integer or null), sector and location labels in German, and a description field. The sections array holds narrative content such as products and services, customer profile, and market positioning — each section has a key, heading, and text. Fields are null or empty when the seller has not disclosed them.

Coverage and Data Shape

Listings originate from DUB.de's German-language marketplace. Sector labels and location labels are returned in German as shown on the site. Financial figures are denominated in EUR. The financials array may contain multiple years and can flag projections via the projection boolean. If a seller has not disclosed revenue, earnings, or headcount, those fields are null rather than omitted.

Reliability & maintenanceVerified

The DUB API is a managed, monitored endpoint for dub.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dub.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official dub.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
4h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a deal-flow feed that surfaces new company listings in a target sector using sectors and revenue_min filters.
  • Aggregate financial profiles (revenue, earnings, margins) across a filtered set of listings for acquisition analysis.
  • Monitor DUB.de for new listings in specific German states or countries by combining locations and page pagination.
  • Enrich an M&A pipeline database with full exposé data — description, employees, financials — via get_listing.
  • Screen listings by profit margin range using margin_min and margin_max to find businesses meeting a return threshold.
  • Power a deal alert system that pages through total_pages nightly and flags listings with newly disclosed revenue figures.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does DUB.de offer an official developer API?+
DUB.de does not publish a documented public developer API. Data from the marketplace is accessible through this Parse API.
What financial data does `get_listing` return, and how reliable is it?+
get_listing returns a financials array where each entry contains year, revenue_eur, earnings_eur, and a projection flag. These figures are sourced from the seller's public exposé. When a seller has not disclosed a figure, the field is null. The API does not verify or validate the numbers — they reflect what the seller has published.
How does pagination work in `search_listings`?+
Each call returns up to 12 listings. The response includes total_pages (total page count for the current filter set) and has_more (true if a later page exists). Use the page parameter — 1-based — to iterate. If no listings match the filters, total_pages returns 0.
Are seller contact details or private due-diligence documents included?+
No. The API covers only the public-facing exposé: title, sector, location, description, narrative sections, and disclosed financials. Contact information and non-public deal documents are behind DUB.de's registration flow and are not part of the response. You can fork this API on Parse and revise it to target additional public fields if DUB.de exposes them without authentication.
Can I filter listings by asking price or deal structure?+
The current filters cover revenue range (revenue_min/revenue_max), margin range (margin_min/margin_max), sector, location, and free-text query. Asking price and deal structure (e.g. asset deal vs. share deal) are not available as filter parameters. You can fork this API on Parse and revise it to add those filters if the relevant data is publicly accessible on DUB.de.
Page content last updated . Spec covers 2 endpoints from dub.de.
Related APIs in MarketplaceSee all →
dba.dk API
Search and retrieve detailed listings from Denmark's largest marketplace DBA.dk, including product information, pricing, and seller details across general goods and car categories. Browse marketplace categories, find specific items, and access comprehensive data on both regular listings and automotive inventory.
ebay.de API
Search eBay.de listings with flexible filters to find the products you want, view detailed item information, and check seller feedback ratings to make informed buying decisions. Track sold items and monitor pricing trends across any category.
autoscout24.de API
Access data from autoscout24.de.
nexxt-change.org API
Search and browse company sales listings, buyer requests, and regional business partners on Germany's leading business succession marketplace. Access detailed information about available businesses for sale, acquisition opportunities, and local expertise to support your business succession needs.
dubizzle.com.eg API
Search and browse real estate listings and classifieds from Dubizzle Egypt, view detailed property information, explore available categories and locations, and discover featured agencies with their complete listings. Filter properties by various criteria and access comprehensive data on homes, apartments, and other classified items across Egypt.
kleinanzeigen.de API
Search and retrieve classified ad listings from kleinanzeigen.de. Filter by keyword, category, price range, and sorting order. Supports vehicles, real estate, jobs, electronics, and general products, with full listing details including title, price, description, location, and seller information.
mobile.de API
Access data from mobile.de.
bizbuysell.com API
Search for businesses available for sale across multiple categories and view detailed information about specific listings on BizBuySell.com. Browse business categories to explore different industries and find opportunities that match your investment interests.