# BizBuySell Business Listings Scraper (`automation-lab/bizbuysell-business-listings-scraper`) Actor

📊 Extract public BizBuySell listings, asking prices, seller-disclosed financials, operating details, and broker contacts for acquisition sourcing.

- **URL**: https://apify.com/automation-lab/bizbuysell-business-listings-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## BizBuySell Business Listings Scraper

Turn public BizBuySell business-for-sale searches into clean, analysis-ready data.

Collect listing IDs, titles, descriptions, locations, asking prices, images, availability, and canonical URLs. Enable detail enrichment to add seller-disclosed cash flow or SDE, gross revenue, EBITDA, real estate, inventory, FF&E, rent, established year, employees, and public broker fields when available.

Use the scraper for recurring acquisition sourcing, new-listing monitoring, broker research, lending analysis, and market comparables. No BizBuySell account is required for supported public pages.

### What does BizBuySell Business Listings Scraper do?

The Actor accepts national or US-state BizBuySell businesses-for-sale URLs.

It then:

- 🔎 normalizes supported `www.bizbuysell.com` URLs to the public mobile surface;
- 📄 follows bounded path-based pagination;
- 🧩 reads structured listing data from page JSON-LD;
- 🔐 deduplicates records by BizBuySell `productId`;
- 🎯 applies optional minimum and maximum asking-price filters;
- 💰 optionally enriches each record from its public detail page;
- 📦 saves typed records to an Apify dataset for export or integration.

Unsupported city and category paths fail clearly instead of silently returning the wrong geographic scope.

### Who is it for?

#### Acquisition entrepreneurs

Build a repeatable pipeline of businesses that fit your geography and price range.

#### Search funds and independent sponsors

Monitor multiple states, enrich candidate financials, and send records into a deal CRM.

#### Business brokers

Compare active inventory, asking prices, locations, and seller-disclosed operating metrics.

#### Lenders and M&A analysts

Create market-comparable datasets for screening, valuation research, and sector coverage.

#### Data teams

Schedule extraction and connect results to a warehouse, spreadsheet, webhook, or BI workflow.

### Why use this BizBuySell scraper?

- **Structured output:** receive consistent fields instead of copying listing cards manually.
- **Repeatable monitoring:** schedule the same state searches daily or weekly.
- **Bounded runs:** control item count and pages for predictable execution.
- **Financial enrichment:** collect optional details only when your workflow needs them.
- **Stable identity:** use `productId` to compare snapshots and detect new or removed inventory.
- **Fail-closed filters:** records without numeric prices do not slip through active price filters.
- **Resilient extraction:** detail-page failures do not discard valid search-page records.
- **Export options:** download JSON, CSV, Excel, XML, RSS, or connect through the API.

### Supported BizBuySell URLs

Supported inputs are:

- national search: `https://www.bizbuysell.com/businesses-for-sale/`
- state search: `https://www.bizbuysell.com/california-businesses-for-sale/`
- state search: `https://www.bizbuysell.com/texas-businesses-for-sale/`
- another valid US-state businesses-for-sale path

The Actor also accepts equivalent `m.bizbuysell.com` URLs.

City, county, category, keyword-query, and arbitrary detail URLs are not accepted as search starts in v1. This boundary prevents the mobile surface from appearing to honor a filter that it may ignore.

### Input

| Field | Type | Default | Description |
|---|---|---:|---|
| `startUrls` | array | California search | National or state BizBuySell search URLs |
| `maxItems` | integer | `25` | Maximum unique listings saved across all searches |
| `maxPagesPerUrl` | integer | `3` | Maximum pages requested for each search URL |
| `enrichDetails` | boolean | `false` | Visit public listing pages for extra details |
| `includeBrokerContacts` | boolean | `false` | Capture public broker fields when displayed |
| `minAskingPrice` | integer | — | Minimum numeric asking price |
| `maxAskingPrice` | integer | — | Maximum numeric asking price |
| `requestDelayMillis` | integer | `500` | Polite delay between requests |
| `proxyConfiguration` | object | direct | Optional Apify or custom proxy fallback |

### Example input

```json
{
  "startUrls": [
    { "url": "https://www.bizbuysell.com/california-businesses-for-sale/" },
    { "url": "https://www.bizbuysell.com/texas-businesses-for-sale/" }
  ],
  "maxItems": 100,
  "maxPagesPerUrl": 3,
  "enrichDetails": true,
  "includeBrokerContacts": true,
  "minAskingPrice": 100000,
  "maxAskingPrice": 2000000
}
````

Start with one page and 10 listings while evaluating the output. Increase volume only after confirming the search scope matches your workflow.

### Output data

Each dataset row represents one business listing.

| Field | Description |
|---|---|
| `productId` | Stable BizBuySell listing identifier |
| `title` | Public listing headline |
| `description` | Search-card description when present |
| `url` | Canonical BizBuySell detail URL |
| `location`, `city`, `state` | Public listing geography |
| `askingPrice`, `askingPriceNumeric` | Formatted and numeric asking price |
| `currency` | Price currency, usually USD |
| `availability` | Structured listing availability |
| `image` | Public listing image URL |
| `cashFlow`, `cashFlowNumeric` | Seller-disclosed cash flow or SDE |
| `grossRevenue`, `grossRevenueNumeric` | Seller-disclosed gross revenue |
| `ebitda`, `ebitdaNumeric` | Seller-disclosed EBITDA |
| `realEstate` | Public real-estate terms when present |
| `inventory` | Public inventory value or note |
| `ffe` | Furniture, fixtures, and equipment value or note |
| `rentMonthly` | Public rent value or note |
| `establishedYear` | Parsed four-digit establishment year |
| `employees` | Public employee information |
| `brokerName`, `brokerCompany`, `brokerPhone` | Public broker fields when displayed |
| `searchUrl` | Normalized search that produced the record |
| `sourcePage` | Search result page number |
| `scrapedAt` | UTC extraction timestamp |

Optional fields are omitted when a seller did not disclose them. Missing values are not invented.

### Example output

```json
{
  "productId": "2508641",
  "title": "Maid Brigade of Redwood City- includes 3 branded vehicles",
  "url": "https://www.bizbuysell.com/business-opportunity/maid-brigade-of-redwood-city-includes-3-branded-vehicles/2508641/",
  "location": "San Mateo County, CA",
  "city": "San Mateo County",
  "state": "CA",
  "askingPrice": "$219,000",
  "askingPriceNumeric": 219000,
  "currency": "USD",
  "availability": "InStock",
  "searchUrl": "https://m.bizbuysell.com/california-businesses-for-sale/",
  "sourcePage": 1,
  "scrapedAt": "2026-07-20T00:00:00.000Z"
}
```

Live records change as sellers add, edit, or remove listings.

### How to scrape BizBuySell listings

1. Open the Actor in Apify Console.
2. Add one national or state businesses-for-sale URL.
3. Choose a small `maxItems` value for your first run.
4. Set `maxPagesPerUrl` to control pagination.
5. Enable detail enrichment only if financial or operating fields are needed.
6. Add price boundaries for a targeted acquisition screen.
7. Click **Start**.
8. Review the **Business listings** dataset view.
9. Export the data or connect it to your downstream workflow.

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

The Actor uses pay-per-event pricing:

- a one-time **Run started** event of **$0.005** per run;
- one **Item extracted** event for each saved business listing;
- tiered per-item rates that decrease with your Apify plan.

| Apify tier | Price per listing |
|---|---:|
| FREE | $0.000054519 |
| BRONZE | $0.000047408 |
| SILVER | $0.000036978 |
| GOLD | $0.000028445 |
| PLATINUM | $0.000018963 |
| DIAMOND | $0.000013274 |

The pricing panel shows the applicable tier before every run. A small 10-item evaluation run remains inexpensive. Detail enrichment makes additional source requests but does not create extra output-item events.

To control cost:

- combine searches in one run instead of launching many one-listing runs;
- keep `maxPagesPerUrl` bounded;
- leave enrichment disabled when search-card data is sufficient;
- use snapshots and `productId` to avoid unnecessary downstream reprocessing.

### Price filtering and deal screening

Set `minAskingPrice` and/or `maxAskingPrice` as integer dollar amounts.

When a price filter is active:

- listings with a numeric asking price are compared against the boundary;
- listings outside the boundary are skipped;
- listings with no parseable asking price are skipped.

This fail-closed behavior is useful for automated screens because “price not disclosed” cannot be mistaken for a qualifying zero-dollar opportunity.

### Detail enrichment

Enable `enrichDetails` to visit each saved candidate's public listing page.

Seller-dependent fields may include:

- cash flow or seller's discretionary earnings;
- gross revenue;
- EBITDA;
- real-estate terms;
- inventory and FF\&E;
- monthly rent;
- established year;
- employee information.

BizBuySell sellers decide which values to disclose. An omitted output field means it was not reliably present, not that its value is zero.

### Broker contact extraction

Set both `enrichDetails` and `includeBrokerContacts` to request public broker fields.

Contact data is emitted only when the page displays a recognizable name, company, or phone label. The Actor does not bypass login, reveal private data, or infer hidden contact information.

Use contact data responsibly and comply with applicable outreach, privacy, and anti-spam rules.

### Pagination and deduplication

The Actor follows BizBuySell's numbered state or national result pages.

It stops when:

- `maxItems` has been reached;
- `maxPagesPerUrl` has been reached;
- a page contains no structured listings;
- a page contributes no new product IDs.

Duplicate listings across pages or overlapping state inputs are saved once per run.

### Scheduling a business listing monitor

Create an Apify schedule for a daily or weekly run.

A practical monitoring workflow is:

1. run the same state URLs on a schedule;
2. export `productId`, price, location, and timestamps;
3. compare the latest dataset with the previous snapshot;
4. flag new IDs, removed IDs, and changed asking prices;
5. notify an acquisition team through email, Slack, or a webhook.

Use an integration platform or your warehouse to retain snapshot history.

### Integrations

#### Google Sheets

Send selected listing fields to a shared deal-screening sheet.

#### Airtable or a CRM

Upsert on `productId` so recurring runs update existing acquisition records.

#### Slack and email

Notify a channel when a new listing meets geography, price, or financial criteria.

#### Webhooks

Trigger valuation, enrichment, or diligence workflows after a run succeeds.

#### Data warehouses

Load JSON or CSV into BigQuery, Snowflake, PostgreSQL, or another analytics store for comparable analysis.

### Apify API with JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/bizbuysell-business-listings-scraper').call({
  startUrls: [{ url: 'https://www.bizbuysell.com/texas-businesses-for-sale/' }],
  maxItems: 50,
  maxPagesPerUrl: 2,
  enrichDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Apify API with Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/bizbuysell-business-listings-scraper').call(run_input={
    'startUrls': [{'url': 'https://www.bizbuysell.com/florida-businesses-for-sale/'}],
    'maxItems': 50,
    'maxPagesPerUrl': 2,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### Apify API with cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~bizbuysell-business-listings-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [{"url":"https://www.bizbuysell.com/new-york-businesses-for-sale/"}],
    "maxItems": 25,
    "maxPagesPerUrl": 1
  }'
```

Poll the returned run ID or use an Apify client to wait for completion and retrieve the default dataset.

### Use with Apify MCP

Connect the Actor to AI agents through [Apify MCP](https://mcp.apify.com/?tools=automation-lab/bizbuysell-business-listings-scraper).

#### Claude Code setup

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com/?tools=automation-lab/bizbuysell-business-listings-scraper"
```

#### Claude Desktop setup

Add this configuration to Claude Desktop's MCP settings, then provide your Apify token through your secure environment:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=automation-lab/bizbuysell-business-listings-scraper"
    }
  }
}
```

#### Cursor setup

Open **Settings → MCP**, add the same `mcpServers` JSON, and enable the `apify` server.

#### VS Code setup

Open your workspace MCP configuration, add the same HTTP server URL, and approve the Apify tools for the workspace.

Example prompts:

- “Collect 50 California businesses for sale below $2 million.”
- “Enrich current Texas business listings and return those with disclosed cash flow.”
- “Build a dataset I can compare with last week's acquisition pipeline.”

### Tips for reliable runs

- Begin with one supported state URL and one page.
- Keep the default request delay unless you have a specific reason to change it.
- Avoid overlapping searches when you do not need cross-market monitoring.
- Enable enrichment only for shortlisted records to reduce run time.
- Use a proxy only if direct access from your execution region is blocked.
- Treat seller-disclosed financials as leads for verification, not audited statements.
- Store `productId` as the durable key in downstream systems.

### Limitations

- v1 supports national and US-state businesses-for-sale paths, not city or category paths.
- Search inventory and page composition can change between runs.
- Seller-disclosed details vary by listing.
- Broker contact fields may be absent or represented in a format the extractor does not recognize.
- Detail enrichment is best-effort; a blocked detail page does not remove the base listing.
- The Actor collects public data and does not log in or solve interactive challenges.

### Is it legal to scrape BizBuySell?

The Actor accesses publicly available pages without authentication. Web-scraping legality depends on the data, jurisdiction, purpose, contractual terms, and how you use the results.

You are responsible for:

- reviewing BizBuySell's current terms and robots guidance;
- complying with privacy, database, copyright, and outreach laws;
- avoiding excessive request volume;
- establishing a lawful basis for processing personal contact data;
- respecting deletion, suppression, and opt-out obligations.

This documentation is not legal advice.

### Troubleshooting

#### Why did my URL fail validation?

Use the national `/businesses-for-sale/` path or a US-state `/{state}-businesses-for-sale/` path. City, category, query-filtered, and detail URLs are outside the supported v1 contract.

#### Why are financial fields missing?

Enable `enrichDetails`. If a field remains absent, the seller may not have disclosed it or the page may use an unrecognized presentation.

#### Why did a filtered run return no records?

The current pages may contain no listings inside your price range. Listings without a numeric asking price are intentionally excluded when a price filter is active.

#### Why did detail enrichment take longer?

Each candidate requires an additional public page request. Reduce `maxItems`, disable enrichment, or enrich only a shortlist.

#### What should I do after a block?

Keep pacing conservative and configure Apify Proxy as a fallback. Do not repeatedly retry large runs against a blocked route.

### FAQ

#### Does the Actor require a BizBuySell account?

No. It uses supported public search and detail pages.

#### Can I scrape several states in one run?

Yes. Add multiple state URLs to `startUrls`; duplicate product IDs are saved once.

#### Can I monitor listing changes?

Yes. Schedule runs and compare datasets by `productId`, `askingPriceNumeric`, and `scrapedAt`.

#### Does it return every financial metric?

It returns recognized fields when sellers disclose them. It does not estimate missing financials.

#### Can I export to CSV or Excel?

Yes. Use the dataset export menu or API export endpoints.

#### Does it support residential proxies?

Yes, through `proxyConfiguration`, though the public mobile surface is attempted directly by default.

### Related acquisition marketplace scrapers

Combine this Actor with other automation-lab acquisition data products for broader sourcing coverage:

- [BusinessesForSale Scraper](https://apify.com/automation-lab/businesses-for-sale-scraper)
- [Flippa Scraper](https://apify.com/automation-lab/flippa-scraper)
- [Empire Flippers Scraper](https://apify.com/automation-lab/empire-flippers-scraper)

Each marketplace has different inventory, fields, and seller practices. Keep source-specific product IDs and canonical URLs when combining datasets.

### Data quality checklist

Before automating a decision:

- confirm the listing URL still resolves;
- verify the asking price and disclosed financial period;
- distinguish gross revenue, EBITDA, and SDE;
- review whether real estate or inventory is included in the asking price;
- contact the broker or seller through appropriate channels;
- perform independent financial, legal, and operational diligence.

The scraper accelerates discovery and screening. It does not replace due diligence.

### Support

For reproducible support, include:

- the Actor run ID;
- a sanitized copy of the input;
- the affected search or listing URL;
- the expected field or record;
- the approximate run time.

Do not include private credentials or unrelated personal data.

# Actor input Schema

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

One or more national or US-state businesses-for-sale URLs. www URLs are automatically routed through the public mobile surface.

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

Stop after saving this many unique listings across all searches.

## `maxPagesPerUrl` (type: `integer`):

Bound pagination for each supplied search URL.

## `enrichDetails` (type: `boolean`):

Visit each listing page for seller-disclosed cash flow, revenue, EBITDA, real estate, inventory, FF\&E, rent, established year, and employees.

## `includeBrokerContacts` (type: `boolean`):

Extract broker or contact fields when they are publicly displayed. Requires detail enrichment.

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

Keep only listings at or above this USD asking price. Listings without a numeric asking price are excluded.

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

Keep only listings at or below this USD asking price. Listings without a numeric asking price are excluded.

## `requestDelayMillis` (type: `integer`):

Polite pacing between search and detail requests.

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

Optional Apify Proxy or custom proxy fallback. Direct public access is used by default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.bizbuysell.com/california-businesses-for-sale/"
    }
  ],
  "maxItems": 10,
  "maxPagesPerUrl": 1,
  "enrichDetails": false,
  "includeBrokerContacts": false,
  "requestDelayMillis": 500
}
```

# Actor output Schema

## `overview` (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": [
        {
            "url": "https://www.bizbuysell.com/california-businesses-for-sale/"
        }
    ],
    "maxItems": 10,
    "maxPagesPerUrl": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/bizbuysell-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 = {
    "startUrls": [{ "url": "https://www.bizbuysell.com/california-businesses-for-sale/" }],
    "maxItems": 10,
    "maxPagesPerUrl": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/bizbuysell-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 '{
  "startUrls": [
    {
      "url": "https://www.bizbuysell.com/california-businesses-for-sale/"
    }
  ],
  "maxItems": 10,
  "maxPagesPerUrl": 1
}' |
apify call automation-lab/bizbuysell-business-listings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BizBuySell Business Listings Scraper",
        "description": "📊 Extract public BizBuySell listings, asking prices, seller-disclosed financials, operating details, and broker contacts for acquisition sourcing.",
        "version": "0.1",
        "x-build-id": "WsYiLKrvpUshfWnDi"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~bizbuysell-business-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-bizbuysell-business-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/automation-lab~bizbuysell-business-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-bizbuysell-business-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/automation-lab~bizbuysell-business-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-bizbuysell-business-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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "🔎 BizBuySell search URLs",
                        "type": "array",
                        "description": "One or more national or US-state businesses-for-sale URLs. www URLs are automatically routed through the public mobile surface.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Maximum listings",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Stop after saving this many unique listings across all searches.",
                        "default": 25
                    },
                    "maxPagesPerUrl": {
                        "title": "Maximum pages per search",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Bound pagination for each supplied search URL.",
                        "default": 3
                    },
                    "enrichDetails": {
                        "title": "💰 Enrich listing details",
                        "type": "boolean",
                        "description": "Visit each listing page for seller-disclosed cash flow, revenue, EBITDA, real estate, inventory, FF&E, rent, established year, and employees.",
                        "default": false
                    },
                    "includeBrokerContacts": {
                        "title": "Include broker contacts when public",
                        "type": "boolean",
                        "description": "Extract broker or contact fields when they are publicly displayed. Requires detail enrichment.",
                        "default": false
                    },
                    "minAskingPrice": {
                        "title": "Minimum asking price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Keep only listings at or above this USD asking price. Listings without a numeric asking price are excluded."
                    },
                    "maxAskingPrice": {
                        "title": "Maximum asking price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Keep only listings at or below this USD asking price. Listings without a numeric asking price are excluded."
                    },
                    "requestDelayMillis": {
                        "title": "Delay between requests (ms)",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Polite pacing between search and detail requests.",
                        "default": 500
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy or custom proxy fallback. Direct public access is used by default."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
