nexxt-change Company Sale Listings Scraper
Pricing
from $1.00 / actor start
nexxt-change Company Sale Listings Scraper
Unofficial nexxt-change scraper for public German business succession and company-sale listings. Apply industry, location, revenue, employee, price, advertiser, image, and exposé filters, then export normalized results to JSON, CSV, Excel, or the Apify API.
Pricing
from $1.00 / actor start
Rating
0.0
(0)
Developer
Webdesign Detail
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 days ago
Last modified
Categories
Share
Extract public company-sale listings from the German business succession marketplace nexxt-change.org with your own search criteria. The Actor mirrors the official sales-offer search form, visits matching detail pages sequentially, and saves normalized, export-ready records to the default Apify dataset. Run it from Apify Console without code, schedule recurring searches, call it through the API, or connect the dataset to other Apify integrations.
This is an unofficial Actor. It is not affiliated with, endorsed by, or operated by nexxt-change, the German Federal Ministry for Economic Affairs and Energy, KfW, or Apify.
What this Actor extracts
Each dataset item can include the listing ID and Chiffre, title, publication date, advertiser type, short and long descriptions, location hierarchy, industries, employee range, last annual revenue range, asking-price range, international-activity flag, public image URLs, a public exposé URL, and the responsible regional-partner organization. Money and employee bands are also returned as deterministic numeric minimum and maximum values where the source publishes them.
The Actor intentionally does not use AI, download exposé PDFs, enrich people or companies, send notifications, or write to an external database. It only processes the public HTML needed for the requested run. Contact-person names shown on source pages are not included in the dataset.
Search inputs
The input UI supports the current nexxt-change search criteria:
- Search words or a Chiffre number and excluded words
- Top-level industry sector
- Federal state, or a five-digit postcode with radius
- Annual revenue, employee-count, and asking-price bands
- International activity
- Only listings with an exposé or images
- Advertiser types and regional-partner association
- Advanced exact industry and district hierarchy codes
- Maximum listings, maximum result pages, request delay, and timeout
The top-level sector and state fields are user-friendly selectors. For a source taxonomy below that level, copy the bracketed value from the live form's ad_nace or ad_nuts option into industryCode or locationCode. An advanced code overrides its top-level selector. The source treats state/district and postcode searches as alternatives, so the Actor rejects an input that combines them.
How to use
- Open the Actor's Input tab in Apify Console.
- Enter only the criteria you need. Leave search fields empty to browse the newest public listings, or start with the prefilled
Bäckereiexample. - Choose
maxItemsandmaxPages; keep the one-second request delay unless the source explicitly permits another rate. - Select Start, then open the default dataset to inspect or export the results. For automation, save the input as an Apify Task and run it through schedules, API calls, or integrations.
Example input
{"searchTerm": "Bäckerei","industrySector": "[13]","federalState": "[11]","revenueRanges": ["2", "1"],"onlyWithImages": false,"maxItems": 10,"maxPages": 100,"requestDelaySecs": 1,"requestTimeoutSecs": 30}
All search criteria are optional. An empty search extracts the newest public listings until maxItems is reached. The Console prefill uses “Bäckerei” and 10 items so a first run produces a small, useful sample. Public runs are capped at 1,000 successfully extracted listings and 100 result pages. Split broader research into multiple runs with narrower industry, location, or financial filters.
Output
Results are written one company per item to the default dataset and are available as JSON, JSONL, CSV, Excel, XML, or RSS through Apify. A RUN_SUMMARY record in the default key-value store contains result counts, page counts, detailFailures, searchPageFailures, an isPartial flag, up to 20 typed errors, and timestamps.
{"source": "nexxt-change.org","adId": "810016","url": "https://www.nexxt-change.org/DE/Verkaufsangebot/Detailseite/detailseite_jsp?adId=810016","title": "Existenz zu verkaufen","publicationDate": "2026-08-24","federalState": "Rheinland-Pfalz","industries": ["Handwerk > Lebensmittelgewerbe > Bäcker"],"employeesMin": 0,"employeesMax": 5,"annualRevenueMinEur": 250000,"annualRevenueMaxEur": 500000,"internationalActivity": false,"imageUrls": [],"exposeUrl": null,"scrapedAt": "2026-08-24T19:00:00+00:00"}
Reliable pagination
nexxt-change result links contain a dynamic gtp token and use one-based page values. The earlier reusable crawler calculated the second request with a zero-based loop index, which requested list page 1 again. The source also emits the >p= separator without HTML-escaping its ampersand, so standard parsers can expose it incorrectly as >p=. This Actor restores that separator and follows the exact server-provided token and page value; it does not reconstruct them. It also deduplicates listing IDs, detects repeated page URLs, and stops at the end of results or the configured limits.
Every transient network failure, incomplete response body, HTTP 408/429 response, and HTTP 500–504 response is attempted up to five times with logged exponential backoff. If the first search page remains unavailable, the run fails because no valid result set exists. If a later search page remains unavailable after at least one page was processed, the run succeeds with the records already written and marks RUN_SUMMARY.isPartial as true. A failed detail page is skipped and reported the same way, so users can distinguish complete output from an intentionally preserved partial result.
Pricing
The recommended public launch setting is pay per usage. There is no separate Publisher fee: users pay only the Apify platform resources consumed by their run. A default 10-item run normally makes one search-page request plus one detail-page request per discovered listing. Cost grows mainly with the requested page and listing limits, network retries, and run duration. The Actor uses 256 MB by default and does not use a browser, residential proxy, AI service, or other paid third-party API. Check the estimated and final usage on the run page in Apify Console.
Responsible operation
Requests are sequential. The default delay is one second after every request attempt, transient failures are retried with backoff, and the Actor stops as soon as maxItems is reached. Do not use it to overload the source, bypass access controls, build spam lists, contact advertisers in bulk, or use data outside purposes permitted by the source website and applicable law. Keep each record's source and canonical url when sharing results: the source site's current imprint requires source attribution for dissemination or reproduction of information created by the exchange. It also reserves rights in site text and images, so obtain any permission or legal review your intended reuse requires.
By running the Actor, you accept the Terms of Service. Data handling is described in the Privacy Notice.
Local development
Python 3.12 and the Apify CLI are recommended.
python3.12 -m venv .venvsource .venv/bin/activatepip install --require-hashes --requirement requirements.lockpython -m unittest discover -s tests -vapify run --purge
The production image uses the non-browser apify/actor-python:3.12 base image and runs as its non-root myuser. Dependencies are installed from the hash-locked requirements.lock before source code is copied so Docker can reuse the dependency layer. When requirements.txt changes, regenerate the lock with uv pip compile requirements.txt --python-version 3.12 --generate-hashes --no-emit-index-url --output-file requirements.lock.
Deployment and Store release
Pushes to main run validation and deploy the accepted commit to the existing Actor's beta build tag through GitHub Actions. Run the cloud acceptance checks against that exact beta build. To release the same main commit, manually dispatch Validate Actor with release_latest: true; the workflow validates again, refreshes beta, waits at the apify-production environment gate, and then builds the latest tag. Keep Actor permissions set to Limited, select a successful and complete (isPartial: false) production run as sample output, and complete the Store publication form. Copy-ready display, SEO, category, pricing, and legal values are in the Store listing guide; the release checklist covers the owner-only gates.
Support and changes
Source markup and third-party terms can change without notice. If extraction stops, include the Actor run ID and failing public URL in an Apify issue or GitHub issue. Do not post personal data, tokens, or confidential listings in a public issue. Version history is recorded in the changelog.
FAQ
Can one run export every listing? A public run is limited to 1,000 listings and 100 result pages. Split broader exports by industry, state, postcode, price, or another source filter.
Does the Actor return seller contact details? No. It omits named contact people. Each record keeps the public source URL so you can use nexxt-change's official contact workflow.
Why can results differ between runs? Listings, source taxonomy, availability, and page markup can change at any time. The Actor records scrapedAt and always links back to the live listing for verification.