# Businesses for Sale & M\&A Deal Flow Scraper (`vortexdaksh/businesses-for-sale-ma-scraper`) Actor

Extract publicly listed businesses for sale, online companies, SaaS startups, Amazon FBA brands, and brick-and-mortar SMEs from Quiet Light, SMERGERS, and Sunbelt Network into a single, standardized dataset.

- **URL**: https://apify.com/vortexdaksh/businesses-for-sale-ma-scraper.md
- **Developed by:** [Daksh](https://apify.com/vortexdaksh) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 business listing scrapeds

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

## Businesses for Sale & M\&A Deal Flow Scraper (Quiet Light, SMERGERS, Sunbelt Network)

Extract publicly listed businesses for sale, online companies, SaaS startups, Amazon FBA brands, and brick-and-mortar SMEs from **[Quiet Light](https://quietlight.com/listings/)**, **[SMERGERS](https://www.smergers.com/businesses-for-sale-and-investment/b/)**, and **[Sunbelt Network](https://www.sunbeltnetwork.com/business-search/business-results/)** into a single, standardized dataset.

Designed for acquisition entrepreneurs, search funds, private equity scouts, business brokers, and market researchers who want clean, ready-to-analyze deal flow in USD without manually copying listings across multiple websites.

### What Does This Scraper Do?

- **Scrapes 3 Major Marketplaces in One Run**:
  - **[Quiet Light](https://quietlight.com/listings/)**: Vetted online businesses, SaaS, e-commerce, Amazon FBA, content sites, and membership platforms (automatically filters out unlinked sold cards so you only pay for active listings with dedicated URLs).
  - **[SMERGERS](https://www.smergers.com/businesses-for-sale-and-investment/b/)**: Global and Indian SME businesses for sale, partial equity stake sales (`Partial Stake Sale`), asset sales (`Asset Sale`), and franchise opportunities (automatically excludes debt/borrowing `Business Loan` / `Seeking Loan` requests).
  - **[Sunbelt Network](https://www.sunbeltnetwork.com/business-search/business-results/)**: Main-street and lower-middle-market companies across North America and globally.
- **Normalizes 17 Currencies & Regional Units to USD**:
  - Automatically converts `INR` (`Lakh` / `Crore`), `EUR`, `GBP`, `AED`, `SAR`, `CHF`, `CAD`, `AUD`, `SGD`, `MYR`, `JPY`, `THB`, `BRL`, `ZAR`, `HKD`, `NZD`, and `USD` (`Mn` / `K` / `m` / `k`) into standardized USD floats using live daily exchange rates while preserving the original raw price string.
- **Computes Valuation Multiples & Equity Stake Math**:
  - Calculates **Implied Enterprise Value (`impliedEnterpriseValueUsd`)** when a seller offers a partial equity stake (for example, `USD 2 Mn for 15%` automatically computes a `$13,333,333.33` implied enterprise value).
  - Calculates **SDE / Cash Flow Multiple (`valuationMultipleSde`)**, **Revenue Multiple (`valuationMultipleRevenue`)**, **Net Profit Margin (`profitMarginPct`)**, and an automated **0–100 Deal Score (`dealScore`)** for sorting and filtering.
- **Detects Clause-Aware SBA Pre-Qualification (`sbaEligible`)**:
  - Flags listings marked as SBA Pre-Qualified or SBA Eligible while rejecting negated phrases (such as *"Not SBA eligible"* or *"SBA: No"*).
- **Built-In Reliability & Deduping**:
  - Uses Chrome TLS fingerprint impersonation, Apify Proxy rotation on every retry, SHA-256 deduplication across pages, and automatic state persistence across container migrations so you are never double-charged for the same listing.

### Input Parameters

| Field | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `marketplace` | `string` | `"all"` | Choose `"quietlight"`, `"smergers"`, `"sunbelt"`, or `"all"` to scrape all three marketplaces in a single run. |
| `startUrls` | `array` | `[]` | Optional list of specific category, country, or filtered search URLs from Quiet Light, SMERGERS, or Sunbelt Network. Leave empty to scrape the default global directories. |
| `maxItems` | `integer` | `100` | Maximum number of verified business listings to extract across the run. |
| `maxPagesPerSite` | `integer` | `10` | Maximum pagination pages to crawl per marketplace URL. |
| `minDealScore` | `integer` | `0` | Optional filter (`0–100`) to only emit listings that meet your minimum Deal Score threshold. |
| `onlySbaEligible` | `boolean` | `false` | When `true`, only emits listings marked as SBA Pre-Qualified / SBA Eligible. |
| `fxRatesToUsd` | `object` | `{}` | Optional custom exchange-rate overrides to USD (e.g., `{"INR": 0.012, "EUR": 1.10}`). Leave empty to fetch live daily FX rates automatically. |
| `proxyConfiguration` | `object` | `{"useApifyProxy": true}` | Apify Proxy configuration for automatic IP rotation. |

#### Example Input JSON

```json
{
  "marketplace": "all",
  "maxItems": 100,
  "maxPagesPerSite": 5,
  "minDealScore": 0,
  "onlySbaEligible": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

### Output Dataset Schema (Sample Records)

Each item pushed to the default dataset contains standardized fields across all three marketplaces:

#### 1. Quiet Light Sample Output

```json
{
  "marketplace": "Quiet Light",
  "title": "SBA Pre-Qualified: Premium Self-Help Books and System | More Than 114,000 Shopify Orders | 36% Net Margins | Low Multiple | Low Workload",
  "category": "Ecommerce",
  "status": "Available",
  "sbaEligible": true,
  "askingPriceUsd": 6870000,
  "originalPriceRaw": "$6,870,000",
  "originalCurrency": "USD",
  "stakeOfferedPct": 100,
  "ttmRevenueUsd": 8061514,
  "ttmSdeOrCashFlowUsd": 2918349,
  "impliedEnterpriseValueUsd": 6870000,
  "valuationMultipleSde": 2.35,
  "valuationMultipleRevenue": 0.85,
  "profitMarginPct": 36.2,
  "dealScore": 95,
  "listingUrl": "https://quietlight.com/listings/18828719/",
  "scrapedAt": "2026-10-22T19:20:05.432880+00:00"
}
```

#### 2. SMERGERS Sample Output (Partial Equity Stake & Multi-Currency)

```json
{
  "marketplace": "SMERGERS",
  "title": "Gym for Sale in Riyadh, Saudi Arabia",
  "category": "Business for Sale",
  "status": "Available",
  "sbaEligible": false,
  "askingPriceUsd": 670000,
  "originalPriceRaw": "USD 670 K",
  "originalCurrency": "USD",
  "stakeOfferedPct": 100,
  "ttmRevenueUsd": 693334.2,
  "ttmSdeOrCashFlowUsd": 189333.57,
  "platformRating": 8.3,
  "impliedEnterpriseValueUsd": 670000,
  "valuationMultipleSde": 3.54,
  "valuationMultipleRevenue": 0.97,
  "profitMarginPct": 27.3,
  "dealScore": 68,
  "listingUrl": "https://www.smergers.com/business/gym-for-sale-in-riyadh-saudi-arabia/yrnn1/",
  "scrapedAt": "2026-10-22T19:19:26.815824+00:00"
}
```

#### 3. Sunbelt Network Sample Output

```json
{
  "marketplace": "Sunbelt Network",
  "title": "Growing, Highly Profitable Peer to Peer Recovery Coaching Services Business",
  "category": "Main-Street & Mid-Market M&A",
  "status": "Available",
  "sbaEligible": false,
  "askingPriceUsd": 13000000,
  "originalPriceRaw": "$13m",
  "originalCurrency": "USD",
  "stakeOfferedPct": 100,
  "ttmRevenueUsd": 5390000,
  "ttmSdeOrCashFlowUsd": 3715000,
  "impliedEnterpriseValueUsd": 13000000,
  "valuationMultipleSde": 3.5,
  "valuationMultipleRevenue": 2.41,
  "profitMarginPct": 68.9,
  "dealScore": 80,
  "listingUrl": "https://www.sunbeltnetwork.com/greater-denver-co/buy-a-business/listings/listing-details/growing-peer-recovery-coaching-59027/",
  "scrapedAt": "2026-10-22T19:20:41.149188+00:00"
}
```

### Notes on Public Directory Data

- **Quiet Light**: Quiet Light's `/listings/` page displays all active listings on a single page without pagination; increase `maxItems` (for example to `100` or `200`) to capture the entire active catalog in one run.
- **SMERGERS**: Directory cards on SMERGERS always display the asking price, equity stake percentage, transaction category, and platform rating (`platformRating`), and include revenue/EBITDA whenever the seller mentions them in the card summary. Full tabular financial statements on SMERGERS require visiting the individual `listingUrl`.

### Legal & Financial Disclaimer

This Actor extracts publicly accessible listing summaries from third-party brokerage websites for **informational, market research, and data aggregation purposes only**. All calculated metrics—including `impliedEnterpriseValueUsd`, `valuationMultipleSde`, `valuationMultipleRevenue`, `profitMarginPct`, `sbaEligible`, and `dealScore`—are automated mathematical estimates derived from public listing text and **do not constitute financial, investment, legal, tax, or brokerage advice**. No representation or warranty is made as to the accuracy or completeness of any third-party listing data. Users are solely responsible for conducting their own independent due diligence on the original brokerage listing pages and complying with all applicable laws and website terms.

# Actor input Schema

## `marketplace` (type: `string`):

Select which business-for-sale marketplace to extract listings from, or 'all' to aggregate across all portals.

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

Optional filtered URLs from Quiet Light, SMERGERS (e.g. ?ordering=investment), or Sunbelt Network. Leave empty to scrape global active listings.

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

Maximum number of verified business listings to emit across all pages (charged per result via Pay-Per-Event).

## `maxPagesPerSite` (type: `integer`):

Maximum pagination pages to crawl per marketplace URL.

## `minDealScore` (type: `integer`):

Filter output to only include listings meeting a minimum Deal Score (weighted by SDE/Revenue multiple, profit margin, and SBA status).

## `onlySbaEligible` (type: `boolean`):

If enabled, only returns listings marked as SBA Pre-Qualified / SBA Eligible (excluding 'Not SBA eligible' listings).

## `fxRatesToUsd` (type: `object`):

Optional custom currency conversion multipliers to USD (e.g. {"INR": 0.012, "EUR": 1.10}). Leave empty to fetch live daily FX rates automatically.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings for automatic IP rotation on 403/429/Cloudflare responses.

## Actor input object example

```json
{
  "marketplace": "all",
  "startUrls": [],
  "maxItems": 100,
  "maxPagesPerSite": 10,
  "minDealScore": 0,
  "onlySbaEligible": false,
  "fxRatesToUsd": {},
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All extracted business-for-sale listings stored in the default dataset.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("vortexdaksh/businesses-for-sale-ma-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("vortexdaksh/businesses-for-sale-ma-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 '{}' |
apify call vortexdaksh/businesses-for-sale-ma-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vortexdaksh/businesses-for-sale-ma-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/bFQpZ7yY33WujS3Tq/builds/jerQUl7RskGxCvyq4/openapi.json
