# BizBuySell Businesses for Sale Scraper (`datacach/bizbuysell-businesses-for-sale-scraper`) Actor

Scrape businesses for sale from BizBuySell. Filter by state, industry, asking price, cash flow and revenue, and get listings with financials, location, broker and detail URL.

- **URL**: https://apify.com/datacach/bizbuysell-businesses-for-sale-scraper.md
- **Developed by:** [DataCach](https://apify.com/datacach) (community)
- **Categories:** Other, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 businesses

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

**Scrape every business for sale on [BizBuySell](https://www.bizbuysell.com/) into clean, structured JSON, CSV or Excel** — filter by **state, industry, asking price, cash flow and revenue** exactly like the site's own search, and **export the results** without writing a line of scraping code or pasting a single URL.

### What is BizBuySell Businesses for Sale Scraper?

**BizBuySell Businesses for Sale Scraper** extracts business-for-sale listings from [BizBuySell](https://www.bizbuysell.com/businesses-for-sale/), the largest online marketplace for buying and selling small and medium businesses in the United States. Every listing becomes a structured row with **title, description, location, asking price, cash flow, gross revenue, EBITDA, listing type, broker company and a direct link to the deal**.

You don't need to find or paste search URLs. You fill in the **same filters you would click on BizBuySell** — states, industries, listing types, price and cash flow ranges — and the Actor builds the search for you, paginates through it, and pushes each business to a dataset you can **export as JSON, CSV, Excel, HTML or XML**, or read straight from the [Apify API](https://docs.apify.com/api/v2).

### What can this BizBuySell scraper do?

- 🔎 **Search without URLs** — 20+ structured filters mirroring BizBuySell's own search: keyword, states, industries, listing types, asking price, cash flow, gross revenue, year established, date added, and deal toggles like seller financing, real estate included, absentee ownership and home-based businesses.
- 🧩 **Breaks through BizBuySell's 10,000-result ceiling** — any single BizBuySell search stops at 10,000 results. When your filters match more than that, the Actor **automatically splits the search by state, industry and price band**, runs the pieces and merges them, so a nationwide sweep really does return everything.
- 🔁 **Never collect the same business twice** — paste the URLs (or listing numbers) you already have into **Exclude already collected**, and those listings are skipped on every future run.
- 💾 **Resumable runs** — crawl progress is checkpointed to the key-value store, so a migrated or restarted run picks up where it left off instead of re-emitting listings it already delivered.
- ⏱️ **Extraction timestamps on every row** — `extraction_datetime` (ISO-8601 UTC) and `extraction_date` let you build time series, track price drops and audit when each record was captured.
- 🔀 **Sort before you cap** — combine **Sort results by** with **Maximum results** to pull, say, *the 100 highest-cash-flow businesses in Texas* rather than an arbitrary 100.
- 🛡️ **Proxy rotation and anti-bot handling built in** — the Actor rotates residential proxy sessions and HTTP fingerprints, retries with exponential backoff and degrades gracefully, so you don't configure anything.
- ⚡ **No browser, no bloat** — it queries BizBuySell's JSON search endpoint directly instead of rendering pages, which keeps runs fast and memory small (capped at 512 MB).
- 🔌 **Full Apify platform power** — [scheduled runs](https://docs.apify.com/platform/schedules), run monitoring and alerts, [webhooks](https://docs.apify.com/platform/integrations/webhooks), and one-click [integrations](https://apify.com/integrations) with Make, Zapier, Google Sheets, Airtable, Slack and your CRM or BI tool.

### What data does the BizBuySell scraper extract?

Each dataset item is one business listing. These are the main fields:

| Field | Type | Description |
|---|---|---|
| `listingNumber` | number | BizBuySell's internal listing ID — a stable key for deduplication. |
| `url` | string | Direct link to the listing's detail page on BizBuySell. |
| `title` | string | Listing headline. |
| `description` | string | Listing summary text. |
| `location` | string | Location as shown on the listing, e.g. `"Totowa, NJ"`. |
| `county` | string | City/county parsed out of `location`. |
| `state` | string | Two-letter US state code. |
| `region` | string | Region code returned by BizBuySell. |
| `askingPrice` | number | Asking price in USD, when disclosed. |
| `cashFlow` | number | Annual cash flow (seller's discretionary earnings) in USD, when disclosed. |
| `grossRevenue` | number | Annual gross revenue in USD, when disclosed. |
| `ebitda` | number | EBITDA in USD, when disclosed. |
| `listingType` | string | `established`, `assetSale`, `realEstate` or `startup`. |
| `financingTypeId` | number | BizBuySell financing-type code. |
| `realEstateIncluded` | boolean | Whether property is included in the asking price. |
| `brokerCompany` | string | Listing broker's company name. |
| `brokerName` | string | Listing broker's contact name. |
| `brokerCertifications` | string | Broker professional certifications. |
| `isHotProperty` | boolean | Flagged by BizBuySell as a "hot" property. |
| `isRecentlyAdded` | boolean | Recently added to the marketplace. |
| `isPriceReduced` | boolean | Asking price was recently reduced. |
| `auctionStartDate` / `auctionEndDate` | string | Auction window, for auction-style listings. |
| `imageUrl` | string | Listing photo URL. |
| `extraction_datetime` | string | ISO-8601 UTC timestamp of when the listing was scraped. |
| `extraction_date` | string | Extraction date in `mm-dd-yyyy` format. |

> 🔒 Broker **phone numbers and email addresses are deliberately excluded**. Only company-level business information is collected.

### How do I scrape BizBuySell listings?

1. Click **Try for free** on the Actor page, or [create a free Apify account](https://console.apify.com/sign-up).
2. Open the **Input** tab and set your filters — states, industries, listing types, asking price and cash flow ranges. Every field is optional; leaving everything empty searches all of BizBuySell.
3. Set **Maximum results** to something small (like 20) for a first look, and pick a **Sort results by** order so the cap keeps the listings you actually care about.
4. Click **Start**. Watch progress in the **Log** tab — the Actor reports how many listings it has pushed and whether it had to split an oversized search.
5. When the run finishes, open the **Storage → Dataset** tab to preview and filter the results.
6. **Export as JSON, CSV, Excel, HTML or XML**, or fetch the data programmatically with the [Apify API](https://docs.apify.com/api/v2), the [JavaScript client](https://docs.apify.com/api/client/js/) or the [Python client](https://docs.apify.com/api/client/python/).
7. Optional: hit **Schedule** to re-run it daily or weekly, and set **Date added** to `Last 3 days` so each run only pulls fresh listings.

### Input

All input is optional — **just click Run** to scrape the full nationwide BizBuySell feed. In plain language, you can set:

- **Keyword** — free-text search across titles and descriptions, e.g. `pizza`, `car wash`, `franchise`. Searching `franchise` returns *franchise resales* listed for sale as businesses, not BizBuySell's separate Franchises section — see the [FAQ](#does-it-scrape-bizbuysell-franchise-opportunities).
- **States** — pick one or more US states; empty means nationwide.
- **Industries** — top-level BizBuySell categories such as *Restaurants & Food* or *Health Care & Fitness*. Subcategories are included automatically.
- **Listing types** — established businesses, asset sales, real estate, start-ups.
- **Financial filters** — minimum and maximum **asking price**, **cash flow** and **gross revenue**, in USD. `0` means "no bound".
- **Listing filters** — **established after year**, **date added** (anytime / 3 / 7 / 30 days), **real estate for sale or lease**, plus toggles for *published price only*, *commercial location only*, *include relocatable*, *seller financing offered*, *real estate included*, *absentee ownership possible*.
- **Sort results by** — featured, price or cash flow, ascending or descending.
- **Maximum results** — stop after N businesses; `0` collects everything that matches. On the free plan a run returns up to 25 listings.
- **Exclude already collected** — listing URLs or numbers you already have, so they are never saved again (available on paid plans).
- **Parallel requests** *(advanced)* — how many requests run at once. The default of 4 is tuned for reliability.

See the **Input** tab for the full schema with descriptions, defaults and tooltips.

### Free plan vs. paid plan

The Actor runs on any Apify account, including the free one. Two limits apply to free accounts so you can evaluate the data before committing:

| | Free account | Any paid plan |
|---|---|---|
| **Results per run** | Up to 25 listings, even with *Maximum results* set higher or to `0` | Unlimited — `0` collects every listing that matches your filters |
| **Exclude already collected** | Ignored (the run logs a warning) | Full support — skip listings you already have so you never pay for them twice |
| **Every filter, field and export format** | ✅ Included | ✅ Included |

Nothing else changes: free runs return the same fields, the same accuracy and the same export options — just fewer rows. Twenty-five listings is enough to check that the financials, location and broker data fit your pipeline before you scale up. Upgrading the account lifts both limits immediately; no change to your input is needed.

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

You pay per listing saved to the dataset — nothing else. Compute, proxies, retries and storage are already included in the price, so the number you see below is the number you pay. The rate drops as your Apify plan grows:

| Your Apify plan | Price per 1,000 listings | 100 listings | 10,000 listings | 50,000 listings |
|---|---|---|---|---|
| **Free** | $3.00 | $0.30 | — | — |
| **Starter** | $2.00 (−33%) | $0.20 | $20 | $100 |
| **Scale** | $1.50 (−50%) | $0.15 | $15 | $75 |
| **Business** | $0.99 (−67%) | $0.099 | $9.90 | $49.50 |

On the **Free** plan a run returns at most 25 listings, so the higher-volume columns only apply from **Starter** upwards.

Three things that keep the bill predictable:

- **You are never charged twice for the same listing.** Duplicates are removed inside every run, and anything you list under **Exclude already collected** is skipped before it reaches the dataset — so a weekly monitoring run only bills you for what is genuinely new.
- **Failed and retried requests are free.** Bot protection, timeouts and retries are on us; only listings that actually land in your dataset count.
- **The default is deliberately cheap.** *Maximum results* starts at 100, so a first exploratory run costs about **$0.20** on Starter. Raise the cap once the output looks right.

To estimate a run before starting it, apply your filters on [bizbuysell.com](https://www.bizbuysell.com/businesses-for-sale/) and read the result count off the page — that is very close to what the Actor will return and bill.

### Output example

Real records produced by the Actor:

```json
[
  {
    "listingNumber": 2538659,
    "url": "https://www.bizbuysell.com/business-opportunity/own-a-popular-turnkey-texmex-fast-casual-national-franchise-restaurant/2538659/",
    "title": "Own a Popular Turnkey TexMex Fast Casual National Franchise Restaurant",
    "description": "Established TexMex Fast Casual Franchise Restaurant - Totowa, NJ This turnkey franchise restaurant represents an exceptional opportunity to acquire a proven QSR concept in a prime downtown Totowa...",
    "location": "Totowa, NJ",
    "county": "Totowa",
    "state": "NJ",
    "region": "NJ",
    "askingPrice": 165000.0,
    "cashFlow": 59000.0,
    "grossRevenue": null,
    "ebitda": null,
    "listingType": "established",
    "financingTypeId": 0,
    "realEstateIncluded": false,
    "brokerCompany": null,
    "brokerName": null,
    "brokerCertifications": null,
    "isHotProperty": false,
    "isRecentlyAdded": true,
    "isPriceReduced": false,
    "auctionStartDate": null,
    "auctionEndDate": null,
    "imageUrl": "https://images.bizbuysell.com/shared/listings/253/2538659/02d93e46-557c-4a27-a5f2-62ba62339a92-W336.webp",
    "extraction_datetime": "2026-08-07T20:19:56.445336+00:00",
    "extraction_date": "08-07-2026"
  },
  {
    "listingNumber": 2533918,
    "url": "https://www.bizbuysell.com/business-opportunity/fireplace-and-hearth-retailer-central-maryland-30-years-established/2533918/",
    "title": "Fireplace & Hearth Retailer | Central Maryland | 30+ Years/Established",
    "description": "FINANCIAL SNAPSHOT Asking Price: $449,000 Annual Revenue: $646,500 Annual Cash Flow: $145,000 Inventory at Cost: $250,000...",
    "location": "Westminster, MD",
    "county": "Westminster",
    "state": "MD",
    "region": "MD",
    "askingPrice": 449000.0,
    "cashFlow": 145000.0,
    "grossRevenue": null,
    "ebitda": null,
    "listingType": "established",
    "financingTypeId": 0,
    "realEstateIncluded": false,
    "brokerCompany": null,
    "brokerName": null,
    "brokerCertifications": null,
    "isHotProperty": false,
    "isRecentlyAdded": false,
    "isPriceReduced": false,
    "auctionStartDate": null,
    "auctionEndDate": null,
    "imageUrl": "https://images.bizbuysell.com/shared/listings/253/2533918/f39d8b3d-8e47-428c-90b4-df9952886a68-W336.webp",
    "extraction_datetime": "2026-08-07T20:19:56.445336+00:00",
    "extraction_date": "08-07-2026"
  }
]
```

You can download the dataset in various formats such as **JSON, HTML, CSV, or Excel**.

### Use cases: who scrapes BizBuySell data?

- 🏢 **Acquisition entrepreneurs and searchers** — run a standing search for businesses in your buy box (industry + state + cash flow band) and get new listings delivered daily.
- 💼 **Search funds and SMB private equity** — automate deal sourcing across many geographies at once instead of checking the site market by market.
- 🤝 **Business brokers and M\&A advisors** — build comparable-sale databases, benchmark asking-price and cash-flow multiples, and watch competing listings in your niche.
- 📊 **Market researchers and analysts** — study small-business valuations, regional M\&A activity and how asking prices move over time using the extraction timestamps.
- 🎯 **Lead-generation teams** — identify business owners actively looking to exit and feed the list into your CRM through Apify's integrations.
- 🛠️ **Developers and data teams** — pull fresh BizBuySell data into an internal tool, dashboard or warehouse with the Apify API, no scraping infrastructure to maintain.

### Other Actors you might like

| Actor | What it does |
|---|---|
| *Your other Actor* | *Short description* |
| *Your other Actor* | *Short description* |

Browse [Apify Store](https://apify.com/store) for more scrapers you can chain with this one.

### FAQ

#### Is it legal to scrape BizBuySell?

This Actor collects only **publicly available listing information** that any visitor to bizbuysell.com can already see. It does not access private, gated or personal data, and it deliberately omits broker phone numbers and email addresses. You are responsible for using the extracted data in compliance with BizBuySell's Terms of Service and applicable law, including data-protection rules such as GDPR and CCPA where relevant. This Actor is not affiliated with, endorsed by or sponsored by BizBuySell.

#### Do I need proxies to scrape BizBuySell?

No. Proxy rotation is built in and requires no configuration. The Actor rotates residential proxy sessions and HTTP fingerprints on every request, and retries with exponential backoff when BizBuySell's bot protection pushes back.

#### How do I scrape more than 10,000 BizBuySell listings?

You don't have to do anything. BizBuySell caps any single search at 10,000 results, so when your filters match more, the Actor **automatically subdivides the search by state, industry and price band**, crawls each slice and merges the output. The log tells you when a split happened.

#### How do I avoid scraping duplicate listings across runs?

Two mechanisms. Within a run, listings are deduplicated by `listingNumber` — this works on every account. Across runs, paste the `url` (or `listingNumber`) values from your previous dataset into **Exclude already collected** and those businesses are never saved again; this one needs a paid plan, as free runs ignore the list. For scheduled monitoring, set **Date added** to `Last 3 days` so each run only touches fresh listings — that works on any account and is the cheaper approach anyway, since it also cuts the crawling work rather than just filtering the output.

#### Can I schedule the BizBuySell scraper to run daily?

Yes. Use the **Schedule** button on the Actor page to run it hourly, daily or weekly, and connect a [webhook](https://docs.apify.com/platform/integrations/webhooks) or an integration such as Google Sheets, Airtable, Slack, Make or Zapier to receive each new batch automatically.

#### Can I use the BizBuySell scraper via API?

Yes. Every run and dataset is reachable through the [Apify API](https://docs.apify.com/api/v2), the [JavaScript client](https://docs.apify.com/api/client/js/) and the [Python client](https://docs.apify.com/api/client/python/), so you can trigger runs and pull results directly into your own application.

#### Does it scrape the full BizBuySell listing detail page?

No — this Actor reads BizBuySell's **search results**, which is what makes it fast and lets it sweep entire states in one run. Detail-page-only fields such as number of employees, year established, inventory value or reason for selling are not included. Every listing does come with its `url`, so you can follow up on the ones that matter.

#### Does it scrape BizBuySell franchise opportunities?

No. BizBuySell's search has two separate sections — **Businesses** and **Franchises** — and this Actor covers **Businesses for sale** only. The two are different products: a franchise opportunity is a franchisor offering new units nationwide, described by required investment, liquid capital, net worth and franchise fees, whereas a business listing is one operating company at one address with an asking price, cash flow and revenue.

What can confuse: searching the keyword `franchise` **does** return listings, but those are **franchise resales** — an existing franchised location (a specific store) whose owner is selling it. Those are genuine Businesses-section listings and this Actor collects them in full. What it does not collect is the Franchises section's new-unit opportunities.

#### Why are some fields `null`?

Because BizBuySell sellers choose what to disclose. Many listings withhold `cashFlow`, `grossRevenue` or `ebitda`, and a large share do not publish an asking price at all. A `null` means the marketplace itself does not expose that value for that listing — it is not a scraping error. Turn on **Listings with a published price only** if you want to exclude them.

#### Why did my run return fewer results than expected?

Either your filters are narrower than you think — check the same filters on [bizbuysell.com](https://www.bizbuysell.com/businesses-for-sale/) — or **Maximum results** capped the run. On the free plan, runs return up to 25 listings. Very rarely, sustained bot protection can end a run early; the Actor logs this clearly, keeps everything it already collected in the dataset, and a retry a little later normally succeeds.

### 💡 Pro tips

- **Narrow before you scale.** Validate one state or industry against the live site before launching a nationwide sweep.
- **Sort deliberately.** *Price: high to low* plus a result cap gives you the top of the market; *Cash flow: high to low* gives you the most profitable operations.
- **Track price drops** by scheduling weekly runs and comparing `askingPrice` per `listingNumber` using the `extraction_date` field.
- **Leave parallel requests at 4** unless a run is timing out — pushing it higher trips bot protection more often and can end up slower.
- **Chain it into your stack** with Apify integrations: straight to Google Sheets for review, or to a webhook that scores new deals against your buy box.

### Support

Found a bug or want a field added? Open an issue in the Actor's **Issues** tab in Apify Console — bug reports and feature requests are read and welcome. For custom scraping solutions, higher-volume needs or a tailored data pipeline, get in touch through the support contact on the Actor page.

# Actor input Schema

## `keyword` (type: `string`):

Free-text search across listing titles and descriptions. For example <code>pizza</code>, <code>car wash</code> or <code>franchise</code>. Leave empty to search all listings.

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

US states to search, for example California and Texas. Leave empty to search the whole country. Selecting fewer states makes the run faster and cheaper.

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

Top-level BizBuySell industries, for example Restaurants & Food or Retail. Leave empty to include every industry. Subcategories are included automatically when you pick a parent industry.

## `listingTypes` (type: `array`):

Which kinds of listing to include. Established businesses are running operations; asset sales are equipment or inventory only; real estate is property; start-ups are pre-revenue. Leave empty to include all four.

## `askingPriceMin` (type: `integer`):

Lowest asking price to include, in US dollars. Set to 0 for no lower bound. Listings that do not publish a price are still included unless you turn on the price filter below.

## `askingPriceMax` (type: `integer`):

Highest asking price to include, in US dollars. Set to 0 for no upper bound.

## `cashFlowMin` (type: `integer`):

Lowest annual cash flow (seller discretionary earnings) to include, in US dollars. Set to 0 for no lower bound.

## `cashFlowMax` (type: `integer`):

Highest annual cash flow to include, in US dollars. Set to 0 for no upper bound.

## `grossRevenueMin` (type: `integer`):

Lowest annual gross revenue to include, in US dollars. Set to 0 for no lower bound.

## `grossRevenueMax` (type: `integer`):

Highest annual gross revenue to include, in US dollars. Set to 0 for no upper bound.

## `establishedAfterYear` (type: `integer`):

Only businesses founded in or after this year, for example 2010. Leave empty to include businesses of any age.

## `daysListedAgo` (type: `string`):

How recently the listing was published on BizBuySell. Use this to poll for new listings on a schedule without re-collecting old ones.

## `realEstateListing` (type: `string`):

Whether to include property listed for sale, for lease, or both. "Show all" includes every listing regardless of property arrangement.

## `hideListingsWithoutPrice` (type: `boolean`):

When on, listings whose asking price is not disclosed are excluded. When off (the default), they are included with an empty price field — BizBuySell withholds the price on a large share of listings.

## `hideHomeBased` (type: `boolean`):

When on, businesses run from the owner's home are excluded. When off (the default), home-based businesses are included.

## `includeRelocatable` (type: `boolean`):

When on, businesses that can be moved to another location are added to the results even if they sit outside the states you selected. When off (the default), only businesses tied to their listed location appear.

## `mustHaveSellerFinancing` (type: `boolean`):

When on, only listings where the seller finances part of the purchase price are returned. When off (the default), financing is not considered.

## `mustHaveRealEstate` (type: `boolean`):

When on, only listings whose asking price includes the property are returned. When off (the default), leased-premises businesses are included too.

## `mustAllowAbsenteeOwner` (type: `boolean`):

When on, only businesses that can run without the owner on site are returned — useful for passive-income buyers. When off (the default), all are included.

## `sortBy` (type: `string`):

Order in which BizBuySell returns the listings. This matters when you set a result limit: with "Price: high to low" and a limit of 100, you get the 100 most expensive businesses rather than an arbitrary 100.

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

Stop after this many businesses. Set to 0 to collect everything that matches your filters. You are charged per result, so start small to preview the data and raise the limit once the output looks right. <b>Free plan is capped at 25 results</b>, including when this is set to 0.

## `excludeUrls` (type: `array`):

Businesses you already have. Anything listed here is <b>never saved again</b>, no matter where it appears in the results — so you only pay for what is new. Paste the <code>url</code> values from a previous run's dataset (the <code>listingNumber</code> works too). <br><br>This does not make the run faster: the Actor still has to crawl past those listings to find the new ones. It only changes what gets saved and billed. <b>Ignored on the free plan.</b>

## `concurrency` (type: `integer`):

How many requests run at the same time. Higher values finish sooner but are more likely to trip BizBuySell's bot protection, which forces retries and can end up slower overall. Leave at the default unless a run is timing out.

## Actor input object example

```json
{
  "states": [],
  "industries": [],
  "listingTypes": [],
  "askingPriceMin": 0,
  "askingPriceMax": 0,
  "cashFlowMin": 0,
  "cashFlowMax": 0,
  "grossRevenueMin": 0,
  "grossRevenueMax": 0,
  "daysListedAgo": "0",
  "realEstateListing": "all",
  "hideListingsWithoutPrice": false,
  "hideHomeBased": false,
  "includeRelocatable": false,
  "mustHaveSellerFinancing": false,
  "mustHaveRealEstate": false,
  "mustAllowAbsenteeOwner": false,
  "sortBy": "featured",
  "maxResults": 100,
  "excludeUrls": [],
  "concurrency": 4
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

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

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datacach/bizbuysell-businesses-for-sale-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/QZ6VaMeYY14QgCdzQ/builds/0g6PxBV6qozCkmYaJ/openapi.json
