# BusinessBroker.net Scraper - Businesses for Sale (`pshivam/businessbroker-net-scraper`) Actor

Scrape businesses for sale from BusinessBroker.net: asking price, revenue, cash flow, net profit, location, industry, year founded and employees. Search by state, industry or business type, or get new listings daily. Find acquisition targets fast. Export to Excel, CSV, JSON or use the API.

- **URL**: https://apify.com/pshivam/businessbroker-net-scraper.md
- **Developed by:** [Shivam Prajapati](https://apify.com/pshivam) (community)
- **Categories:** Business, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 business listings

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

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## BusinessBroker.net Scraper - Businesses for Sale

Get businesses for sale from [BusinessBroker.net](https://www.businessbroker.net) as clean, ready-to-use data: asking price, revenue, cash flow, net profit, location, industry, year established, employees, reason for selling and full description. Search by state, industry, business type, or just grab the newest listings every day. Built for search funders, M\&A advisors, business brokers, SBA lenders and anyone hunting for acquisition targets.

**Actively maintained.** Last update: 2026-11-04. Every release passes 1,300+ automated tests on saved BusinessBroker.net pages plus a check against the live site, and Apify test-runs it every day.

### What can you use it for?

- **Find acquisition targets.** Search funders, independent sponsors and small PE firms can screen hundreds of small businesses by price, cash flow and location in a spreadsheet instead of clicking through listings one by one.
- **Daily deal alerts.** Run it every morning with *New listings from the last N days* = 1 and get only fresh deals. Connect it to Google Sheets, Slack or email with Apify integrations.
- **Valuation comps.** Brokers, appraisers and analysts can compare asking price against revenue and cash flow (price multiples) by industry and state.
- **Lead generation for lenders and service providers.** SBA lenders, attorneys, accountants and insurance agents can see which businesses in their area are about to change hands.
- **Market research.** Track how many businesses are for sale per industry or state, and how prices change over time.

### What data do you get?

Every listing comes with these fields. Fields marked *details* are filled when **Open each listing for full details** is on (the default).

| Field | What it is |
|---|---|
| `listingId` | BusinessBroker.net listing number |
| `url` | Link to the listing |
| `title` | Listing headline |
| `askingPrice` | Asking price in USD (empty if not disclosed) |
| `annualRevenue` | Annual revenue in USD |
| `cashFlow` | Cash flow (usually seller's discretionary earnings) in USD |
| `netProfit` | Net profit in USD (*details*) |
| `totalDebt` | Total debt in USD (*details*) |
| `ffeValue` | Value of furniture, fixtures and equipment in USD (*details*) |
| `realEstateValue` | Value of real estate in USD (*details*) |
| `yearEstablished` | Year founded (*details*) |
| `employees` | Number of employees (*details*) |
| `city` | City (empty when hidden or relocatable) |
| `state` | Two-letter state code |
| `county` | County |
| `locationArea` | The seller's own wording for the area, such as "South Florida" (*details*) |
| `isRelocatable` | The business can be moved to another location |
| `industry` | Category, such as "Services: Construction, Contractors" (*details*) |
| `industryUrl` | Link to that category (*details*) |
| `description` | Full business description |
| `reasonForSelling` | Why the owner is selling (*details*) |
| `marketCompetition` | Competition and growth notes (*details*) |
| `propertyFeatures` | Hours, licenses, training period, assets (*details*) |
| `propertyOwnership` | "Owned" or "Leased" (*details*) |
| `isHomeBased` | Home-based business (*details*) |
| `isFranchiseResale` | Resale of a franchise (*details*) |
| `sellerWillTrain` | Owner will train or assist the buyer (*details*) |
| `brokerReference` | The listing broker's own reference number (*details*) |
| `imageUrl` | Main photo |
| `isFeatured` | Shown as a featured listing in search results |
| `hasDetails` | `true` if the listing page was opened for full details |
| `foundOn` | The search page where the listing was found |
| `scrapedAt` | When it was scraped (UTC) |

We do not collect broker names, emails or phone numbers. E-mail addresses, phone numbers, web links and contact names that sellers type into the description are replaced with `[removed]`.

#### Example result

```json
{
  "listingId": "999295",
  "url": "https://www.businessbroker.net/business-for-sale/30-years-established-flooring-installation-biz-los-angeles-california/999295.aspx",
  "title": "30 Years Established Flooring Installation Biz",
  "askingPrice": 599000,
  "annualRevenue": 950000,
  "cashFlow": 266000,
  "netProfit": null,
  "yearEstablished": 1994,
  "employees": 4,
  "city": "Los Angeles",
  "state": "CA",
  "industry": "Services: Construction, Contractors",
  "reasonForSelling": "Retirement.",
  "propertyOwnership": "Owned",
  "isHomeBased": true,
  "isFranchiseResale": false,
  "hasDetails": true
}
```

### How to use it

1. Pick one or more **States**, **Industries** or **Business types**, or paste BusinessBroker.net URLs.
2. Set **Maximum listings**.
3. Click **Start**, then download the results as Excel, CSV or JSON, or send them anywhere with Apify integrations.

Leave everything empty and you get the listings added in the last 3 days.

#### Input options

| Option | What it does |
|---|---|
| `states` | Businesses for sale in these states |
| `industries` | Businesses in these BusinessBroker.net categories. Combined with states, only listings in those states are kept |
| `keywords` | Business types such as Laundromat or Bakery. Combined with states, each type is searched inside each state |
| `newListingsDays` | Also collect listings added in the last N days (0 = off) |
| `startUrls` | Any BusinessBroker.net search/category page or listing page |
| `includeDetails` | Open each listing for the full set of fields (default on). Turn off for a fast, cheaper run |
| `onlyNew` | Skip listings that earlier runs of the same search returned: you get and pay only for ones you haven't had (the first run works as usual) |
| `deepSearch` | Also read every city page in the chosen states to find more listings |
| `minAskingPrice` / `maxAskingPrice` | Keep only listings in this price range (listings with a hidden price are kept) |
| `maxItems` | Stop after this many listings |
| `maxConcurrency` | Pages loaded at the same time (keep low to be polite) |

#### Fast mode vs. full details

- **Full details (default):** opens every listing page. Gives all fields above.
- **Fast mode (`includeDetails` off):** reads only the search results, about 20× faster. You still get title, asking price, revenue, cash flow, city, state, county and the full description. Revenue and cash flow are rounded to the nearest $1,000 in this mode, because that is how the search results show them.

### How much does it cost?

You pay **$2.50 per 1,000 listings** returned (plus a tiny $0.00005 per run start). Platform usage is included.

| Listings | Cost |
|---|---|
| 100 | $0.25 |
| 1,000 | $2.50 |
| 5,000 | $12.50 |

Apify's free plan gives you $5 of credit every month, which covers about 2,000 listings. Set a spending limit on any run and the scraper stops exactly there.

### Use it via API, on a schedule, or with your tools

- **Schedule it** daily or weekly in Apify Console to get new listings automatically.
- **Only new listings:** turn it on in a scheduled run or task and each run returns only listings you haven't had yet, so you never pay twice for the same listing.
- **Integrations:** send results to Google Sheets, Slack, email, Zapier, Make or a webhook.
- **API:** run it from your own code and download results as JSON, CSV or Excel.

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("pshivam/businessbroker-net-scraper").call(run_input={"states": ["CA", "TX"], "maxItems": 200})
for listing in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(listing["title"], listing["askingPrice"], listing["cashFlow"])
```

#### Use it in Clay, n8n, Make or Zapier

Actor: `pshivam/businessbroker-net-scraper`. Paste this input and change the filters to yours:

```json
{"states": ["TX"], "newListingsDays": 7, "onlyNew": true, "maxItems": 500}
```

- **Clay:** create a table from an **Apify** source to pull in the results of a scheduled run of this Actor (it refreshes every 24 hours by default), or use the **Run Apify Actor** enrichment and paste the input.
- **n8n:** add the **Apify** node, choose **Run Actor and get dataset items**, pick this Actor and paste the input.
- **Make:** use **Run an Actor** with *Run synchronously* on, then **Get Dataset Items** with the run's dataset ID.
- **Zapier:** schedule this Actor in Apify, then use the **Finished Actor Run** trigger and **Fetch Dataset Items**. (Zapier stops waiting for **Run Actor** after 30 seconds, and a run usually takes about a minute.)

### Good to know

- **Coverage.** BusinessBroker.net's robots.txt lets crawlers read only the first page of each search, and this scraper respects that. To find more listings it also reads related pages (business types and cities inside each state). Turn on `deepSearch` to read every city page in your states.
- **No duplicates.** A listing that shows up on several search pages is returned once.
- **You pay per listing returned.** The run stops at your *Maximum listings* or at your spending limit, whichever comes first.
- **Removed listings are skipped.** If a listing was taken down between the search and the visit, it is skipped and replaced with the next one.

### This scraper vs. the alternatives

| | This scraper | Copying from BusinessBroker.net by hand | Building your own scraper |
|---|---|---|---|
| 100 listings with full details | About 1 minute | Hours (open and copy each page) | Days to build, then upkeep |
| Output | Excel, CSV, JSON or API; 33 fields per listing | A spreadsheet you type | Whatever you code |
| Asking price, revenue, cash flow | Numbers, ready to sort and filter | Retyped by hand | You write the parsing |
| Only new listings each day | Built in (`onlyNew`) | Compare lists yourself | You build it |
| When the site changes | We fix it; Apify test-runs it daily | - | You fix it |
| Seller contact details | Removed | Your responsibility | Your responsibility |
| Cost | $2.50 per 1,000 listings | Your time | Your time plus hosting |

### FAQ

#### How much does it cost?

$2.50 per 1,000 listings (less on paid Apify plans), so 100 listings cost $0.25. Apify's free plan credit ($5 a month) covers about 2,000 listings.

#### How many listings can I get?

Usually most of your search: California alone shows about 1,200 listings. BusinessBroker.net's robots.txt allows only the first page of each search (about 23 listings), so the scraper also reads the related business-type, county and city pages; `deepSearch` adds every city page in your states.

#### Is it legal to scrape BusinessBroker.net?

This scraper only reads public pages that the site's robots.txt allows, at a polite speed, and collects business data, not personal data. You are responsible for how you use the data; check the site's terms for your use case.

#### Can I get the broker's phone number?

No. We deliberately leave out broker names and contact details. Use the listing `url` to contact the seller through BusinessBroker.net.

#### Something is missing or broken?

Open an issue on the Actor's Issues tab and we will fix it fast.

#### How do I get only new listings every day?

Save your search as a task, turn on **Only new listings** and schedule it daily. Each run then skips the listings earlier runs returned, so you get and pay only for ones you haven't had. Tip: set *Maximum listings* above the number of listings your search has, so the first run gets them all and later runs return just the new ones.

### Ready-made examples

Open one, click **Try for free**, and get data in about a minute:

- [Businesses for sale in California](https://apify.com/pshivam/businessbroker-net-scraper/examples/businesses-for-sale-california)
- [Businesses for sale in Texas](https://apify.com/pshivam/businessbroker-net-scraper/examples/businesses-for-sale-texas)
- [Businesses for sale in Florida](https://apify.com/pshivam/businessbroker-net-scraper/examples/businesses-for-sale-florida)
- [New businesses for sale this week](https://apify.com/pshivam/businessbroker-net-scraper/examples/new-businesses-for-sale-this-week)
- [Car washes for sale](https://apify.com/pshivam/businessbroker-net-scraper/examples/car-washes-for-sale)
- [Small businesses for sale under $500K](https://apify.com/pshivam/businessbroker-net-scraper/examples/businesses-for-sale-under-500k)
- [Businesses for Sale in New York](https://apify.com/pshivam/businessbroker-net-scraper/examples/businesses-for-sale-new-york)
- [Restaurants for Sale in the US](https://apify.com/pshivam/businessbroker-net-scraper/examples/restaurants-for-sale)
- [Laundromats for Sale](https://apify.com/pshivam/businessbroker-net-scraper/examples/laundromats-for-sale)
- [Gas Stations for Sale](https://apify.com/pshivam/businessbroker-net-scraper/examples/gas-stations-for-sale)

### More business-for-sale scrapers

- [DUB.de Scraper - Businesses for Sale in Germany](https://apify.com/pshivam/dub-de-scraper): companies for sale in Germany, Austria and Switzerland with revenue, earnings and year-by-year financials.
- [nexxt-change Scraper - Businesses for Sale & Buyers](https://apify.com/pshivam/nexxt-change-scraper): Germany's official succession marketplace, both companies for sale and buyers looking for a company, with price and revenue bands.
- [Daltons Business Scraper - Businesses for Sale UK](https://apify.com/pshivam/daltons-business-scraper): UK businesses for sale with asking price, leasehold or freehold, turnover, net profit and location.
- [Website Closers Scraper - Online Businesses for Sale](https://apify.com/pshivam/website-closers-scraper): online and tech businesses for sale (eCommerce, SaaS, Amazon FBA) with asking price, cash flow and revenue, plus closed deals for valuation comps.
- [BusinessForSale AU Scraper - Australian Businesses](https://apify.com/pshivam/businessforsale-au-scraper): Australian businesses for sale with asking price, revenue and profit bands, location and category, plus sold businesses for valuation comps.
- [BizBen Scraper - California Businesses for Sale](https://apify.com/pshivam/bizben-scraper): California and other US businesses for sale with asking price, revenue, cash flow, down payment and lease details.
- [Transentreprise Scraper - Businesses for Sale France](https://apify.com/pshivam/transentreprise-scraper): the CCI and CMA chambers' marketplace in France with price, revenue and staff bands, sector, department and region.
- [LINK Business Scraper - Businesses for Sale NZ & AU](https://apify.com/pshivam/link-business-scraper): New Zealand's largest business broker and its Australian offices, with asking price, profit, revenue, industry and location.
- [Bpifrance Transmission Scraper - Businesses for Sale France](https://apify.com/pshivam/bpifrance-transmission-scraper): about 45,000 French businesses and shops for sale from Bpifrance's partner marketplaces, with price, revenue, EBE, staff, sector and region.

### Other scrapers

- [Trade Show Scraper - Worldwide Trade Fair Calendar](https://apify.com/pshivam/trade-show-scraper): trade shows and exhibitions worldwide with dates, venue, city, country, industries and the official website.
- [CeX Scraper - Prices, Trade-In Values & Stock](https://apify.com/pshivam/cex-scraper): CeX (webuy.com) second-hand phones, games and laptops in 11 countries with sell price, cash and voucher trade-in value, stock by store and price history.
- [DealSeek Scraper - Amazon Deals & Promo Codes](https://apify.com/pshivam/dealseek-scraper): Amazon, Walmart and eBay deals in 8 countries with final prices, verified promo codes, coupons and price history.

# Actor input Schema

## `states` (type: `array`):

Businesses for sale in these states.

## `industries` (type: `array`):

Businesses for sale in these industries (BusinessBroker.net categories).

## `keywords` (type: `array`):

Popular business types such as Bakery, Laundromat or Liquor Store. Combined with States, it searches each type inside each state.

## `newListingsDays` (type: `integer`):

Also collect listings added in the last N days (0 = off). Great for daily monitoring of fresh deals.

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

Any BusinessBroker.net category page (state, city, county, industry, keyword, region, asking price) or a single listing page. URLs with '?' are skipped because the site's robots.txt forbids them.

## `includeDetails` (type: `boolean`):

On: also returns net profit, debt, FF\&E, real estate, year established, employees, industry, reason for selling and lease/home-based/franchise flags. Off: about 20x faster and cheaper, returns title, price, revenue, cash flow, location and full description from the search results.

## `onlyNew` (type: `boolean`):

Skip listings that earlier runs of this same search already returned, so you never get or pay for the same listing twice. Turn it on for a scheduled run or a saved task to get only what's new each time. The first run works as usual and remembers what it returned, in your key-value store 'businessbroker-net-scraper-only-new' (delete it to start over).

## `deepSearch` (type: `boolean`):

BusinessBroker.net only allows crawlers to read the first page of each search. Deep search also reads every city page in the chosen states to find more listings. Slower.

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

Skip listings below this asking price. Listings with an undisclosed price are kept.

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

Skip listings above this asking price. Listings with an undisclosed price are kept.

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

Stop after this many listings. You pay per listing returned.

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

How many pages to load at the same time. Keep it low to be polite to the site.

## Actor input object example

```json
{
  "states": [
    "CA"
  ],
  "newListingsDays": 0,
  "includeDetails": true,
  "onlyNew": false,
  "deepSearch": false,
  "maxItems": 100,
  "maxConcurrency": 4
}
```

# Actor output Schema

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

One row per business for sale, shown with the overview view.

## `financials` (type: `string`):

Asking price, revenue, cash flow, profit, debt, FF\&E and real estate per business.

## `runStats` (type: `string`):

Requests made, time spent and number of listings for this run (RUN_STATS record).

# 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 = {
    "states": [
        "CA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pshivam/businessbroker-net-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 = { "states": ["CA"] }

# Run the Actor and wait for it to finish
run = client.actor("pshivam/businessbroker-net-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "states": [
    "CA"
  ]
}' |
apify call pshivam/businessbroker-net-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pshivam/businessbroker-net-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/JbdRQx2NwNJkyyAJC/builds/Ttv0OfEHz4xW5wTi7/openapi.json
