# BusinessesForSale Listings Scraper (`parsebird/businessesforsale-listings-scraper`) Actor

Scrape BusinessesForSale.com listings: titles, prices, revenue, cash flow, locations, categories, tags, images, and contact links. Use URLs or keyword searches. Export as JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/businessesforsale-listings-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 listing 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 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

### BusinessesForSale Listings Scraper

Scrape [BusinessesForSale.com](https://www.businessesforsale.com/) listings into structured acquisition-market data: titles, asking prices, revenue, cash flow, locations, categories, tags, images, and contact links.

<table><tr>
<td style="border-left:4px solid #2D6A4F;padding:12px 16px;font-weight:600">
Turn BusinessesForSale search pages, category pages, franchise pages, listing URLs, or keyword searches into clean deal-sourcing data with financial filters, disclosed-only toggles, detail-page enrichment, and exports for analysis or integrations.
</td>
</tr></table>

<br>

<table>
<tr>
<td colspan="3" style="padding:10px 14px;background:#2D6A4F;border:none;border-radius:4px 4px 0 0">
<span style="color:#FAFAF9;font-size:14px;font-weight:700;letter-spacing:0.5px">ParseBird Market Research Actors</span>
<span style="color:#D8F3DC;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Business listings, leads, companies, and market signals</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;border-right:none;border-top:none;vertical-align:top;width:33%;background:#D8F3DC">
🔎 &nbsp;<a href="https://apify.com/parsebird/businessesforsale-listings-scraper" style="color:#2D6A4F;text-decoration:none;font-weight:700;font-size:13px">BusinessesForSale</a><br>
<span style="color:#2D6A4F;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%">
🏢 &nbsp;<a href="https://apify.com/parsebird/yellowpages-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">YellowPages USA</a><br>
<span style="color:#78716C;font-size:11px">Local business leads</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:33%">
🌐 &nbsp;<a href="https://apify.com/parsebird/website-contact-finder" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Website Contact Finder</a><br>
<span style="color:#78716C;font-size:11px">Emails and contact pages</span>
</td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

````

BusinessesForSale Listings Scraper (parsebird/businessesforsale-listings-scraper) scrapes public BusinessesForSale.com business and franchise listings. Inputs: startUrls ({url:string}\[], search/category/franchise/listing URLs), searchKeywords (string\[], default \["coffee shop"]), maxResults (int, default 20), country (global/us/uk/canada/australia/new-zealand), industry (string slug), locationText (string), sortOrder (default/newest/asking-price-lowest/asking-price-highest/turnover-lowest/turnover-highest/net-profit-lowest/net-profit-highest), financial min/max filters, and disclosed-only toggles. Output fields: listingId, url, sourceUrl, resultPosition, title, listingLabels, listingClass, location, description, financials, business, details, media, contact. Pricing: $0.80/1,000 listings for Free/Bronze/Silver and $0.60/1,000 for Gold. API: https://apify.com/parsebird/businessesforsale-listings-scraper/api - Token: https://console.apify.com/account/integrations

````

### What is BusinessesForSale Listings Scraper?

**BusinessesForSale Listings Scraper** is an Apify Actor that extracts public business-for-sale and franchise listing data from [BusinessesForSale.com](https://www.businessesforsale.com/). Use it as a **BusinessesForSale API alternative** when you need structured acquisition targets, broker inventory, comparable listings, franchise opportunities, or market snapshots without manual copy-paste.

You can paste BusinessesForSale search, category, franchise, or listing URLs, or generate keyword searches from inputs such as `coffee shop`, `apps`, `restaurants`, and `car wash`. Results are saved to an [Apify Dataset](https://docs.apify.com/platform/storage/dataset), where you can preview, filter, export, schedule, or send them through the [Apify API](https://docs.apify.com/api/v2).

### What can BusinessesForSale Listings Scraper do?

- Scrape BusinessesForSale search pages, category pages, franchise pages, and individual listing URLs.
- Generate source search URLs from keywords, country sites, industry slugs, location text, and source-supported sort options.
- Extract deal-research fields including title, URL, location, asking price, revenue, cash flow, EBITDA, categories, tags, description, images, and contact URL.
- Enrich listings from detail pages when public fields are available.
- Deduplicate listings by listing ID or canonical URL inside each run.
- Use financial filters and disclosed-only toggles to focus on listings with visible price, revenue, or cash-flow data.
- Run on Apify with scheduling, API access, webhooks, integrations, and export formats including JSON, CSV, and Excel.

### What data can you extract from BusinessesForSale?

Each dataset item is one BusinessesForSale listing. Some fields can be empty when the source listing does not show that value.

| Field | Description |
|-------|-------------|
| `listingId` | BusinessesForSale listing identifier when available from the URL or page source |
| `url` | Canonical listing URL |
| `sourceUrl` | Search, category, franchise, or listing URL that produced the row |
| `resultPosition` | Position in the submitted source or generated search |
| `title` | Business or franchise listing title |
| `listingLabels` | Source labels such as New, Business, Franchise, Opportunity, or Price Reduced |
| `listingClass` | Source-backed class such as business, franchise, or opportunity |
| `location` | Display location plus parsed country, region, and city when visible |
| `description` | Best available public listing description |
| `financials` | Asking price, revenue, cash flow, and EBITDA as source text with parsed amount and currency when exact |
| `business` | Related source categories and listing tags |
| `details` | Premises, lease, employees, trading hours, support, reasons for selling, and expansion notes when shown |
| `media` | Direct source image URLs |
| `contact` | Public seller, broker, franchise, or opportunity contact URL and seller name when visible |

### How to scrape BusinessesForSale

1. Open [BusinessesForSale Listings Scraper](https://apify.com/parsebird/businessesforsale-listings-scraper) on Apify Store.
2. Click **Try for free** to open the actor in Apify Console.
3. Add one or more BusinessesForSale URLs, such as a search page, category page, franchise page, or listing URL.
4. Or enter search keywords such as `coffee shop`, `apps`, `restaurants`, or `car wash`.
5. For generated searches, choose the country site and optionally add an industry slug, location text, and sort order.
6. Set **Listing Limit** to a small number such as `50` for the first run.
7. Use financial filters or disclosed-only toggles when you only want rows with visible price, revenue, or cash-flow values.
8. Click **Start** and wait for the run to finish.
9. Open the dataset to preview rows or export results as JSON, CSV, Excel, HTML, or XML.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrls` | array | No | `[]` | BusinessesForSale search, category, franchise, or listing URLs you already have |
| `searchKeywords` | string[] | No | `["coffee shop"]` | Business themes used to generate search URLs |
| `maxResults` | integer | No | `20` | Maximum saved listings across all sources |
| `country` | string | No | `global` | Country site used for generated keyword searches |
| `industry` | string | No | `""` | Optional source slug such as `restaurants` or `coffee-shops` |
| `locationText` | string | No | `""` | Optional city, region, state, or country wording for generated searches |
| `sortOrder` | string | No | `newest` | Source-supported sort order for generated keyword searches |
| `minAskingPrice` / `maxAskingPrice` | integer | No | `0` | Optional asking-price amount filters |
| `minRevenue` / `maxRevenue` | integer | No | `0` | Optional revenue amount filters |
| `minCashFlow` / `maxCashFlow` | integer | No | `0` | Optional cash-flow amount filters |
| `onlyDisclosedPrice` | boolean | No | `false` | Require visible asking-price text |
| `onlyDisclosedRevenue` | boolean | No | `false` | Require visible revenue text |
| `onlyDisclosedCashFlow` | boolean | No | `false` | Require visible cash-flow text |

### Output example

```json
{
  "listingId": "3967471",
  "url": "https://thailand.businessesforsale.com/thai/profitable-coffee-shop-in-bangtao.aspx",
  "sourceUrl": "https://www.businessesforsale.com/search/coffee-shops-for-sale",
  "resultPosition": 1,
  "title": "Profitable Coffee Shop in Bangtao",
  "listingLabels": ["New", "Business"],
  "listingClass": "business",
  "location": {
    "display": "Bang Tao, Phuket, Thailand",
    "country": "Thailand",
    "region": "Phuket",
    "city": "Bang Tao"
  },
  "description": "A profitable coffee shop in Bang Tao is for sale.",
  "financials": {
    "askingPrice": { "text": "$200,000 (USD)", "amount": 200000, "currency": "USD" },
    "revenue": { "text": "$100K - $250K (USD)", "amount": null, "currency": "USD" },
    "cashFlow": { "text": "$70,000 (USD)", "amount": 70000, "currency": "USD" },
    "ebitda": { "text": null, "amount": null, "currency": null }
  },
  "business": {
    "categories": [
      {
        "name": "Coffee Shops",
        "url": "https://thailand.businessesforsale.com/thai/search/coffee-shops-for-sale"
      }
    ],
    "tags": ["Lease", "Relocatable"]
  },
  "details": {
    "realEstate": "Lease",
    "leaseTerms": "45,000 Thai baht per month. A 9-year contract with automatic renewal",
    "premises": "120 square metres, a veranda, a modern toilet, a bar counter, a kitchen.",
    "employees": "8",
    "yearsEstablished": "3",
    "tradingHours": "11:00-00:00 - 7 days",
    "supportTraining": "all",
    "reasonForSelling": "I'm moving to the US.",
    "expansionPotential": "As a special gift, we'll open another venue for you."
  },
  "media": {
    "imageUrls": [
      "https://thailand.businessesforsale.com/uploads/efed68ea-b8fc-4569-8b1d-b46e00c223e9.jpg"
    ]
  },
  "contact": {
    "url": "https://thailand.businessesforsale.com/thai/profitable-coffee-shop-in-bangtao/contact",
    "sellerName": null
  }
}
````

### Use cases

🔎 **Deal sourcing** - Build structured target lists of businesses, franchises, and opportunities for acquisition research.

📊 **Market research** - Compare asking prices, revenue ranges, cash flow, locations, and categories across countries or industries.

📈 **Broker and franchise monitoring** - Schedule recurring runs to track new or changed BusinessesForSale listings.

🤖 **AI assistant workflows** - Feed listing data into LLM agents through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

🔄 **CRM and spreadsheet workflows** - Send results to Google Sheets, Airtable, Slack, Zapier, Make, or your database through [Apify integrations](https://docs.apify.com/platform/integrations).

### How it works

1. The actor validates pasted URLs and generated keyword-search settings.
2. It fetches public BusinessesForSale HTML pages with browser-like headers.
3. Search result cards are parsed for listing URLs, labels, locations, financials, descriptions, tags, images, and contact links.
4. Listing detail pages are fetched when available to enrich descriptions, categories, property details, business operation fields, and media.
5. Duplicate rows are skipped by listing ID or canonical URL.
6. Financial and disclosed-only filters are applied before rows are saved.
7. Each saved listing is pushed to an Apify Dataset and billed as one pay-per-event result.

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

BusinessesForSale Listings Scraper uses pay-per-event pricing. You are charged once per saved listing, not for duplicate or skipped rows.

| Plan | Price per 1,000 saved listings | Example: 5,000 listings |
|------|-------------------------------|--------------------------|
| Free | **$0.80** | $4.00 |
| Bronze | **$0.80** | $4.00 |
| Silver | **$0.80** | $4.00 |
| Gold | **$0.60** | $3.00 |

Apify platform usage costs are separate. Keep your first run small, review the dataset, then scale with a larger `maxResults` value or recurring [schedules](https://docs.apify.com/platform/schedules). Apify offers trial credits on eligible accounts; check current details on the [Apify pricing page](https://apify.com/pricing).

### API usage examples

Run the BusinessesForSale scraper programmatically with the [Apify API](https://docs.apify.com/api/v2).

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run_input = {
    "searchKeywords": ["coffee shop"],
    "maxResults": 20,
    "country": "us",
    "sortOrder": "newest",
    "onlyDisclosedPrice": False,
}

run = client.actor("parsebird/businessesforsale-listings-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["financials"]["askingPrice"]["text"], item["url"])
```

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const input = {
    searchKeywords: ['coffee shop', 'restaurants'],
    maxResults: 20,
    country: 'us',
    sortOrder: 'newest',
    onlyDisclosedRevenue: false,
};

const run = await client.actor('parsebird/businessesforsale-listings-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

items.forEach((item) => {
    console.log(`${item.title} - ${item.location.display} - ${item.url}`);
});
```

You can connect finished datasets to [Google Sheets](https://docs.apify.com/platform/integrations/google-sheets), [Slack](https://docs.apify.com/platform/integrations/slack), [Zapier](https://docs.apify.com/platform/integrations/zapier), [Make](https://docs.apify.com/platform/integrations/make), webhooks, or your own API pipeline.

### Is it legal to scrape BusinessesForSale?

BusinessesForSale Listings Scraper extracts publicly visible listing data. It does not log in, bypass paywalls, submit buyer forms, message sellers, or collect private account data. You should still review BusinessesForSale.com's terms and ensure your use case complies with applicable laws, privacy rules, and platform policies. For general background, read Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

### Related Actors

- [YellowPages USA Lead Generator](https://apify.com/parsebird/yellowpages-scraper) - Scrape local business listings, phone numbers, websites, categories, and addresses.
- [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) - Find public contact pages and emails from company websites.
- [Pappers Scraper](https://apify.com/parsebird/pappers-scraper) - Extract company information from Pappers.
- [Funda in Business Scraper](https://apify.com/parsebird/fundainbusiness-scraper) - Scrape Dutch commercial real estate listings.
- [BuildZoom Scraper](https://apify.com/parsebird/buildzoom-scraper) - Extract contractor and construction business data.

### FAQ

**Can I scrape BusinessesForSale by keyword instead of URL?**
Yes. Add keywords such as `coffee shop`, `apps`, `restaurants`, or `car wash`. The actor generates BusinessesForSale search URLs using your selected country, industry, location, and sort settings.

**Can I scrape a single BusinessesForSale listing URL?**
Yes. Paste an individual listing URL into `startUrls`. The actor fetches the public detail page and saves one structured row when the page is available.

**Why are some financial amounts null?**
BusinessesForSale sometimes shows ranges, `On request`, or `Undisclosed`. The actor keeps the original source text and only parses `amount` when the value is an exact single amount.

**Can I require disclosed asking price, revenue, or cash flow?**
Yes. Use the disclosed-only toggles to keep listings where the relevant financial field is visibly disclosed by the source.

**Can I schedule recurring market checks?**
Yes. Use Apify [schedules](https://docs.apify.com/platform/schedules) to run this BusinessesForSale scraper daily, weekly, or at any custom interval.

**Can I use this as a BusinessesForSale scraper API?**
Yes. Call the actor through the [Apify API](https://docs.apify.com/api/v2), use webhooks, or connect it to AI assistants with the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

**Does the actor contact sellers?**
No. It only saves public listing data and the visible contact URL when shown by the source.

**Where can I report issues or request fields?**
Use the Issues tab on the actor page: [BusinessesForSale Listings Scraper issues](https://apify.com/parsebird/businessesforsale-listings-scraper/issues).

# Actor input Schema

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

Add BusinessesForSale search, category, franchise, or listing URLs you already have. Leave empty to use Search Keywords and Keyword Search Country.

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

Enter business themes such as coffee shop, apps, restaurants, or car wash. Each keyword creates a BusinessesForSale search URL.

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

Maximum saved listings across all URLs and keyword searches. Start small to inspect output and control cost.

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

BusinessesForSale country site used for generated keyword searches.

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

Optional BusinessesForSale source slug such as restaurants or coffee-shops. When set, this is used instead of converting the keyword into a slug.

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

Optional city, region, state, or country wording for generated keyword searches. The actor will use source-supported URL wording where possible.

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

Source-supported sort order for generated keyword searches.

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

Optional minimum asking price filter. Applied to exact parsed amounts only; range or On request values are kept unless a disclosed-only toggle excludes them.

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

Optional maximum asking price filter. Set to 0 to disable.

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

Optional minimum revenue filter. Applied to exact parsed amounts only.

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

Optional maximum revenue filter. Set to 0 to disable.

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

Optional minimum cash-flow filter. Applied to exact parsed amounts only.

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

Optional maximum cash-flow filter. Set to 0 to disable.

## `onlyDisclosedPrice` (type: `boolean`):

Keep only listings with visible asking-price text other than On request or Undisclosed.

## `onlyDisclosedRevenue` (type: `boolean`):

Keep only listings with visible revenue text other than On request or Undisclosed.

## `onlyDisclosedCashFlow` (type: `boolean`):

Keep only listings with visible cash-flow text other than On request or Undisclosed.

## Actor input object example

```json
{
  "startUrls": [],
  "searchKeywords": [
    "coffee shop"
  ],
  "maxResults": 5,
  "country": "global",
  "industry": "",
  "locationText": "",
  "sortOrder": "newest",
  "minAskingPrice": 0,
  "maxAskingPrice": 0,
  "minRevenue": 0,
  "maxRevenue": 0,
  "minCashFlow": 0,
  "maxCashFlow": 0,
  "onlyDisclosedPrice": false,
  "onlyDisclosedRevenue": false,
  "onlyDisclosedCashFlow": false
}
```

# 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 = {
    "startUrls": [],
    "searchKeywords": [
        "coffee shop"
    ],
    "maxResults": 5,
    "country": "global",
    "industry": "",
    "locationText": "",
    "sortOrder": "newest",
    "minAskingPrice": 0,
    "maxAskingPrice": 0,
    "minRevenue": 0,
    "maxRevenue": 0,
    "minCashFlow": 0,
    "maxCashFlow": 0,
    "onlyDisclosedPrice": false,
    "onlyDisclosedRevenue": false,
    "onlyDisclosedCashFlow": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/businessesforsale-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 = {
    "startUrls": [],
    "searchKeywords": ["coffee shop"],
    "maxResults": 5,
    "country": "global",
    "industry": "",
    "locationText": "",
    "sortOrder": "newest",
    "minAskingPrice": 0,
    "maxAskingPrice": 0,
    "minRevenue": 0,
    "maxRevenue": 0,
    "minCashFlow": 0,
    "maxCashFlow": 0,
    "onlyDisclosedPrice": False,
    "onlyDisclosedRevenue": False,
    "onlyDisclosedCashFlow": False,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/businessesforsale-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 '{
  "startUrls": [],
  "searchKeywords": [
    "coffee shop"
  ],
  "maxResults": 5,
  "country": "global",
  "industry": "",
  "locationText": "",
  "sortOrder": "newest",
  "minAskingPrice": 0,
  "maxAskingPrice": 0,
  "minRevenue": 0,
  "maxRevenue": 0,
  "minCashFlow": 0,
  "maxCashFlow": 0,
  "onlyDisclosedPrice": false,
  "onlyDisclosedRevenue": false,
  "onlyDisclosedCashFlow": false
}' |
apify call parsebird/businessesforsale-listings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BusinessesForSale Listings Scraper",
        "description": "Scrape BusinessesForSale.com listings: titles, prices, revenue, cash flow, locations, categories, tags, images, and contact links. Use URLs or keyword searches. Export as JSON, CSV, Excel.",
        "version": "1.1",
        "x-build-id": "x0dcLaodt1KOKYoci"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parsebird~businessesforsale-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parsebird-businessesforsale-listings-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/parsebird~businessesforsale-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parsebird-businessesforsale-listings-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/parsebird~businessesforsale-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parsebird-businessesforsale-listings-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",
                "properties": {
                    "startUrls": {
                        "title": "Search or Listing URLs",
                        "type": "array",
                        "description": "Add BusinessesForSale search, category, franchise, or listing URLs you already have. Leave empty to use Search Keywords and Keyword Search Country.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchKeywords": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Enter business themes such as coffee shop, apps, restaurants, or car wash. Each keyword creates a BusinessesForSale search URL.",
                        "default": [
                            "coffee shop"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Listing Limit",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum saved listings across all URLs and keyword searches. Start small to inspect output and control cost.",
                        "default": 10
                    },
                    "country": {
                        "title": "Keyword Search Country",
                        "enum": [
                            "global",
                            "us",
                            "uk",
                            "canada",
                            "australia",
                            "new-zealand"
                        ],
                        "type": "string",
                        "description": "BusinessesForSale country site used for generated keyword searches.",
                        "default": "global"
                    },
                    "industry": {
                        "title": "Industry or Category Slug",
                        "type": "string",
                        "description": "Optional BusinessesForSale source slug such as restaurants or coffee-shops. When set, this is used instead of converting the keyword into a slug.",
                        "default": ""
                    },
                    "locationText": {
                        "title": "Location Text",
                        "type": "string",
                        "description": "Optional city, region, state, or country wording for generated keyword searches. The actor will use source-supported URL wording where possible.",
                        "default": ""
                    },
                    "sortOrder": {
                        "title": "Sort Listings By",
                        "enum": [
                            "default",
                            "newest",
                            "asking-price-lowest",
                            "asking-price-highest",
                            "turnover-lowest",
                            "turnover-highest",
                            "net-profit-lowest",
                            "net-profit-highest"
                        ],
                        "type": "string",
                        "description": "Source-supported sort order for generated keyword searches.",
                        "default": "newest"
                    },
                    "minAskingPrice": {
                        "title": "Minimum Asking Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional minimum asking price filter. Applied to exact parsed amounts only; range or On request values are kept unless a disclosed-only toggle excludes them.",
                        "default": 0
                    },
                    "maxAskingPrice": {
                        "title": "Maximum Asking Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional maximum asking price filter. Set to 0 to disable.",
                        "default": 0
                    },
                    "minRevenue": {
                        "title": "Minimum Revenue",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional minimum revenue filter. Applied to exact parsed amounts only.",
                        "default": 0
                    },
                    "maxRevenue": {
                        "title": "Maximum Revenue",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional maximum revenue filter. Set to 0 to disable.",
                        "default": 0
                    },
                    "minCashFlow": {
                        "title": "Minimum Cash Flow",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional minimum cash-flow filter. Applied to exact parsed amounts only.",
                        "default": 0
                    },
                    "maxCashFlow": {
                        "title": "Maximum Cash Flow",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional maximum cash-flow filter. Set to 0 to disable.",
                        "default": 0
                    },
                    "onlyDisclosedPrice": {
                        "title": "Require Disclosed Asking Price",
                        "type": "boolean",
                        "description": "Keep only listings with visible asking-price text other than On request or Undisclosed.",
                        "default": false
                    },
                    "onlyDisclosedRevenue": {
                        "title": "Require Disclosed Revenue",
                        "type": "boolean",
                        "description": "Keep only listings with visible revenue text other than On request or Undisclosed.",
                        "default": false
                    },
                    "onlyDisclosedCashFlow": {
                        "title": "Require Disclosed Cash Flow",
                        "type": "boolean",
                        "description": "Keep only listings with visible cash-flow text other than On request or Undisclosed.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
