# BizBuySell Scraper (`good_cheap/bizbuysell-scraper`) Actor

Scrape BizBuySell.com business-for-sale listings. 30+ fields: price, revenue, cash flow, EBITDA, broker info, categories. Anti-bot bypass included.

- **URL**: https://apify.com/good\_cheap/bizbuysell-scraper.md
- **Developed by:** [T](https://apify.com/good_cheap) (community)
- **Categories:** Lead generation, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 55.6% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## BizBuySell Scraper

Extract structured data from [BizBuySell.com](https://www.bizbuysell.com) — the largest online marketplace for buying and selling businesses. Get 30+ fields per listing including financials, broker info, categories, and detailed business descriptions.

### What does BizBuySell Scraper do?

This actor scrapes business-for-sale listings from BizBuySell.com and returns clean, structured data ready for analysis, CRM import, or deal sourcing workflows.

**Just paste a BizBuySell search URL and click Run.** The scraper handles pagination, anti-bot protection, and data extraction automatically.

#### Key features

- **30+ structured fields** per listing — financials, location, broker info, categories, and more
- **Automatic pagination** — scrapes all pages from a search result
- **Anti-bot bypass** — handles BizBuySell's Akamai Bot Manager protection automatically
- **Search pages + detail pages** — extracts summary data from search results, then enriches each listing with full detail page data
- **Deduplication** — use named datasets to avoid re-scraping the same listings across runs
- **Fast** — processes 100+ listings in under 5 minutes

### How much does it cost to scrape BizBuySell?

**$25/month flat** — unlimited runs, unlimited listings. No per-result charges.

Unlike pay-per-result scrapers that charge $0.005+ per listing (which adds up fast if you're monitoring the market daily), this actor is a flat monthly fee. Scrape 100 listings or 10,000 — same price.

You also pay for Apify platform compute, which is typically **$0.01–0.05 per run**. A typical run scraping 100 listings costs about $0.02 in platform fees and completes in under 5 minutes.

### Output

Each listing is returned as a JSON object with 30+ fields:

```json
{
    "listingTitle": "Sanitation Wipes Business - Bank Financing - Recurring Revenue",
    "askingPrice": 4200000,
    "cashFlow": 1250000,
    "grossRevenue": 3048608,
    "ebitda": 1250000,
    "location": "Salt Lake City, Utah",
    "state": "Utah",
    "category": "Other > Nondurable Goods",
    "description": "Imagine walking into a business that practically runs itself...",
    "yearEstablished": "2016",
    "numberOfEmployees": "3 (2 Part-time, 1 Contractors)",
    "brokerName": "Joshua Lindsey",
    "brokerPhone": "385-479-8520",
    "brokerFirm": "American Business Brokers",
    "agentUrl": "https://www.bizbuysell.com/business-broker/joshua-lindsey/...",
    "facilities": "$175,000 in equipment included",
    "growthOpportunity": "Expansion into Amazon in 2026",
    "financing": "Seller financing available — 10% seller financing",
    "supportAndTraining": "Sellers will provide training and transition as necessary",
    "competition": "2 main competitors",
    "ffe": "$175,000 Included in asking price",
    "inventory": "$438,000 Included in asking price",
    "reasonForSelling": "partner wants liquidity",
    "sellerType": "agent",
    "url": "https://www.bizbuysell.com/business-opportunity/...",
    "scrapedAt": "2026-04-03T00:45:13.546Z"
}
````

#### All output fields

| Field | Description | Example |
|-------|-------------|---------|
| `listingTitle` | Business listing title | "FedEx Routes - Birmingham, AL" |
| `askingPrice` | Asking price (number) | 2300000 |
| `cashFlow` | Annual cash flow / SDE | 575000 |
| `grossRevenue` | Annual gross revenue | 2950000 |
| `ebitda` | EBITDA | 1250000 |
| `location` | City, State | "Salt Lake City, Utah" |
| `state` | Full state name | "Utah" |
| `category` | Business category path | "Routes > Trucking Companies" |
| `description` | Full business description | (full text) |
| `yearEstablished` | Year the business was founded | "2016" |
| `numberOfEmployees` | Employee count and breakdown | "3 (2 Part-time)" |
| `brokerName` | Listing broker/agent name | "Joshua Lindsey" |
| `brokerPhone` | Broker phone number | "385-479-8520" |
| `brokerFirm` | Brokerage firm name | "American Business Brokers" |
| `agentUrl` | Broker's BizBuySell profile URL | (URL) |
| `realEstate` | Real estate details | "Leased" |
| `facilities` | Facility description | "$175,000 in equipment" |
| `growthOpportunity` | Growth and expansion potential | "Expansion into Amazon" |
| `financing` | Available financing options | "Seller financing available" |
| `supportAndTraining` | Transition support details | "Full training provided" |
| `competition` | Competitive landscape | "2 main competitors" |
| `franchise` | Franchise status | "Established franchise" |
| `ffe` | Furniture, fixtures & equipment | "$175,000 included" |
| `inventory` | Inventory value | "$438,000 included" |
| `reasonForSelling` | Why the owner is selling | "Retirement" |
| `homeBased` | Whether the business is home-based | "Home-Based" |
| `buildingSf` | Building square footage | "10,000" |
| `sellerType` | Owner or agent/broker | "agent" |
| `url` | Direct link to the listing | (URL) |
| `scrapedAt` | When the data was collected | "2026-04-03T00:45:13Z" |

Fields that aren't available on a particular listing come back as `null`.

### Input

#### Start URLs

Paste one or more BizBuySell URLs:

- **Search pages** — `https://www.bizbuysell.com/businesses-for-sale/` (with or without filters)
- **Filtered searches** — Use BizBuySell's search filters, then copy the URL. The scraper respects all filters including price range, cash flow, location, industry, and days listed.
- **Individual listings** — `https://www.bizbuysell.com/business-opportunity/example/12345/`
- **Franchise listings** — `https://www.bizbuysell.com/franchise-for-sale/example/`

#### Other settings

| Setting | Default | Description |
|---------|---------|-------------|
| Max Listings | 99,999 | Maximum number of listings to scrape |
| Scrape Details | Yes | Fetch full detail pages (30+ fields). Turn off for faster search-only scraping |
| Dataset Name | — | Use a named dataset to deduplicate across runs |
| Max Concurrency | 20 | Parallel requests. Higher = faster |
| Max Retries | 5 | Retry attempts per failed request |

### Why this scraper?

| Feature | This Actor | Other BBS Scrapers |
|---------|-----------|-------------------|
| **Fields per listing** | 30+ | 10–20 |
| **Pricing** | $25/mo flat | $0.005/result ($50+ at scale) |
| **Anti-bot bypass** | Built-in (Akamai) | Often fails or requires your own proxy |
| **Detail page scraping** | Yes — full descriptions, broker info, financials | Some only scrape search pages |
| **Deduplication** | Built-in across runs | Manual |
| **Franchise listings** | Supported | Usually not |

### Use cases

- **Deal sourcing** — Monitor new listings matching your investment criteria
- **Market research** — Analyze asking prices, cash flows, and valuations across industries and geographies
- **Lead generation** — Build broker contact lists by industry or region
- **Portfolio monitoring** — Track competitive listings in markets you operate in
- **Data analysis** — Export to Excel, Google Sheets, or your CRM

### Tips

- **Use search filters** — Apply filters on BizBuySell first (price range, cash flow, location, industry, days listed), then copy the filtered URL.
- **Schedule daily runs** — Set up a recurring schedule to catch new listings. Use the deduplication feature (named dataset) to only scrape new listings.
- **Start small** — Test with `maxItems: 10` to verify the output before running large scrapes.
- **Search-only mode** — Set `scrapeDetails: false` for faster, cheaper runs when you only need summary data (title, price, location, cash flow).

### FAQ

**How often can I scrape BizBuySell?**
As often as you need. The scraper handles anti-bot protection automatically. For daily monitoring, use the "days listed" filter set to the desired window.

**What if a field is null?**
Null means the seller didn't include that information on the listing. Not all sellers disclose asking price, revenue, or year established.

**Can I export to Excel or CSV?**
Yes. After the run completes, click "Export" to download as CSV, JSON, Excel, or other formats. You can also connect the dataset to Google Sheets or your API via webhooks.

**Does it handle pagination?**
Yes. The scraper automatically follows all search result pages.

**Can I scrape specific states or industries?**
Yes. Use BizBuySell's built-in search filters to narrow by state, city, industry, price range, cash flow, etc., then copy the filtered URL.

# Actor input Schema

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

BizBuySell search result pages or individual listing URLs to scrape. Supports search pages with filters, direct listing URLs, and franchise pages.

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

Maximum number of listings to scrape. Set to 0 for unlimited.

## `scrapeDetails` (type: `boolean`):

When enabled, fetches each listing's full detail page for 30+ fields. When disabled, extracts only summary data from search pages (faster but fewer fields).

## `datasetName` (type: `string`):

Optional. Use a named dataset to avoid scraping the same listings across multiple runs.

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

Maximum parallel requests. Higher = faster but uses more compute. Default of 20 is recommended.

## `maxRequestRetries` (type: `integer`):

How many times to retry a failed request. Default of 5 works well.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.bizbuysell.com/businesses-for-sale/"
    }
  ],
  "maxItems": 99999,
  "scrapeDetails": true,
  "maxConcurrency": 20,
  "maxRequestRetries": 5
}
```

# Actor output Schema

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

Scraped BizBuySell listings with asking price, revenue, cash flow, EBITDA, broker info, location, category, and 20+ more fields per listing.

# 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": [
        {
            "url": "https://www.bizbuysell.com/businesses-for-sale/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("good_cheap/bizbuysell-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": [{ "url": "https://www.bizbuysell.com/businesses-for-sale/" }] }

# Run the Actor and wait for it to finish
run = client.actor("good_cheap/bizbuysell-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": [
    {
      "url": "https://www.bizbuysell.com/businesses-for-sale/"
    }
  ]
}' |
apify call good_cheap/bizbuysell-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BizBuySell Scraper",
        "description": "Scrape BizBuySell.com business-for-sale listings. 30+ fields: price, revenue, cash flow, EBITDA, broker info, categories. Anti-bot bypass included.",
        "version": "0.1",
        "x-build-id": "1nk2Spgh5qh2DedsO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/good_cheap~bizbuysell-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-good_cheap-bizbuysell-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/good_cheap~bizbuysell-scraper/runs": {
            "post": {
                "operationId": "runs-sync-good_cheap-bizbuysell-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/good_cheap~bizbuysell-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-good_cheap-bizbuysell-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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "BizBuySell search result pages or individual listing URLs to scrape. Supports search pages with filters, direct listing URLs, and franchise pages.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max Listings",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of listings to scrape. Set to 0 for unlimited.",
                        "default": 99999
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "When enabled, fetches each listing's full detail page for 30+ fields. When disabled, extracts only summary data from search pages (faster but fewer fields).",
                        "default": true
                    },
                    "datasetName": {
                        "title": "Dataset Name (for deduplication)",
                        "type": "string",
                        "description": "Optional. Use a named dataset to avoid scraping the same listings across multiple runs."
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum parallel requests. Higher = faster but uses more compute. Default of 20 is recommended.",
                        "default": 20
                    },
                    "maxRequestRetries": {
                        "title": "Max Retries",
                        "minimum": 0,
                        "maximum": 30,
                        "type": "integer",
                        "description": "How many times to retry a failed request. Default of 5 works well.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
