# nexxt-change Scraper - Businesses for Sale & Buyers (`pshivam/nexxt-change-scraper`) Actor

Scrape businesses for sale and buyers looking for a company from nexxt-change, Germany's official succession marketplace: price, revenue and employee bands, region, industry and full description. Filter by region, industry, size or new listings. Export to Excel, CSV, JSON or API.

- **URL**: https://apify.com/pshivam/nexxt-change-scraper.md
- **Developed by:** [Shivam Prajapati](https://apify.com/pshivam) (community)
- **Categories:** Business, Lead generation
- **Security:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## nexxt-change Scraper - Businesses for Sale & Buyers in Germany

Get **both sides of Germany's business succession market** from [nexxt-change.org](https://www.nexxt-change.org), the official succession marketplace backed by the German Federal Ministry for Economic Affairs and KfW: about **6,400 companies for sale** and **2,300 buyers looking for a company**, with price, revenue and employee bands, region, industry and the full description. Filter by region (down to county), industry, size, price or new listings, and export to Excel, CSV, JSON or the API.

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

*Auf Deutsch: Unternehmensnachfolge-Börse nexxt-change – Verkaufsangebote und Kaufgesuche, Unternehmen kaufen, Firma kaufen, Nachfolger finden, als Excel, CSV oder API.*

### What can you use it for?

- **Find acquisition targets.** Search funders, private equity, family offices and entrepreneurs can screen thousands of German SMEs for sale by region, industry, revenue and price band.
- **Find buyers for a business (matchmaking).** M\&A advisors, business brokers, chambers and banks can see who is actively looking for a company in a region and industry, with budget band, and approach them through nexxt-change.
- **Supply vs. demand research.** Compare how many companies are for sale and how many buyers are searching, per industry and region.
- **Daily deal alerts.** Schedule it with *Only listings from the last N days* = 1 and send new sale offers or buy requests to Google Sheets, Slack or email.

### What data do you get?

Every row is either a company for sale (`listingType` = `sale`) or a buyer looking for a company (`listingType` = `buy`). Fields marked *details* are filled when **Open each listing for full details** is on (the default).

| Field | What it is |
|---|---|
| `listingId` | nexxt-change listing ID |
| `listingType` | `sale` (company for sale) or `buy` (buyer looking for a company) |
| `reference` | The listing's reference code (Chiffre), e.g. A-534867 (*details*) |
| `url` | Link to the listing |
| `title` | Headline (German) |
| `date` | Listing date (new or updated), YYYY-MM-DD |
| `status` | `new` or `updated` when the search results mark it |
| `advertiserType` | Owner/company (Privatperson/Firma) or broker (Makler) (*details*) |
| `shortDescription` | Short description |
| `description` | Full description (*details*) |
| `locations` | Regions as "State > District > County". Buyers often list several |
| `state` | German state, when all regions are in one state |
| `district` | Administrative district, for single-region listings |
| `county` | County or city, for single-region listings |
| `industries` | Industries as "Group > Industry". Buyers often list several |
| `industry` | First industry |
| `employeesRange` | Employee band, e.g. "6 - 10 Beschäftigte" (*details*) |
| `employeesMin` / `employeesMax` | The same band as numbers (*details*) |
| `revenueRange` | Annual revenue band, e.g. "über 250 - 500 Tsd. Euro" (*details*) |
| `revenueMinEur` / `revenueMaxEur` | The same band in EUR (*details*) |
| `priceRange` | Asking price band (sale) or budget band (buy) (*details*) |
| `priceMinEur` / `priceMaxEur` | The same band in EUR (*details*) |
| `internationalActivity` | Active internationally (*details*) |
| `hasImage` | Listing has a photo |
| `imageUrl` | Photo URL (*details*) |
| `exposeUrl` | Downloadable exposé (PDF), when the seller provides one (*details*) |
| `hasDetails` | `true` if the listing page was opened for full details |
| `foundOn` | The search page where the listing was found |
| `scrapedAt` | When it was scraped (UTC) |

Open-ended bands have an empty maximum: "über 2,5 Mio. Euro" gives `priceMinEur` 2500000 and `priceMaxEur` null.

#### Privacy

nexxt-change listings are anonymous: they show a reference code, never a name, and contact goes through nexxt-change's own form. This scraper never reads the contact tab, and it **removes any e-mail address, phone number or web link** that a poster typed into the title or description (replaced with `[removed]`). You get market data, not personal data.

#### Example result

```json
{
  "listingId": "408026",
  "listingType": "sale",
  "reference": "AC-A-1574-EX",
  "title": "Unternehmensnachfolge: Know-how der Göllner Maschinenbau GmbH sichern",
  "date": "2026-10-29",
  "advertiserType": "Privatperson/Firma",
  "locations": ["Nordrhein-Westfalen > Köln > Städteregion Aachen"],
  "state": "Nordrhein-Westfalen",
  "industry": "Verarbeitendes Gewerbe > Maschinenbau",
  "employeesRange": "bis 5 Beschäftigte",
  "revenueRange": "über 250 - 500 Tsd. Euro",
  "revenueMinEur": 250000,
  "revenueMaxEur": 500000,
  "priceRange": "über 50 - 250 Tsd. Euro",
  "priceMinEur": 50000,
  "priceMaxEur": 250000,
  "internationalActivity": true,
  "exposeUrl": "https://www.nexxt-change.org/cae/servlet/pdfs/629585/expose.pdf",
  "hasDetails": true
}
```

### How to use it

1. Choose **Listing types**: companies for sale, buyers, or both.
2. Optionally pick **Regions**, **Industries**, a **Keyword** or size/price bands.
3. Set **Maximum listings**, click **Start**, and download the results.

Leave everything empty and you get the newest companies for sale. With several searches (e.g. 3 regions, or sale + buy), *Maximum listings* is shared fairly between them.

#### Input options

| Option | What it does |
|---|---|
| `listingTypes` | `sale` (companies for sale), `buy` (buyers looking for a company), or both |
| `locations` | German states, districts or counties (or abroad) |
| `industries` | Industry groups or single industries |
| `keyword` | Free-text search, e.g. "Bäckerei" or "Software" |
| `excludeKeyword` | Skip listings containing this word |
| `newListingsDays` | Only listings dated in the last N days (0 = all) |
| `revenueRanges` | Annual revenue bands |
| `priceRanges` | Price bands (for buyers: their budget) |
| `employeeRanges` | Employee bands |
| `advertiserTypes` | Owner/company, broker or foreign direct investor |
| `onlyWithExpose` | Only listings with a downloadable exposé |
| `startUrls` | nexxt-change search URLs or single listing URLs |
| `includeDetails` | Open each listing for the full set of fields (default on). Turn off for a fast, cheaper run |
| `onlyNew` | Skip 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) |
| `maxItems` | Stop after this many listings |
| `maxConcurrency` | Pages 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.
- **Fast mode (`includeDetails` off):** reads only the search results, about 5x cheaper. You get title, date, status, region(s), industry and short description.

### 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.

| Listings | Cost |
|---|---|
| 100 | $0.30 |
| 1,000 | $3.00 |
| All ~8,700 listings (sale + buy) | about $26 |

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 listing 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.

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("pshivam/nexxt-change-scraper").call(run_input={"listingTypes": ["sale", "buy"], "maxItems": 200})
for listing in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(listing["listingType"], listing["title"], listing["priceRange"], listing["state"])
```

#### Use it in Clay, n8n, Make or Zapier

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

```json
{"listingTypes": ["sale"], "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 nexxt-change itself**, so you only pay for listings that match. Regions and industries are searched one at a time and combined, with duplicates removed.
- **Bands, not exact numbers.** nexxt-change publishes revenue, price and employee figures as bands; we give you the band text and its numeric range.
- **Listings are in German.** Field names and values like `listingType` are in English.
- **Removed listings are skipped** and replaced with the next one.

### This scraper vs. the alternatives

| | This scraper | Copying from nexxt-change by hand | Building your own scraper |
|---|---|---|---|
| 100 listings with full details | About 1 minute | Hours (open and copy each page) | Days to build, then upkeep |
| Output | Excel, CSV, JSON or API; 32 fields per listing | A spreadsheet you type | Whatever you code |
| Price, revenue and employee bands | Bands plus numeric min/max in EUR | Retyped by hand | You write the parsing |
| Only new listings each day | Built in (`onlyNew`) | Compare lists yourself | You build it |
| When the site changes | We fix it; Apify test-runs it daily | - | You fix it |
| Seller contact details | Removed | Your responsibility | Your responsibility |
| Cost | $3.00 per 1,000 listings | Your time | Your time plus hosting |

### FAQ

#### How many listings are there?

About 6,400 companies for sale and 2,300 buyers looking for a company, across all 16 German states.

#### How much does it cost?

$3.00 per 1,000 listings (less on paid Apify plans), so 100 cost $0.30 and all of about 8,700 cost about $26.

#### What's the difference between sale offers and buy requests?

Sale offers (Verkaufsangebote) are companies looking for a successor or buyer. Buy requests (Kaufgesuche) are people or companies looking to buy a business, with their target region, industry and budget.

#### Is it legal to scrape nexxt-change?

This scraper reads public listing pages at a polite speed and returns anonymous market data; contact details typed into listings are removed. You are responsible for how you use the data; check the site's terms for your use case.

#### Can I contact a seller or buyer?

Use the listing `url`: nexxt-change's own contact form forwards your message to the advertiser.

#### 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:

- [Buyers looking for a company in Germany (Kaufgesuche)](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-buyers-looking-for-a-company)
- [New businesses for sale this week](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-new-businesses-for-sale-this-week)
- [Businesses for sale in Bavaria](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-businesses-for-sale-bavaria)
- [Buyers and sellers in North Rhine-Westphalia](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-buyers-and-sellers-nrw)
- [Craft businesses for sale (Handwerk)](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-craft-businesses-for-sale)
- [Restaurants and hotels for sale](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-restaurants-hotels-for-sale)
- [Large businesses for sale (over €2.5M)](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-large-businesses-for-sale)
- [Businesses for Sale in Baden-Württemberg](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-businesses-for-sale-baden-wuerttemberg)
- [Construction Businesses for Sale](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-construction-businesses-for-sale)
- [Healthcare & Care Businesses for Sale](https://apify.com/pshivam/nexxt-change-scraper/examples/nexxt-healthcare-businesses-for-sale)

### More business-for-sale scrapers

- [DUB.de Scraper - Businesses for Sale in Germany](https://apify.com/pshivam/dub-de-scraper): companies for sale in Germany, Austria and Switzerland with revenue, earnings and year-by-year financials.
- [BusinessBroker.net Scraper - Businesses for Sale](https://apify.com/pshivam/businessbroker-net-scraper): US businesses for sale with asking price, revenue, cash flow and location.
- [Daltons Business Scraper - Businesses for Sale UK](https://apify.com/pshivam/daltons-business-scraper): UK businesses for sale with asking price, leasehold or freehold, turnover, net profit and location.
- [Website Closers Scraper - Online Businesses for Sale](https://apify.com/pshivam/website-closers-scraper): online and tech businesses for sale (eCommerce, SaaS, Amazon FBA) with asking price, cash flow and revenue, plus closed deals for valuation comps.
- [BusinessForSale AU Scraper - Australian Businesses](https://apify.com/pshivam/businessforsale-au-scraper): Australian businesses for sale with asking price, revenue and profit bands, location and category, plus sold businesses for valuation comps.
- [BizBen Scraper - California Businesses for Sale](https://apify.com/pshivam/bizben-scraper): California and other US businesses for sale with asking price, revenue, cash flow, down payment and lease details.
- [Transentreprise Scraper - Businesses for Sale France](https://apify.com/pshivam/transentreprise-scraper): the CCI and CMA chambers' marketplace in France with price, revenue and staff bands, sector, department and region.
- [LINK Business Scraper - Businesses for Sale NZ & AU](https://apify.com/pshivam/link-business-scraper): New Zealand's largest business broker and its Australian offices, with asking price, profit, revenue, industry and location.
- [Bpifrance Transmission Scraper - Businesses for Sale France](https://apify.com/pshivam/bpifrance-transmission-scraper): about 45,000 French businesses and shops for sale from Bpifrance's partner marketplaces, with price, revenue, EBE, staff, sector and region.

### Other scrapers

- [Trade Show Scraper - Worldwide Trade Fair Calendar](https://apify.com/pshivam/trade-show-scraper): trade shows and exhibitions worldwide with dates, venue, city, country, industries and the official website.
- [CeX Scraper - Prices, Trade-In Values & Stock](https://apify.com/pshivam/cex-scraper): CeX (webuy.com) second-hand phones, games and laptops in 11 countries with sell price, cash and voucher trade-in value, stock by store and price history.
- [DealSeek Scraper - Amazon Deals & Promo Codes](https://apify.com/pshivam/dealseek-scraper): Amazon, Walmart and eBay deals in 8 countries with final prices, verified promo codes, coupons and price history.

# Actor input Schema

## `listingTypes` (type: `array`):

Sale offers (companies for sale), buy requests (buyers looking for a company), or both.

## `locations` (type: `array`):

German states, administrative districts or counties. Each region is searched separately and duplicates are removed.

## `industries` (type: `array`):

Industry groups or single industries. Combined with Regions, every industry is searched in every region.

## `keyword` (type: `string`):

Free-text search, e.g. 'Bäckerei', 'Pflegedienst' or 'Software'.

## `excludeKeyword` (type: `string`):

Skip listings containing this word.

## `newListingsDays` (type: `integer`):

0 = all. Counts the listing's date on nexxt-change (new or updated). Use 1 or 7 for daily or weekly monitoring.

## `revenueRanges` (type: `array`):

Only these revenue bands (Letzter Jahresumsatz).

## `priceRanges` (type: `array`):

Only these price bands (Preisvorstellung). For buy requests this is the buyer's budget.

## `employeeRanges` (type: `array`):

Only these employee bands.

## `advertiserTypes` (type: `array`):

Owner/company, broker or foreign direct investor.

## `onlyWithExpose` (type: `boolean`):

Only listings that offer a downloadable exposé (PDF).

## `startUrls` (type: `array`):

nexxt-change search URLs (sale offers or buy requests, with your filters) or single listing URLs.

## `includeDetails` (type: `boolean`):

On: also returns the full description, reference number, advertiser type, all regions and industries, employee/revenue/price bands, international activity, exposé and photo links. Off: about 5x cheaper, returns title, date, region, industry and short description.

## `onlyNew` (type: `boolean`):

Skip listings that earlier runs of this same search already returned, so you never get or pay for the same listing twice. Turn it on for a scheduled run or a saved task to get only what's new each time. The first run works as usual and remembers what it returned, in your key-value store 'nexxt-change-scraper-only-new' (delete it to start over).

## `maxItems` (type: `integer`):

Stop after this many listings. You pay per listing returned.

## `maxConcurrency` (type: `integer`):

How many pages to load at the same time. Keep it low to be polite to the site.

## Actor input object example

```json
{
  "listingTypes": [
    "sale"
  ],
  "newListingsDays": 0,
  "onlyWithExpose": false,
  "includeDetails": true,
  "onlyNew": false,
  "maxItems": 100,
  "maxConcurrency": 4
}
```

# Actor output Schema

## `listings` (type: `string`):

One row per company for sale or buy request, shown with the overview view.

## `numbers` (type: `string`):

Revenue, price/budget and employee bands as numeric ranges for sorting and filtering.

## `runStats` (type: `string`):

Requests made, time spent and number of listings for this run (RUN_STATS record).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "listingTypes": [
        "sale"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pshivam/nexxt-change-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "listingTypes": ["sale"] }

# Run the Actor and wait for it to finish
run = client.actor("pshivam/nexxt-change-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "listingTypes": [
    "sale"
  ]
}' |
apify call pshivam/nexxt-change-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pshivam/nexxt-change-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/G29dv0Ssp2Hqj7A6e/builds/qJ5fM8tsbEqyISFYo/openapi.json
