# BusinessesForSale.com Listings Scraper (`jungle_synthesizer/businessesforsale-com-global-business-listings-scraper`) Actor

Extract business-for-sale listings worldwide: title, location, sector, asking price, revenue, and cash flow.

- **URL**: https://apify.com/jungle\_synthesizer/businessesforsale-com-global-business-listings-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 record scrapeds

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

## BusinessesForSale.com Listings Scraper

Scrape business-for-sale listings from [BusinessesForSale.com](https://www.businessesforsale.com), one of the largest international marketplaces for buying and selling businesses. Returns title, location, country, sector, asking price, annual revenue, and cash flow for listings spanning 27+ countries.

***

### BusinessesForSale.com Scraper Features

- Extracts asking price, annual revenue, and cash flow for every listing
- Covers the full worldwide index — not just one country's slice of the marketplace
- Parses the business sector (Restaurants, IT Businesses, Cafes and Diners, and hundreds more) directly from each listing
- Splits location into city/region and a clean country field
- Returns a stable listing ID and the canonical detail-page URL for every record
- Handles money values however the seller entered them — an exact figure or a rounded range — and normalizes both to a number

***

### Who Uses BusinessesForSale.com Data?

- **Business brokers** — track new listings and asking-price trends across a sector or region
- **Investors and search-fund operators** — screen a market for acquisition targets by revenue and cash flow
- **Franchise consultants** — monitor which independent businesses are coming to market
- **Market researchers** — build datasets on small-business valuations by country and sector
- **Lead-gen teams** — feed listing contacts into a CRM for outreach to sellers or brokers

***

### How BusinessesForSale.com Scraper Works

1. Set `maxItems` to how many listings you want.
2. The scraper works through the marketplace's listings and pulls the full detail for each one — asking price, revenue, cash flow, sector, and location.
3. Every listing lands in your dataset as a clean, structured record, ready to export or pipe into another tool.

***

### Input

```json
{
  "maxItems": 25
}
```

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `maxItems` | Integer | 10 | Maximum number of listings to scrape |
| `resumeCursor` | String | — | Cursor from a previous run's Output. Continues a stopped crawl without re-fetching listings you already have. |

#### Resuming a large crawl

Every run emits a `resumeCursor` in its Output. If a large crawl stops before it finishes — because it hit `maxItems`, your spend cap (`maxTotalChargeUsd`), or was aborted — start a new run with **the same input** plus that `resumeCursor` to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.

- You are **not re-charged** for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its `resumeCursor` is no longer valid.
- `resumeCursor` is opaque — supply it unmodified.

***

### BusinessesForSale.com Scraper Output Fields

```json
{
  "listing_id": "3986102",
  "title": "Long-standing Popular Restaurant And Café In Chicago, IL",
  "location": "Chicago, Illinois, US",
  "country": "US",
  "sector": "Cafes and Diners",
  "asking_price": 299000,
  "turnover": 1541153,
  "net_profit": 103558,
  "detail_url": "https://us.businessesforsale.com/us/long-standing-popular-restaurant-and-cafe-in-chicago-il.aspx"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `listing_id` | String | Source-native listing ID |
| `title` | String | Listing title |
| `location` | String | Full location string (city, region, country) |
| `country` | String | Country the business is located in |
| `sector` | String | Business sector (e.g. Restaurants, IT Businesses, Cafes and Diners) |
| `asking_price` | Number | Asking price in USD — the upper bound when the seller listed a rounded range instead of an exact figure |
| `turnover` | Number | Annual revenue in USD — same rounding rule as `asking_price` |
| `net_profit` | Number | Annual cash flow / net profit in USD — same rounding rule as `asking_price` |
| `detail_url` | String | Canonical URL of the listing detail page |

Franchise "opportunity" listings — a single franchise brand advertised across multiple locations rather than an individual business for sale — aren't included; they're priced and structured differently and don't map cleanly onto these fields.

***

### FAQ

#### How do I scrape BusinessesForSale.com?

Run this actor with a `maxItems` value and it returns structured listing data — no manual browsing or copy-pasting from the site required.

#### What data can I get from BusinessesForSale.com?

Title, location, country, sector, asking price, annual revenue, and cash flow for every listing, plus the listing ID and detail-page URL.

#### Does this cover every country, or just the US?

The full worldwide index — 52,000+ listings across 27+ country marketplaces (US, UK, Canada, Australia, and more), not a single country's slice.

#### How much does BusinessesForSale.com Scraper cost to run?

Pricing is pay-per-result under Apify's PPE model — see the actor's Pricing tab for the current per-record rate plus a small fixed run cost.

#### What happens to listings priced as a range instead of an exact figure?

Some sellers list "Under $100K" instead of an exact revenue figure. The scraper returns the upper bound of that range as the number, so every record stays numeric and comparable.

***

### Need More Features?

Need custom fields, filters, or a different target site? [File an issue](https://console.apify.com/actors/issues) or get in touch.

### Why Use BusinessesForSale.com Scraper?

- **Full worldwide coverage** — pulls from the unified global index, not one country's subdomain
- **Clean, comparable numbers** — asking price, revenue, and cash flow always come back as numbers, even when the source listed a rounded range instead of an exact figure
- **Sector included** — parsed straight from each listing, so you can group or filter by industry without extra scraping

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `resumeCursor` (type: `string`):

Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs).

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

Maximum number of listings to scrape

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10
}
```

# 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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/businessesforsale-com-global-business-listings-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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/businessesforsale-com-global-business-listings-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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10
}' |
apify call jungle_synthesizer/businessesforsale-com-global-business-listings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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