# BizQuest Scraper — Business-for-Sale Listings (`muhammadafzal/bizquest-scraper`) Actor

Scrape public BizQuest business-for-sale listings with price, cash flow, revenue, location, and listing details. MCP-ready at $0.00125 per listing.

- **URL**: https://apify.com/muhammadafzal/bizquest-scraper.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.25 / 1,000 business listing scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## BizQuest Scraper — Business-for-Sale Listings

Collect structured, public business-for-sale listings from [BizQuest](https://www.bizquest.com/). Use this actor for deal sourcing, market mapping, and screening public small-business opportunities. It returns one normalized dataset item per listing with the title, location, industry, asking price, cash flow, revenue, EBITDA, public description, and source URL.

### When to use this actor

Use it when you need to turn public BizQuest search pages, category pages, location pages, or direct public listing URLs into structured records. It is designed for M&A advisors, business buyers, market-research teams, and AI agents that need a compact source of public deal-flow data.

Do not use it to access account pages, submit seller or buyer inquiries, obtain confidential information, reveal hidden contact details, scrape broker contacts, or bypass site controls. It does not perform any of those actions. Before every run, you must confirm that your planned collection and use comply with BizQuest terms, applicable law, and any required authorization.

### Input

| Field | Description |
| --- | --- |
| `startUrls` | One or more public BizQuest search, category, location, or listing URLs. |
| `maxResults` | A hard cap from 1 to 500 on stored and billed listings. |
| `enrichDetails` | When enabled, opens public listing pages for richer public facts. |
| `responseFormat` | `concise` for core deal fields, or `detailed` for descriptions and public images. |
| `acknowledgeAuthorization` | Required confirmation that your collection and use are authorized. |

Example input:

```json
{
  "startUrls": [{ "url": "https://www.bizquest.com/businesses-for-sale/" }],
  "maxResults": 25,
  "enrichDetails": true,
  "responseFormat": "detailed",
  "acknowledgeAuthorization": true
}
````

### Output

Each dataset record has a stable, flat shape suitable for CSV exports and AI-agent use:

| Field | Meaning |
| --- | --- |
| `listingUrl` | Canonical public BizQuest listing URL. |
| `title`, `location`, `industry` | Public listing identity and classification. |
| `askingPrice`, `cashFlow`, `grossRevenue`, `ebitda` | Parsed USD financial values where the listing displays them. |
| `realEstateIncluded`, `establishedYear`, `employees` | Additional public screening facts where available. |
| `description`, `imageUrls`, `publicFacts` | Detail-mode public content and any non-standard label/value facts. |
| `warnings` | Non-fatal extraction notes. Missing fields are represented as `null`, not omitted. |

Example result:

```json
{
  "listingUrl": "https://www.bizquest.com/business-for-sale/example/123456/",
  "sourceSearchUrl": "https://www.bizquest.com/businesses-for-sale/",
  "listingId": "123456",
  "title": "Profitable HVAC Company in Texas",
  "location": "Dallas, TX",
  "industry": "Construction",
  "askingPrice": 1200000,
  "cashFlow": 320000,
  "grossRevenue": 1800000,
  "ebitda": null,
  "realEstateIncluded": false,
  "establishedYear": 2010,
  "employees": "12",
  "description": "Established service business with recurring commercial customers.",
  "imageUrls": [],
  "publicFacts": {},
  "scrapedAt": "2026-07-22T12:00:00.000Z",
  "warnings": []
}
```

### Pricing

This actor uses predictable Pay Per Event pricing, with usage-based billing also available through Apify:

| Event | Price |
| --- | ---: |
| Actor start | $0.00005 per run |
| Public listing stored | $0.00125 per listing |

`maxResults` is a strict result-event cap. A 25-result run therefore costs no more than $0.03125 in listing events, plus the small actor-start event and any applicable usage costs. No result event is charged for duplicate URLs, records that fail schema validation, or pages that fail before a listing is stored.

### Reliability behavior

The actor uses a session pool, bounded retries, a strict result counter, and persisted state. It follows next-page links where BizQuest provides an accessible next link and stops once the requested cap is reached. If one page fails after retries, the run records a warning and preserves previously collected items. If all attempted pages are blocked or unreachable and no listing can be collected, it fails honestly rather than returning a misleading empty success.

BizQuest can change its page markup and may apply access controls. In that case the actor returns diagnostic warnings or an actionable failure explaining that the target could not be reached. It does not attempt to circumvent CAPTCHAs, login requirements, anti-bot challenges, or other restrictions.

### AI-agent / MCP usage

Use this actor for public BizQuest business-for-sale discovery and basic financial screening. It returns compact, normalized listing records rather than page HTML. Do not use it for private deal rooms, broker outreach, consumer-credit decisions, or any evaluation of a person’s eligibility for credit, insurance, employment, government benefits, or housing.

For a focused agent call, provide one public search URL, set a small `maxResults` such as 10, and choose `concise`. For deeper screening, set `enrichDetails` to true and choose `detailed`. Read `warnings` when a source has no public results or a page layout has changed.

### Legal and responsible use

Listing data can be protected by website terms, copyright, contract, privacy, and other laws. You are responsible for verifying that your purpose, data handling, rate, and onward use are permitted. The authorization confirmation is intentionally required for every run. This actor is not legal advice, does not grant permission from BizQuest, and must not be used to defeat technical restrictions or collect confidential data.

# Actor input Schema

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

Use this when you have public BizQuest search, category, location, or individual business-listing URLs. Enter one full URL per item, for example 'https://www.bizquest.com/businesses-for-sale/'. Defaults to a public BizQuest business search page. Do not use authenticated, inquiry, seller, or account URLs.

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

Use this when you need a strict output and billing cap across every supplied URL. Enter an integer such as 25. Defaults to 10 and accepts 1 through 500. This caps stored listings, not navigation retries.

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

Use this when search results should open each public listing to collect richer business descriptions and financial fields. Set true for deal screening and false for a faster search-result export. Defaults to true. This never submits forms, reveals confidential information, or accesses authenticated content.

## `responseFormat` (type: `string`):

Use this when an AI agent needs smaller or richer records. Choose 'concise' for core deal fields or 'detailed' to include description, images, and extracted public facts. Defaults to 'detailed'. This does not expose raw page HTML or broker contact data.

## `acknowledgeAuthorization` (type: `boolean`):

Use this to confirm that your intended collection and use of public listing data comply with BizQuest terms, applicable law, and any required permissions. Set it to true before running. Defaults to false so the actor does not scrape unintentionally. This is not legal advice or permission to access restricted data.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.bizquest.com/businesses-for-sale/"
    }
  ],
  "maxResults": 25,
  "enrichDetails": true,
  "responseFormat": "concise",
  "acknowledgeAuthorization": true
}
```

# Actor output Schema

## `results` (type: `string`):

Schema-valid public listing records from the default dataset.

## `summary` (type: `string`):

Counts, warnings, and billed result-event total.

# 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.bizquest.com/businesses-for-sale/"
        }
    ],
    "maxResults": 10,
    "enrichDetails": true,
    "responseFormat": "detailed",
    "acknowledgeAuthorization": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/bizquest-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.bizquest.com/businesses-for-sale/" }],
    "maxResults": 10,
    "enrichDetails": True,
    "responseFormat": "detailed",
    "acknowledgeAuthorization": False,
}

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/bizquest-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.bizquest.com/businesses-for-sale/"
    }
  ],
  "maxResults": 10,
  "enrichDetails": true,
  "responseFormat": "detailed",
  "acknowledgeAuthorization": false
}' |
apify call muhammadafzal/bizquest-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BizQuest Scraper — Business-for-Sale Listings",
        "description": "Scrape public BizQuest business-for-sale listings with price, cash flow, revenue, location, and listing details. MCP-ready at $0.00125 per listing.",
        "version": "1.0",
        "x-build-id": "4EbZYpb91dSM60KLm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/muhammadafzal~bizquest-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-muhammadafzal-bizquest-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/muhammadafzal~bizquest-scraper/runs": {
            "post": {
                "operationId": "runs-sync-muhammadafzal-bizquest-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/muhammadafzal~bizquest-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-muhammadafzal-bizquest-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": [
                    "acknowledgeAuthorization"
                ],
                "properties": {
                    "startUrls": {
                        "title": "BizQuest search or listing URLs",
                        "type": "array",
                        "description": "Use this when you have public BizQuest search, category, location, or individual business-listing URLs. Enter one full URL per item, for example 'https://www.bizquest.com/businesses-for-sale/'. Defaults to a public BizQuest business search page. Do not use authenticated, inquiry, seller, or account URLs.",
                        "default": [
                            {
                                "url": "https://www.bizquest.com/businesses-for-sale/"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxResults": {
                        "title": "Maximum listings",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Use this when you need a strict output and billing cap across every supplied URL. Enter an integer such as 25. Defaults to 10 and accepts 1 through 500. This caps stored listings, not navigation retries.",
                        "default": 10
                    },
                    "enrichDetails": {
                        "title": "Fetch public listing details",
                        "type": "boolean",
                        "description": "Use this when search results should open each public listing to collect richer business descriptions and financial fields. Set true for deal screening and false for a faster search-result export. Defaults to true. This never submits forms, reveals confidential information, or accesses authenticated content.",
                        "default": true
                    },
                    "responseFormat": {
                        "title": "Response detail",
                        "enum": [
                            "concise",
                            "detailed"
                        ],
                        "type": "string",
                        "description": "Use this when an AI agent needs smaller or richer records. Choose 'concise' for core deal fields or 'detailed' to include description, images, and extracted public facts. Defaults to 'detailed'. This does not expose raw page HTML or broker contact data.",
                        "default": "detailed"
                    },
                    "acknowledgeAuthorization": {
                        "title": "Confirm authorization",
                        "type": "boolean",
                        "description": "Use this to confirm that your intended collection and use of public listing data comply with BizQuest terms, applicable law, and any required permissions. Set it to true before running. Defaults to false so the actor does not scrape unintentionally. This is not legal advice or permission to access restricted data.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
