# Businesses For Sale Scraper (`solidcode/businesses-for-sale-scraper`) Actor

\[💰 $0.85 / 1K] Extract business-for-sale listings from BusinessesForSale.com — title, asking price, revenue, cash flow, EBITDA, location, photos, broker contacts, and full descriptions. Search by keyword, country, industry, and price range, or paste BusinessesForSale.com URLs directly.

- **URL**: https://apify.com/solidcode/businesses-for-sale-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Real estate, Lead generation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.85 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## BusinessesForSale.com Scraper

Pull every business-for-sale listing from BusinessesForSale.com at scale — asking price, annual revenue, cash flow, FF&E, inventory value, lease rent, full descriptions, the listing brokerage name, and photo galleries across 6 country markets and 441 industry sub-categories. Built for M&A advisors, search-fund investors, business brokers, and franchise scouts who need a fresh, structured deal pipeline without crawling 58,000+ listings by hand.

### Why This Scraper?

- **6-country coverage in one input** — United States, United Kingdom, Canada, Australia, New Zealand, plus a Global mode that sweeps every market in a single run. Pick from a dropdown — no URL crafting.
- **Per-listing money objects on every financial field** — `askingPrice`, `revenue`, `cashFlow`, `inventoryValue`, `ffe`, and `leaseRent` each emit `{amount, currency, formatted}` so you can sort numerically AND keep the original "$425,000" / "£19,077 per annum" formatting.
- **Three independent dual-bound numeric filters** — set min/max for asking price, cash flow, AND revenue as plain integers in USD. No "10K"/"1.5M" string parsing. All combinable.
- **19 industry sectors plus a 441-slug escape hatch** — pick a top-level sector (Restaurants & Food, Retail, Manufacturing, Healthcare, Hotels & Motels, Bars & Nightclubs, etc.) or paste a sub-category slug like `dental-practices`, `bagel-shops`, `auto-repair-businesses-for-sale`, or `food-trucks`.
- **Listing-status flags every acquirer asks for** — boolean detection of `relocatable`, `homeBased`, `realEstateIncluded`, `ownerFinancing`, plus a `sellerType` ("broker" / "owner") on every record so you can split owner-direct deals from broker-listed ones.
- **Listing brokerage name on every broker-listed deal** — `brokerCompany` carries the "Listed by" entity exactly as published; `brokerLicense` carries the license number when the broker discloses it. Owner-direct listings are flagged with `sellerType: "owner"`.
- **Eight sort orders** — Newest, Featured, Price ascending/descending, Revenue ascending/descending, and Profit (cash flow) ascending/descending — so you can scan freshest-first or dive straight into the largest cash-flow deals.
- **Full operational narrative** — `reasonForSelling`, `training`, `support`, `financing`, `expansionPotential`, `competition`, `hoursOfOperation`, `staffing`, `facilities`, `leaseTerms` — every free-text section the seller filled in.
- **Toggle full detail per row** — `includeListingDetails: false` gives you a fast, cheap card-only sweep (title, price, location, thumbnail). Flip it on for the complete financial profile, photo gallery, and operational sections.

### Use Cases

**Acquisition Sourcing & Search Funds**
- Build a country-wide pipeline of profitable SMBs in your investment thesis
- Filter by cash flow band ($250k–$1M SDE) to surface searcher-sized deals
- Sort by Newest to catch fresh listings before competitive bidders see them
- Export to your CRM nightly to track new entries vs. price drops

**Business Broker Lead Generation**
- Build a directory of competing brokerages active in your geography (`brokerCompany`)
- Identify brokerages with the deepest current inventory by sector
- Source listings to refer or co-broker outside your primary market

**Market Research & Industry Reports**
- Track median asking-price multiples by sector and country
- Quantify SMB transaction volume across Restaurants, Retail, and Services
- Benchmark UK vs. US vs. AU asking-price-to-revenue ratios for a specific industry
- Power newsletters and reports with current marketplace data

**Valuation Comps & Financial Analysis**
- Build a comparable-transactions database by industry slug + revenue band
- Calibrate revenue and cash-flow multiples for client valuations
- Spot pricing outliers in a specific niche (e.g. coffee shops over $500k SDE)

**Franchise & Resale Discovery**
- Pull every active franchise resale by sector — `industrySlug: "franchises"`
- Identify hot franchise concepts by listing volume and price velocity
- Match franchisee buyers to existing-territory resale opportunities

**Investment Sourcing & Family Offices**
- Filter by revenue range to target middle-market or lower-middle-market deals
- Build dashboards of relocatable, home-based, or owner-financed opportunities
- Track real-estate-included deals (`realEstateIncluded: true`) for asset-backed acquisition strategies

### Getting Started

#### Simple — Top 50 Coffee Shops in the US

```json
{
    "searchKeywords": ["coffee shop"],
    "country": "us",
    "maxResults": 50
}
````

#### Filtered — Profitable UK Restaurants in London

Cash-flow lower bound, revenue upper bound, location refinement, sorted newest-first:

```json
{
    "searchKeywords": ["restaurant"],
    "country": "uk",
    "locationText": "London",
    "minCashFlow": 100000,
    "maxRevenue": 5000000,
    "sortOrder": "newest",
    "maxResults": 200
}
```

#### Advanced — Niche Sub-Category Sweep with URL + Filters

Mix direct BusinessesForSale.com URLs with a keyword sweep, a power-user `industrySlug`, and a profit-first sort to surface the largest cash-flow deals first:

```json
{
    "startUrls": [
        "https://www.businessesforsale.com/us/search/dental-practices-for-sale"
    ],
    "searchKeywords": ["medical practice"],
    "country": "us",
    "industrySlug": "auto-repair-businesses-for-sale",
    "minAskingPrice": 250000,
    "maxAskingPrice": 5000000,
    "minCashFlow": 150000,
    "sortOrder": "profit-desc",
    "includeListingDetails": true,
    "maxResults": 1000
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | Paste BusinessesForSale.com URLs — search-result pages or individual listing detail pages. Filters in the URL are honored as-is. |
| `searchKeywords` | string\[] | `[]` | Free-text terms (e.g. `"coffee shop"`, `"dental practice"`, `"car wash"`). Each term runs its own paginated search. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `country` | select | `United States` | Market to search: US, UK, Canada, Australia, New Zealand, or Global (all countries). |
| `locationText` | string | `""` | Optional state, region, or city refinement (e.g. `"California"`, `"London"`, `"Sydney"`). |
| `industry` | select | `All industries` | Top-level sector — 19 options including Restaurants & Food, Retail, Manufacturing, Healthcare, Hotels & Motels, Online & Internet. |
| `industrySlug` | string | `""` | Power-user override: paste any of 441 sub-category slugs from the BusinessesForSale.com all-categories index (e.g. `"bagel-shops"`, `"food-trucks"`, `"dental-practices"`). When set, takes precedence over the Industry dropdown. |
| `sortOrder` | select | `Newest first` | One of: `newest`, `featured`, `price-desc`, `price-asc`, `revenue-desc`, `revenue-asc`, `profit-desc`, `profit-asc`. |

#### Price & Financial Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `minAskingPrice` | integer | `null` | Lower bound on asking price in USD. Leave blank for no minimum. |
| `maxAskingPrice` | integer | `null` | Upper bound on asking price in USD. |
| `minCashFlow` | integer | `null` | Lower bound on annual cash flow / SDE in USD. |
| `maxCashFlow` | integer | `null` | Upper bound on annual cash flow / SDE in USD. |
| `minRevenue` | integer | `null` | Lower bound on annual revenue (turnover) in USD. |
| `maxRevenue` | integer | `null` | Upper bound on annual revenue in USD. |

#### Output & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeListingDetails` | boolean | `true` | When on, every listing's detail page is fetched for the full description, highlights, financial breakdown, listing-broker name, and photo gallery. When off, returns search-card data only — much faster and cheaper. |
| `maxResults` | integer | `100` | Cap on total listings collected. Set to `0` for unlimited (an internal hard ceiling of 100,000 results plus a 1,500-page safety cap still applies). The actor stops requesting new pages once the cap is hit but keeps the full final page; the page size auto-adjusts so a small cap (e.g. 5, 25) doesn't pull a full 100-row page. |

### Output

Every row is a single business listing. Here's a representative result with full details enabled:

```json
{
    "listingId": "3950792",
    "url": "https://us.businessesforsale.com/us/breakfast-and-lunch-deli-in-office-building.aspx",
    "title": "Breakfast And Lunch Deli In Office Building",
    "country": "US",
    "region": "Texas",
    "city": "Fort Worth, Tarrant County",
    "locationDisplay": "Fort Worth, Tarrant County, Texas, US",
    "askingPrice": { "amount": 369000, "currency": "USD", "formatted": "$369,000" },
    "revenue": { "amount": 735268, "currency": "USD", "formatted": "$735,268" },
    "cashFlow": { "amount": 172423, "currency": "USD", "formatted": "$172,423" },
    "inventoryValue": { "amount": 5000, "currency": "USD", "formatted": "$5,000" },
    "ffe": { "amount": 50000, "currency": "USD", "formatted": "$50,000 - included in the asking price" },
    "description": "Deli for sale! Are you looking to own and operate a successful 5-day-a-week office deli? If so...",
    "descriptionBlurb": "Profitable office-building deli...",
    "highlights": ["Established 2018", "Office-building tenant base", "Lunch + breakfast trade"],
    "yearEstablished": 2018,
    "employees": "5",
    "relocatable": false,
    "homeBased": false,
    "realEstateIncluded": false,
    "ownerFinancing": false,
    "sellerType": "broker",
    "reasonForSelling": "Owner relocating",
    "training": "Two weeks of full-time training included",
    "support": "Phone and email support for 60 days post-close",
    "financing": null,
    "leaseTerms": "Five-year lease with renewal option",
    "leaseRent": null,
    "realEstate": "Lease",
    "images": [
        { "src": "https://...primary.jpg", "alt": "Deli interior", "fullSize": "https://...full.jpg", "thumbnail": "https://...thumb.jpg" }
    ],
    "totalPhotos": 7,
    "thumbnail": "https://...thumb.jpg",
    "brokerCompany": "V-AID Group",
    "brokerLicense": "567204",
    "isNew": true,
    "isPremium": false,
    "industry": "Restaurants & Food",
    "industrySlug": "delicatessens-for-sale",
    "metaTitle": "Breakfast And Lunch Deli In Office Building For Sale",
    "metaDescription": "Profitable office-building deli, $369,000 asking, $172,423 SDE.",
    "scrapedAt": "2026-05-09T14:30:00Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | string | BusinessesForSale.com unique listing identifier |
| `url` | string | Direct listing URL |
| `title` | string | Business headline |
| `industry` | string | Sector name (e.g. "Restaurants & Food") |
| `industrySlug` | string | URL slug for the sector / sub-category |
| `isNew` | boolean | Site flagged the listing as new |
| `isPremium` | boolean | Featured / premium listing flag |
| `scrapedAt` | string | ISO timestamp of data extraction |

#### Location

| Field | Type | Description |
|-------|------|-------------|
| `country` | string | Country name from the listing's address (e.g. "US", "United Kingdom") |
| `region` | string | State, county, or region name |
| `city` | string | City or locality |
| `locationDisplay` | string | Pretty-printed location ("Manchester, England") |

#### Pricing & Financials

| Field | Type | Description |
|-------|------|-------------|
| `askingPrice` | object | null | `{amount, currency, formatted}` — main sale price. `amount` is `null` when the seller hides the number ("Price on application") but `formatted` carries the original text. |
| `revenue` | object | null | Annual revenue / turnover in the listing's native currency |
| `cashFlow` | object | null | Seller's discretionary earnings (SDE) / annual cash flow |
| `inventoryValue` | object | null | Inventory / stock value at sale |
| `ffe` | object | null | Furniture, fixtures, and equipment value |
| `leaseRent` | object | null | Periodic lease rent (e.g. £19,077 / annum) when published |

#### Business Operation

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | Full long-form listing description |
| `descriptionBlurb` | string | Short search-card summary |
| `highlights` | string\[] | Bullet highlights from the seller |
| `yearEstablished` | integer | Year founded (parsed to a 4-digit year when possible) |
| `employees` | string | Headcount or band ("10-20") |
| `relocatable` | boolean | Business can be relocated by the buyer |
| `homeBased` | boolean | Business runs from a home address |
| `realEstateIncluded` | boolean | Property is part of the sale (inferred from `realEstate` text) |
| `ownerFinancing` | boolean | Seller financing offered |
| `realEstate` | string | null | Free-text real-estate field as published (e.g. "Lease", "Real Property Included") |
| `reasonForSelling` | string | Stated reason for selling |
| `training` | string | Training offered to the buyer |
| `support` | string | Post-sale support |
| `financing` | string | Financing options |
| `expansionPotential` | string | Growth opportunity narrative |
| `competition` | string | Competitive-landscape narrative |
| `hoursOfOperation` | string | Operating hours |
| `staffing` | string | Staffing notes |
| `facilities` | string | Facility / premises description |
| `leaseTerms` | string | Lease terms text |

#### Listing Source & Media

| Field | Type | Description |
|-------|------|-------------|
| `sellerType` | string | null | `"broker"` for broker-listed deals, `"owner"` for owner-direct deals |
| `brokerCompany` | string | null | The "Listed by" entity on broker-listed deals — typically the brokerage name (occasionally a personal broker name when that's how the site displays it) |
| `brokerLicense` | string | null | Broker license number when published |
| `images` | object\[] | Photos: `[{src, alt, fullSize, thumbnail}]` |
| `thumbnail` | string | Primary thumbnail URL |
| `totalPhotos` | integer | Photo count |
| `metaTitle` | string | OG / page title |
| `metaDescription` | string | OG / meta description |
| `jsonLd` | object | null | Raw schema.org `LocalBusiness` JSON-LD blob (when published by the listing) |

### Tips for Best Results

- **Start with a 25–50 row test, then scale up.** Verify the financial fields you care about are populated for your target country before committing to a 10,000-row run.
- **Combine a sector + a country + a cash-flow floor** for the highest-signal acquirer pipeline. Example: `industry: "restaurants-food"`, `country: "us"`, `minCashFlow: 200000` surfaces searcher-sized restaurant deals.
- **Use `industrySlug` to target a specific niche.** The dropdown's 19 options cover top-level sectors, but the live site has 441 sub-category slugs (e.g. `auto-repair-businesses-for-sale`, `dental-practices`, `cafes`, `food-trucks`, `amazon-stores`). Find the full list at `businessesforsale.com/allcategories`.
- **Turn off `includeListingDetails` for fast inventory sweeps.** When you only need title, price, and location for trend-watching, the search-card-only mode is dramatically faster and cheaper. Flip it back on when you're ready to enrich.
- **Sort by `profit-desc` for the largest cash-flow deals first.** Combined with a `country` filter, it's the fastest way to surface the highest-quality opportunities at the top of your dataset.
- **Watch for "Price on application" listings.** When the seller hides the asking number, `askingPrice.amount` is `null` and `askingPrice.formatted` carries the raw text — useful to flag for follow-up rather than to ignore.
- **`maxResults` is a global cap across all keywords combined.** If you pass three keywords with `maxResults: 100`, you get 100 rows total spread across the queries — not 300. Increase the cap if you need a per-keyword count.
- **Mix `startUrls` with keyword inputs in one run.** Paste curated URLs (e.g. an industry-specific page you already filtered on the site) and let keyword sweeps run in parallel — all results land in the same dataset.

### Pricing

**$2.50 per 1,000 results** — flat Pay-Per-Result pricing. No compute charges — you only pay per result returned.

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.25 |
| 1,000 | $2.50 |
| 10,000 | $25.00 |
| 100,000 | $250.00 |

A "result" is any listing row in the output dataset. Platform fees (compute, storage) are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Airbyte** — Sync runs into your data warehouse
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate M\&A research, market analysis, broker pipeline building, and acquisition sourcing. Users are responsible for complying with applicable laws and BusinessesForSale.com's Terms of Service. Listing-broker names surfaced by this actor are publicly published on each listing — use them to inquire about specific deals, not for unsolicited bulk outreach. Do not use extracted data for spam, harassment, or any illegal purpose.

# Actor input Schema

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

Paste search-results pages (e.g. https://www.businessesforsale.com/us/search/businesses-for-sale) or individual listing URLs. Filters in the URL are honored as-is — the Filters section below is ignored when URLs are provided.

## `searchKeywords` (type: `array`):

Free-text search terms (e.g. 'coffee shop', 'dental practice', 'car wash'). Each term runs its own search and respects the filters below.

## `country` (type: `string`):

Country to search in. Drives the URL prefix on BusinessesForSale.com. Pick 'Global' to search across all countries (including Ireland and South Africa, which don't have dedicated country pages).

## `locationText` (type: `string`):

Optional location refinement, e.g. 'California', 'Texas', 'London', 'Sydney'. Combined with the keyword search.

## `industry` (type: `string`):

Top-level business sector. Pick 'All industries' to search every category. For more specific niches (e.g. 'bagel shops', 'dental practices', 'auto repair'), use the 'Specific Industry Slug' field below to override this with any of 400+ sub-categories from BusinessesForSale.com.

## `industrySlug` (type: `string`):

Optional: paste a specific category slug from BusinessesForSale.com to target a niche category not in the dropdown above. For example: 'bagel-shops', 'dental-practices', 'cafes', 'food-trucks', 'amazon-stores'. The full list of 400+ slugs is at https://www.businessesforsale.com/allcategories. When set, this overrides the Industry dropdown.

## `minAskingPrice` (type: `integer`):

Only include listings asking at least this much (in USD). Leave blank for no minimum.

## `maxAskingPrice` (type: `integer`):

Only include listings asking at most this much (in USD). Leave blank for no maximum.

## `minCashFlow` (type: `integer`):

Only include listings with annual cash flow (seller's discretionary earnings) of at least this much. Leave blank for no minimum.

## `maxCashFlow` (type: `integer`):

Only include listings with annual cash flow at or below this much. Leave blank for no maximum.

## `minRevenue` (type: `integer`):

Only include listings with annual revenue (turnover) of at least this much. Leave blank for no minimum.

## `maxRevenue` (type: `integer`):

Only include listings with annual revenue at or below this much. Leave blank for no maximum.

## `sortOrder` (type: `string`):

Order of results from BusinessesForSale.com. 'Newest' surfaces freshly listed businesses first; 'Profit (highest first)' surfaces the largest cash-flow deals.

## `includeListingDetails` (type: `boolean`):

Fetch each listing's detail page for the full description, financials, broker info, and photos. When off, only the search-card data is returned (faster and cheaper).

## `maxResults` (type: `integer`):

Hard cap on total listings collected across all URLs and keywords. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 100,000 plus a 1,500-page safety ceiling still applies to prevent runaway runs). The actor stops requesting new pages once this number is reached but keeps the full final page; the page size auto-adjusts so a small cap (e.g. 5, 25) doesn't pull a full 100-row page. Result count may overshoot by at most one page (≤ chosen page size).

## Actor input object example

```json
{
  "startUrls": [],
  "searchKeywords": [
    "coffee shop"
  ],
  "country": "us",
  "industry": "all",
  "sortOrder": "newest",
  "includeListingDetails": true,
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of business listings with key fields like title, asking price, location, and revenue.

## `details` (type: `string`):

Full per-listing rows with description, all financials, photos, and listing broker name.

# 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 = {
    "startUrls": [],
    "searchKeywords": [
        "coffee shop"
    ],
    "country": "us",
    "industry": "all",
    "sortOrder": "newest",
    "includeListingDetails": true,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/businesses-for-sale-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 = {
    "startUrls": [],
    "searchKeywords": ["coffee shop"],
    "country": "us",
    "industry": "all",
    "sortOrder": "newest",
    "includeListingDetails": True,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/businesses-for-sale-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "searchKeywords": [
    "coffee shop"
  ],
  "country": "us",
  "industry": "all",
  "sortOrder": "newest",
  "includeListingDetails": true,
  "maxResults": 100
}' |
apify call solidcode/businesses-for-sale-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/businesses-for-sale-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Businesses For Sale Scraper",
        "description": "[💰 $0.85 / 1K] Extract business-for-sale listings from BusinessesForSale.com — title, asking price, revenue, cash flow, EBITDA, location, photos, broker contacts, and full descriptions. Search by keyword, country, industry, and price range, or paste BusinessesForSale.com URLs directly.",
        "version": "1.0",
        "x-build-id": "7aGg7XFyujuDsDR1G"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~businesses-for-sale-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-businesses-for-sale-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~businesses-for-sale-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-businesses-for-sale-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~businesses-for-sale-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-businesses-for-sale-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "BusinessesForSale.com URLs",
                        "type": "array",
                        "description": "Paste search-results pages (e.g. https://www.businessesforsale.com/us/search/businesses-for-sale) or individual listing URLs. Filters in the URL are honored as-is — the Filters section below is ignored when URLs are provided.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchKeywords": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Free-text search terms (e.g. 'coffee shop', 'dental practice', 'car wash'). Each term runs its own search and respects the filters below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "global",
                            "us",
                            "uk",
                            "ca",
                            "au",
                            "nz"
                        ],
                        "type": "string",
                        "description": "Country to search in. Drives the URL prefix on BusinessesForSale.com. Pick 'Global' to search across all countries (including Ireland and South Africa, which don't have dedicated country pages).",
                        "default": "us"
                    },
                    "locationText": {
                        "title": "State, Region, or City",
                        "type": "string",
                        "description": "Optional location refinement, e.g. 'California', 'Texas', 'London', 'Sydney'. Combined with the keyword search."
                    },
                    "industry": {
                        "title": "Industry",
                        "enum": [
                            "all",
                            "restaurants-food",
                            "retail",
                            "manufacturing",
                            "wholesale-distribution",
                            "service-businesses",
                            "automotive",
                            "construction",
                            "healthcare-medical",
                            "beauty-personal-care",
                            "online-internet",
                            "education-training",
                            "agriculture-farming",
                            "transportation",
                            "real-estate-property",
                            "hotels-motels",
                            "bars-nightclubs",
                            "franchises",
                            "import-export",
                            "leisure-entertainment"
                        ],
                        "type": "string",
                        "description": "Top-level business sector. Pick 'All industries' to search every category. For more specific niches (e.g. 'bagel shops', 'dental practices', 'auto repair'), use the 'Specific Industry Slug' field below to override this with any of 400+ sub-categories from BusinessesForSale.com.",
                        "default": "all"
                    },
                    "industrySlug": {
                        "title": "Specific Industry Slug (advanced)",
                        "type": "string",
                        "description": "Optional: paste a specific category slug from BusinessesForSale.com to target a niche category not in the dropdown above. For example: 'bagel-shops', 'dental-practices', 'cafes', 'food-trucks', 'amazon-stores'. The full list of 400+ slugs is at https://www.businessesforsale.com/allcategories. When set, this overrides the Industry dropdown."
                    },
                    "minAskingPrice": {
                        "title": "Min Asking Price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings asking at least this much (in USD). Leave blank for no minimum."
                    },
                    "maxAskingPrice": {
                        "title": "Max Asking Price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings asking at most this much (in USD). Leave blank for no maximum."
                    },
                    "minCashFlow": {
                        "title": "Min Annual Cash Flow / SDE (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings with annual cash flow (seller's discretionary earnings) of at least this much. Leave blank for no minimum."
                    },
                    "maxCashFlow": {
                        "title": "Max Annual Cash Flow / SDE (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings with annual cash flow at or below this much. Leave blank for no maximum."
                    },
                    "minRevenue": {
                        "title": "Min Annual Revenue (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings with annual revenue (turnover) of at least this much. Leave blank for no minimum."
                    },
                    "maxRevenue": {
                        "title": "Max Annual Revenue (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings with annual revenue at or below this much. Leave blank for no maximum."
                    },
                    "sortOrder": {
                        "title": "Sort Order",
                        "enum": [
                            "newest",
                            "featured",
                            "price-desc",
                            "price-asc",
                            "revenue-desc",
                            "revenue-asc",
                            "profit-desc",
                            "profit-asc"
                        ],
                        "type": "string",
                        "description": "Order of results from BusinessesForSale.com. 'Newest' surfaces freshly listed businesses first; 'Profit (highest first)' surfaces the largest cash-flow deals.",
                        "default": "newest"
                    },
                    "includeListingDetails": {
                        "title": "Include Full Listing Details",
                        "type": "boolean",
                        "description": "Fetch each listing's detail page for the full description, financials, broker info, and photos. When off, only the search-card data is returned (faster and cheaper).",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on total listings collected across all URLs and keywords. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 100,000 plus a 1,500-page safety ceiling still applies to prevent runaway runs). The actor stops requesting new pages once this number is reached but keeps the full final page; the page size auto-adjusts so a small cap (e.g. 5, 25) doesn't pull a full 100-row page. Result count may overshoot by at most one page (≤ chosen page size).",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
