# BusinessesForSale Scraper (`getascraper/businessesforsale-scraper`) Actor

Extract business listings, asking prices, revenues, cash flows, established years, employees count, and seller contact URLs from BusinessesForSale.com. Download clean tables of brokerage resales automatically for private equity research and corporate audits.

- **URL**: https://apify.com/getascraper/businessesforsale-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.56 / 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/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

### 🏢 What does BusinessesForSale scraper do?

This Actor extracts complete lists of active business resales, franchise listings, and corporate assets from the global BusinessesForSale.com directory (https://www.businessesforsale.com). It gathers detailed listing profiles across multiple international regional shards, collecting asking prices, annual sales revenues, cash flows, full descriptive texts, employee counts, lease terms, and broker contact paths. It outputs this data in flat, spreadsheet-friendly formats like JSON, CSV, HTML, and Excel, allowing brokers and private equity teams to compile instant market snapshots.

***

### 💡 Why use BusinessesForSale scraper?

- **Brokerage monitoring:** Keep track of newly active business listings and price changes in your target markets in real time.
- **Acquisition lead generation:** Build complete pipelines of acquisition targets based on precise price, revenue, or cash flow filters.
- **Valuation analysis:** Track pricing trends and valuation multiples (price-to-revenue or price-to-cash-flow) across different sectors.
- **Brokers lead lists:** Extract direct brokerage agency contact form links to follow up within your CRM system.

***

### 🚀 How to use BusinessesForSale scraper?

1. Open the BusinessesForSale Scraper page on the Apify Console.
2. Select your search keywords or paste target search/category URLs.
3. Configure your price, revenue, or location filters.
4. Set your proxy settings (residential proxies are strongly recommended).
5. Click the Run button and wait for the extraction to finish.
6. Download your clean business resales table from the Output tab.

***

### 📥 Input

You can configure these parameters to customize your extraction:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `startUrls` | array | No | Specific category or direct search result page links. |
| `searchKeywords` | array | No | Sector keywords or search terms (e.g. 'coffee shop'). |
| `country` | string | No | Target country site to execute generated keyword searches against. |
| `maxItems` | integer | No | Maximum total business listings to scrape. |
| `minPrice` | integer | No | Lowest visible asking price. |
| `maxPrice` | integer | No | Highest visible asking price. |
| `minRevenue` | integer | No | Lowest visible sales revenue. |
| `minCashFlow` | integer | No | Lowest visible annual cash flow. |
| `deepScrape` | boolean | No | Enable deep scraping to fetch listing detail pages and extract employee counts, years established, and lease terms. |
| `proxyConfiguration` | object | Yes | Pre-configured rotating proxies with residential exit selection. |

***

### 📤 Output

Here is an example of the structured dataset returned for each listing:

```json
{
  "listing_id": "3967471",
  "name": "profitable-coffee-shop-in-bangtao",
  "title": "Profitable Coffee Shop in Bangtao",
  "listing_class": "Business",
  "country": "Thailand",
  "region": "Phuket",
  "city": "Bang Tao",
  "description": "A profitable coffee shop in Bang Tao is for sale.",
  "asking_price": 200000,
  "asking_price_currency": "USD",
  "asking_price_text": "$200,000 (USD)",
  "revenue": 175000,
  "revenue_text": "$100K - $250K (USD)",
  "cash_flow": 70000,
  "cash_flow_text": "$70,000 (USD)",
  "years_established": "3",
  "employees_count": "8",
  "trading_hours": "11:00-00:00 - 7 days",
  "real_estate": "Lease",
  "reason_for_selling": "I'm moving to the US.",
  "picture_url": "https://thailand.businessesforsale.com/uploads/efed68ea-b8fc-4569-8b1d-b46e00c223e9.jpg",
  "contact_url": "https://thailand.businessesforsale.com/thai/profitable-coffee-shop-in-bangtao/contact",
  "listing_url": "https://thailand.businessesforsale.com/thai/profitable-coffee-shop-in-bangtao.aspx",
  "scraped_at": "2026-06-23T12:00:00.000Z"
}
```

***

### 📋 Data table

The final output dataset is completely flat and spreadsheet-friendly:

| Field | Type | Description |
| --- | --- | --- |
| `listing_id` | string | Unique listing identifier on BusinessesForSale. |
| `title` | string | Title of the business or franchise listing. |
| `listing_class` | string | Classification (Business or Franchise). |
| `country` | string | Country name where the listing resides. |
| `region` | string | Local state, province, or region. |
| `city` | string | City name. |
| `description` | string | Short narrative description of the business. |
| `asking_price` | number | Parsed numerical asking price. |
| `asking_price_currency` | string | Currency code (e.g. USD, GBP, EUR). |
| `asking_price_text` | string | Source asking price text. |
| `revenue` | number | Parsed numerical annual revenue. |
| `revenue_text` | string | Source revenue text. |
| `cash_flow` | number | Parsed numerical annual cash flow. |
| `cash_flow_text` | string | Source cash flow text. |
| `years_established` | string | Number of years active. |
| `employees_count` | string | Number of active staff. |
| `trading_hours` | string | Weekly trading hours. |
| `real_estate` | string | Real estate status (Lease, Freehold, Owned). |
| `reason_for_selling` | string | Reason why the business is on the market. |
| `picture_url` | string | Primary listing image URL. |
| `contact_url` | string | Direct link to the seller/broker contact form. |
| `listing_url` | string | Canonical listing page URL on the platform. |
| `scraped_at` | string | ISO 8601 extraction timestamp. |

***

### 💰 Pricing

This Actor utilizes a Serverless got-scraping architecture on a lightweight memory footprint, which keeps compute consumption to an absolute minimum.

- **Pricing model:** Pay-Per-Event billing is active on this Actor.
- **Usage calculation:** You are charged only for the actual number of business listing rows successfully extracted and returned to your dataset.

***

### ⭐ Enjoying BusinessesForSale Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#FBEEE0;border:1px solid #FBEEE0;border-left:5px solid #B45309;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Save hours of manually browsing regional listings for asking price and cash flow data.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other brokers and private equity teams sourcing acquisition targets find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#B45309;border:1px solid #FBEEE0;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/businessesforsale-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

***

### ❓ FAQ, disclaimers, and support

- **Is it legal to scrape BusinessesForSale?** Yes, this scraper extracts publicly accessible listings, financial text, and operational statistics. It does not access private account dashboards or user payment transactions.
- **Can I request a custom feature?** Absolutely. If you need custom integration schemas, CRM push routes, or continuous email alert pipelines, please reach out via the Issues tab.
- **Need help?** If you experience blockages or require technical assistance, please submit a ticket in the Issues tab of this Actor's Store page.

### 🔗 Other actors

- [Proff Scandinavia Scraper](https://apify.com/getascraper/proff-scandinavia-scraper) ↗ - pulls company registry profiles and financials across Norway, Sweden, Denmark, and Finland.
- [Japan Company Scraper: 4.5M+ gBizINFO Records](https://apify.com/getascraper/gbizinfo-japan-company-scraper) ↗ - extracts Japanese company registry records from gBizINFO.
- [CommercialRealEstate.com.au scraper: prices, agents, and deal status ready for your spreadsheet](https://apify.com/getascraper/commercialrealestate-au-scraper) ↗ - collects commercial property listings and deal status from Australia.
- [Probate & foreclosure leads scraper](https://apify.com/getascraper/probate-foreclosure-leads-scraper) ↗ - finds probate and foreclosure property leads for acquisition pipelines.
- [Zauba India Import Export Trade Data Scraper](https://apify.com/getascraper/zauba-scraper) ↗ - extracts India import/export trade shipment records for market intelligence.

# Actor input Schema

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

BusinessesForSale search, category, or direct listing URLs. Overrides all filter fields when provided.

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

Keywords to search for (e.g. 'car wash', 'coffee shop'). Each keyword generates a separate search URL.

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

Target country domain to browse. Each country has its own localized listings.

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

Filter to a specific business category. Combines with locationText when both are set.

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

City, state, or region to filter by (e.g. 'California', 'London', 'New York'). Converted to a URL slug.

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

Maximum total listings to scrape across all search URLs.

## `minPrice` (type: `integer`):

Only return listings with asking prices at or above this value (e.g. 50000).

## `maxPrice` (type: `integer`):

Only return listings with asking prices at or below this value (e.g. 1000000).

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

Only return listings with annual revenue at or above this value. Requires deepScrape.

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

Only return listings with annual revenue at or below this value. Requires deepScrape.

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

Only return listings with annual cash flow at or above this value. Requires deepScrape.

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

Only return listings with annual cash flow at or below this value. Requires deepScrape.

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

Control the order in which BusinessesForSale returns search results.

## `deepScrape` (type: `boolean`):

Fetch individual listing pages to extract revenue, cash flow, employees, lease terms, broker info, and relocatable flags.

## `proxyConfiguration` (type: `object`):

Residential proxies recommended to bypass Cloudflare protection.

## Actor input object example

```json
{
  "startUrls": [],
  "searchKeywords": [],
  "country": "global",
  "industry": "all",
  "maxItems": 100,
  "sortOrder": "newest",
  "deepScrape": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [],
    "searchKeywords": [],
    "country": "global",
    "industry": "all",
    "maxItems": 100,
    "sortOrder": "newest",
    "deepScrape": false,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/businessesforsale-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [],
    "searchKeywords": [],
    "country": "global",
    "industry": "all",
    "maxItems": 100,
    "sortOrder": "newest",
    "deepScrape": False,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "searchKeywords": [],
  "country": "global",
  "industry": "all",
  "maxItems": 100,
  "sortOrder": "newest",
  "deepScrape": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/businessesforsale-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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