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

Scrape business-for-sale listings from BizBuySell.com. Extract asking price, cash flow, gross revenue, location, and description from search results and category pages.

- **URL**: https://apify.com/crawlerbros/bizbuysell-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Real estate, Other
- **Stats:** 3 total users, 1 monthly users, 50.0% runs succeeded, 14 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

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

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

## BizBuySell Scraper

Scrape business-for-sale listings from BizBuySell.com, the largest online marketplace for buying and selling small businesses. Extract asking prices, cash flow, gross revenue, locations, and descriptions from search results and category pages.

### What can this scraper do?

- **Search results** -- Enter any BizBuySell search or category URL and extract all business listings with financial details
- **Asking price** -- Get the listed asking price for each business (or "Not Disclosed" when hidden)
- **Cash flow and revenue** -- Extract reported cash flow and gross revenue figures
- **Location data** -- City, county, and state for each listed business
- **Business descriptions** -- Summary descriptions as shown on listing cards
- **Automatic pagination** -- Scrapes multiple pages to reach your desired number of listings (50 listings per page)
- **Bulk extraction** -- Set a high max items count to scrape hundreds of listings in a single run

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `searchUrl` | string | Yes | `https://www.bizbuysell.com/businesses-for-sale/` | BizBuySell URL to scrape (search results, category, or location page) |
| `maxItems` | integer | No | 50 | Maximum number of listings to extract (1--1,000) |
| `proxy` | object | No | -- | Proxy configuration (optional, scraper works without proxy in most cases) |

#### Supported URL formats

| URL Pattern | Example |
|-------------|---------|
| All businesses for sale | `https://www.bizbuysell.com/businesses-for-sale/` |
| State filter | `https://www.bizbuysell.com/california-businesses-for-sale/` |
| Category filter | `https://www.bizbuysell.com/restaurant-businesses-for-sale/` |
| City filter | `https://www.bizbuysell.com/businesses-for-sale/los-angeles-ca/` |
| Search results | `https://www.bizbuysell.com/businesses-for-sale/?q=laundromat` |
| Price range | `https://www.bizbuysell.com/businesses-for-sale/?pmin=100000&pmax=500000` |

#### Example input

```json
{
    "searchUrl": "https://www.bizbuysell.com/restaurant-businesses-for-sale/",
    "maxItems": 100
}
````

```json
{
    "searchUrl": "https://www.bizbuysell.com/businesses-for-sale/?q=laundromat",
    "maxItems": 25
}
```

### Output

#### Listing fields

| Field | Type | Description |
|-------|------|-------------|
| `url` | string | Direct link to the business listing page |
| `title` | string | Business listing title |
| `location` | string | Business location (city, county, state) |
| `description` | string | Summary description from the listing card |
| `askingPrice` | string | Listed asking price (dollar amount or "Not Disclosed") |
| `cashFlow` | string | Reported annual cash flow |
| `grossRevenue` | string | Reported annual gross revenue |
| `searchUrl` | string | The search URL this listing was found on |
| `scrapedAt` | string | ISO 8601 timestamp of when the listing was scraped |

#### Sample output

```json
{
    "url": "https://www.bizbuysell.com/business-opportunity/turnkey-charcuterie-catering-business/2640123/",
    "title": "Turnkey Charcuterie Catering Business",
    "location": "Kent County, MI",
    "description": "Well-established charcuterie catering business with a loyal customer base, strong online presence, and consistent revenue growth over the past three years.",
    "askingPrice": "$144,500",
    "cashFlow": "$207,000",
    "grossRevenue": "$385,000",
    "searchUrl": "https://www.bizbuysell.com/businesses-for-sale/",
    "scrapedAt": "2026-04-02T14:30:00.000000+00:00"
}
```

### Tips for best results

- Start with a small `maxItems` (5--10) to verify the scraper works with your URL before running large jobs
- Each BizBuySell search page shows up to 50 listings, so `maxItems: 50` gets one full page
- Use specific category or location URLs to get more targeted results
- The scraper works without proxy in most cases; enable proxy only if you experience blocks
- Some listings show "Not Disclosed" for asking price -- this is how BizBuySell displays them, not a scraper limitation
- Financial fields (cash flow, gross revenue) may be empty for some listings when the seller has not provided them

### Limitations

- BizBuySell uses Akamai Bot Manager for anti-bot protection; the scraper uses a patched browser to bypass this, but occasional blocks may occur
- Only data visible on listing cards is extracted (not full listing page details)
- Cash flow and gross revenue are only available when the seller has disclosed them on the listing card
- Some sponsored or featured listings may have a different card layout and could be partially extracted
- The scraper requires a browser with `headless=False`, which uses more memory than headless scrapers

### Frequently Asked Questions

**Do I need a BizBuySell account to use this scraper?**
No. This scraper extracts publicly visible listing data without any login or account.

**How many listings can I scrape?**
BizBuySell shows up to 50 listings per page with pagination support. You can scrape up to 1,000 listings in a single run by setting `maxItems` accordingly.

**Why is the asking price "Not Disclosed" for some listings?**
Some business sellers choose to hide their asking price on BizBuySell. The scraper accurately reflects what is displayed on the site.

**Why are cash flow or revenue fields empty for some listings?**
Not all sellers provide financial details on their listing cards. These fields are extracted only when the seller has disclosed them.

**Can I filter by business type, location, or price range?**
Yes. Use BizBuySell's website to set your desired filters, then copy the resulting URL and paste it as the `searchUrl` input. The scraper follows whatever filters are encoded in the URL.

**Why does the scraper take time to start?**
The scraper launches a real browser to bypass BizBuySell's Akamai anti-bot protection. The initial page load includes a short wait to pass the bot challenge before extracting data.

**Do I need to configure a proxy?**
In most cases, no. The scraper works from datacenter IPs without proxy. If you experience persistent blocks, try enabling residential proxy in the input configuration.

**What happens if no listings are found?**
The scraper will report a failure with a descriptive message. This can happen if the URL is invalid, the page layout has changed, or the anti-bot challenge was not bypassed. Try running again or with a different URL.

# Actor input Schema

## `searchUrl` (type: `string`):

BizBuySell search or category URL to scrape listings from. Supports any page that shows business-for-sale listing cards (search results, category pages, location pages).

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

Maximum number of business listings to extract. Each search page contains up to 50 listings.

## `proxy` (type: `object`):

Optional proxy configuration. The scraper works without proxy in most cases, but proxy can help if you experience blocks.

## Actor input object example

```json
{
  "searchUrl": "https://www.bizbuysell.com/businesses-for-sale/",
  "maxItems": 5
}
```

# Actor output Schema

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

Dataset containing all scraped business-for-sale listings

# 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 = {
    "searchUrl": "https://www.bizbuysell.com/businesses-for-sale/",
    "maxItems": 5
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BizBuySell Scraper",
        "description": "Scrape business-for-sale listings from BizBuySell.com. Extract asking price, cash flow, gross revenue, location, and description from search results and category pages.",
        "version": "1.0",
        "x-build-id": "Mgt0DyMsbLokyeFFQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~bizbuysell-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-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/crawlerbros~bizbuysell-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-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/crawlerbros~bizbuysell-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-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": [
                    "searchUrl"
                ],
                "properties": {
                    "searchUrl": {
                        "title": "BizBuySell URL",
                        "type": "string",
                        "description": "BizBuySell search or category URL to scrape listings from. Supports any page that shows business-for-sale listing cards (search results, category pages, location pages)."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of business listings to extract. Each search page contains up to 50 listings.",
                        "default": 50
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional proxy configuration. The scraper works without proxy in most cases, but proxy can help if you experience blocks."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
