# Businessesforsale \[$0.85💰] Scraper \[PPE] · Emails (`memo23/businessesforsale-scraper`) Actor

💰 Only $0.85 per 1,000 results. Scrapes BusinessesForSale.com to extract business listings with JSON-LD data, search metadata (criteria, tags, age filters, listings count), and search context. Built with TypeScript/Cheerio for reliable data extraction and market research.

- **URL**: https://apify.com/memo23/businessesforsale-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 167 total users, 30 monthly users, 99.4% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.85 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## BusinessesForSale.com Scraper

**Unlock the Power of Global Business Listings** - The most comprehensive scraper for extracting detailed business-for-sale data from BusinessesForSale.com. Whether you're an investor, business broker, or market analyst, our scraper delivers accurate, structured data to help you identify opportunities, analyze market trends, and make data-driven decisions.

*"From small startups to established franchises, transform business listings into actionable insights."*

### Overview

The BusinessesForSale.com Scraper is a robust tool designed to extract comprehensive business listing data from the world's leading business-for-sale marketplace. Ideal for investors, entrepreneurs, and market researchers, it captures detailed business information, financials, and operational data from listings worldwide. With its easy setup and structured JSON output, it's the perfect solution for anyone looking to gather and analyze business acquisition opportunities.

### What does BusinessesForSale.com Scraper do?

The BusinessesForSale.com Scraper is a powerful tool that enables you to:

#### Comprehensive Business Data Collection

- **Business Listings**
  - Extract complete business details including descriptions, financials, and operations
  - Scrape comprehensive listing data including asking price, revenue, and cash flow
  - Gather detailed business features, assets, and equipment
  - Analyze business types, industries, and operational models
  - Download high-quality business images and media content
- **Location & Market Data**
  - Scrape precise business location information
  - Extract market positioning and competitive landscape
  - Gather industry-specific data and trends
  - Access price comparison data for similar businesses

#### Advanced Scraping Capabilities

- **Structured Data Extraction**: Leverages JSON-LD and embedded JavaScript data for reliable information
- **Pagination Handling**: Automatically navigates through all search result pages
- **Efficient Processing**: Processes only new or updated listings in subsequent runs
- **Change Detection**: Identifies price changes, status updates, and new listings
- **Scheduled Monitoring**: Set up automated runs to keep your business data current
- **Incremental Data Collection**: Build comprehensive business datasets over time
- **Proxy Support**: Built-in proxy rotation to prevent IP blocking
- **Retry Mechanism**: Automatic retries for failed requests to ensure data completeness

#### Flexible Scraping Options

- **Search Results**: Extract business listings by search criteria, location, or category
  - Example: `https://www.businessesforsale.com/search/health-and-safety-businesses-for-sale`
  - Example: `https://www.businessesforsale.com/usa/restaurants-cafes-and-bars-for-sale`
- **Individual Listings**: Target specific businesses using direct URLs
  - Example: `https://newzealand.businessesforsale.com/newzealand/770-000-np-niche-product-distribution-business-operate-anywhere.aspx`

### Who is this tool for?

This scraper is specifically designed for:

- **Business Brokers**
  - Maintain an up-to-date database of businesses for sale
  - Monitor competitor listings and market positioning
  - Identify potential buyers by analyzing search patterns

- **Investors & Acquirers**
  - Discover investment opportunities across industries and regions
  - Track price trends and valuation metrics
  - Build a pipeline of potential acquisition targets

- **Market Researchers**
  - Analyze business valuation trends across sectors
  - Track industry-specific market activity
  - Generate reports on business-for-sale market dynamics

- **Entrepreneurs**
  - Research business opportunities in specific locations
  - Understand pricing and valuation of similar businesses
  - Identify market gaps and opportunities

- **Data Analysts**
  - Build comprehensive datasets of business listings
  - Perform competitive analysis across industries
  - Create custom business valuation models

### Features

- **Comprehensive Data Extraction**: Extract detailed business information including:
  - Business descriptions and key highlights
  - Financial data (asking price, revenue, cash flow)
  - Operational details and business model
  - Location and property information
  - Seller information and contact details

- **Dual Scraping Modes**:
  - **Search Results**: Scrape all businesses from search results with automatic pagination
    - Filter by location, industry, price range, and other criteria
    - Example: `https://www.businessesforsale.com/search/restaurants-for-sale/usa`
  - **Individual Listings**: Target specific businesses using direct URLs
    - Get complete details for a single business listing
    - Example: `https://www.businessesforsale.com/california/established-coffee-shop-for-sale-1`

- **Advanced Data Processing**:
  - Extract and parse JSON-LD structured data
  - Process embedded JavaScript objects for additional metadata
  - Clean and normalize data for consistency
  - Handle international character sets and formatting

- **Performance & Reliability**:
  - Configurable concurrency for optimal performance
  - Automatic retry mechanism for failed requests
  - Built-in proxy support to prevent IP blocking
  - Efficient resource management for large-scale scraping

- **Output & Integration**:
  - Structured JSON output for easy processing
  - Support for custom data transformations
  - Seamless integration with data analysis tools
  - Compatible with Apify's data storage and export options

### Supported Listing Categories

The BusinessesForSale.com Scraper can extract data from a wide range of business categories and listing types. Here are some of the main categories supported:

1. **By Business Type**
   - **Established Businesses**: Profitable, operational businesses with a track record
     - Example: `https://www.businessesforsale.com/search/established-businesses-for-sale`
   - **Franchises**: Turnkey business opportunities with established systems
     - Example: `https://www.businessesforsale.com/search/franchises-for-sale`
   - **Startups & New Businesses**: Ground-floor opportunities with growth potential
     - Example: `https://www.businessesforsale.com/search/startup-businesses-for-sale`
   - **Business Assets**: Equipment, inventory, and intellectual property
     - Example: `https://www.businessesforsale.com/search/business-assets-for-sale`

2. **By Industry**
   - **Food & Hospitality**: Restaurants, cafes, bars, and catering businesses
     - Example: `https://www.businessesforsale.com/search/restaurants-cafes-and-bars-for-sale`
   - **Retail**: Stores, shops, and e-commerce businesses
     - Example: `https://www.businessesforsale.com/search/retail-businesses-for-sale`
   - **Service Businesses**: Professional and personal service providers
     - Example: `https://www.businessesforsale.com/search/service-businesses-for-sale`
   - **Manufacturing & Wholesale**: Production and distribution businesses
     - Example: `https://www.businessesforsale.com/search/manufacturing-and-engineering-businesses-for-sale`
   - **Healthcare & Medical**: Medical practices, clinics, and related services
     - Example: `https://www.businessesforsale.com/search/healthcare-and-medical-businesses-for-sale`

3. **By Location**
   - **Country-specific Listings**: Filter businesses by country
     - Example: `https://www.businessesforsale.com/usa/businesses-for-sale`
   - **Regional Listings**: Narrow down by state, province, or region
     - Example: `https://www.businessesforsale.com/california/businesses-for-sale`
   - **City Listings**: Find businesses in specific cities
     - Example: `https://www.businessesforsale.com/los-angeles/businesses-for-sale`

4. **By Financials**
   - **Price Range**: Filter by asking price
     - Example: `https://www.businessesforsale.com/search/under-100k-businesses-for-sale`
   - **Revenue & Cash Flow**: Find businesses by financial performance
     - Example: `https://www.businessesforsale.com/search/high-cash-flow-businesses-for-sale`
   - **Seller Financing**: Listings with owner financing options
     - Example: `https://www.businessesforsale.com/search/seller-financing-businesses-for-sale`

Each listing includes comprehensive data fields such as:

- Basic information (title, description, location, status)
- Financial details (asking price, revenue, cash flow, etc.)
- Business operations (employees, hours, facilities)
- Property information (if applicable)
- Seller details and contact information
- Images and media

### Quick Start

Get started with the BusinessesForSale.com Scraper in just a few simple steps:

#### Option 1: Using Apify Platform (Recommended)

1. **Sign up for Apify**
   - Create your free account at [apify.com](https://console.apify.com/sign-up)
   - No credit card required to get started

2. **Find the Scraper**
   - Visit the [Apify Store](https://apify.com/store)
   - Search for "BusinessesForSale.com Scraper"
   - Click on the actor to view details

3. **Configure Your Scrape**
   - Click "Try for free" to open the configuration page
   - Add your target URLs in the `startUrls` field:
     - Search results (e.g., `https://www.businessesforsale.com/search/restaurants-for-sale/usa`)
     - Individual listings (e.g., `https://www.businessesforsale.com/california/established-coffee-shop-for-sale-1`)
   - Adjust advanced settings if needed (concurrency, proxy, etc.)

4. **Run the Scraper**
   - Click "Start" to begin the scrape
   - Monitor progress in real-time
   - Download results in JSON, CSV, Excel, or other formats

5. **Analyze Your Data**
   - Use the built-in dataset preview
   - Export to your preferred analysis tools
   - Set up webhooks for automated data delivery

#### Next Steps

- Check out the [Input Configuration](#input-configuration) section for advanced options
- Explore the [sample output](#sample-json-output) to understand the data structure

### Input Configuration

The scraper runs in two ways: give it **search filters** (keywords plus optional price / cash-flow / location narrowing) and it builds the search for you, or paste **direct URLs** to search-result or listing pages. `startUrls` is a plain list of URL strings — if you provide it, it takes priority over the search-filter fields.

#### Search-filter example

```json
{
    "queryKeywords": ["restaurant"],
    "queryStateOrRegion": "california",
    "queryMinAskingPrice": "100000",
    "queryMaxAskingPrice": "500000",
    "maxItems": 200
}
```

#### Direct-URL example

```json
{
    "startUrls": [
        "https://www.businessesforsale.com/search/restaurants-for-sale/california",
        "https://www.businessesforsale.com/us/established-coffee-shop-for-sale-1.aspx"
    ],
    "maxItems": 200
}
```

#### Input fields

| Field | Type | Notes |
|---|---|---|
| `startUrls` | array of strings | Search-result or listing-page URLs. Plain strings, not objects. Takes priority over the search-filter fields. |
| `queryKeywords` | array of strings | Free-text search terms, e.g. `["restaurant"]`. |
| `querySort` | string | Result sort order. |
| `queryStateOrRegion` | string | US state or region filter, e.g. `california`. |
| `queryCityOrArea` | string | City or area filter. |
| `queryIndustrySlug` | string | Industry / category path slug, e.g. `restaurants-for-sale`. |
| `querySearchPath` | string | Custom search path for advanced URL patterns (optional). |
| `queryMinAskingPrice` / `queryMaxAskingPrice` | string | Asking-price range. |
| `queryMinCashFlow` / `queryMaxCashFlow` | string | Cash-flow / profit range. |
| `queryMinGrossIncome` / `queryMaxGrossIncome` | string | Gross-income / turnover range. |
| `maxItems` | integer | Hard cap on listings collected. |
| `includeVaultTeasers` | boolean | Also collect the M\&A Vault teasers the site lists among search results (anonymised deal summaries: no broker, asking price or cash flow). Those rows carry `isVaultTeaser: true` and a `vaultTeaser` object. Default `false`. |
| `enrichEmails` | boolean | Experimental contact-email discovery; billed per email found. Default `false`. |
| `qualifyByPayment` | boolean | Flags businesses that accept online payment. Default `false`. |
| `maxConcurrency` / `minConcurrency` | integer | Parallel-request bounds. |
| `maxRequestRetries` | integer | Retry attempts per failed request. |
| `proxy` | object | Proxy override (optional); the actor ships with a working default. |

#### Who uses it

- **Investors** — surface businesses in a target sector and price band.
- **Business brokers** — pull new listings matching client criteria.
- **Market analysts** — track pricing across industries or regions.
- **Entrepreneurs** — find opportunities in a specific area.

### Output Structure

The BusinessesForSale.com Scraper provides structured data extracted from business listings, including JSON-LD data and search view model information. The output is designed to be comprehensive yet easy to process, with all relevant business information organized in a logical hierarchy.

#### Data Extraction Methods

The scraper employs multiple techniques to extract data:

1. **JSON-LD Extraction**
   - Parses `<script type="application/ld+json">` elements
   - Extracts structured data following schema.org standards
   - Focuses on `@type": "ItemList"` for business listings

2. **JavaScript Object Extraction**
   - Parses embedded JavaScript objects like `searchViewModel`
   - Extracts metadata including:
     - `searchCriteria`: Filters and search parameters
     - `searchTags`: Categorization tags
     - `ageFilter`: Listing age information
     - `listingsCount`: Total number of listings
     - `url`: Canonical URL of the search results

3. **HTML Parsing**
   - Uses Cheerio for efficient DOM traversal
   - Extracts content from specific HTML elements and attributes
   - Handles dynamic content loaded via JavaScript

#### Sample JSON Output

Below is an example of the structured output, combining data from multiple sources:

```json
{
    // Basic Listing Information
    "listingId": "3828111",
    "title": "$770,000 NP. Niche Product Distribution Business. Operate Anywhere For Sale",
    "location": "New Zealand",
    "status": ["New"],
    "url": "https://newzealand.businessesforsale.com/newzealand/770-000-np-niche-product-distribution-business-operate-anywhere.aspx",
    
    // Financial Information (from JSON-LD and structured data)
    "financials": {
        "askingPrice": {
            "amount": 3890000,
            "currency": "NZD",
            "formatted": "$3,890,000 (NZD)",
            "priceType": "Asking Price"
        },
        "salesRevenue": {
            "amount": null,
            "formatted": "Undisclosed",
            "period": "Annual"
        },
        "cashFlow": {
            "amount": 770000,
            "formatted": "$770,000",
            "period": "Annual",
            "year": 2025
        },
        "ebitda": null,
        "ffne": null,
        "inventoryValue": null
    },
    
    // Images and Media
    "media": {
        "images": [
            {
                "src": "https://newzealand.businessesforsale.com/uploads/f4949fec-b89c-42b1-b5e8-b321000672ea.jpg",
                "alt": "770 000 np niche - 1",
                "fullSizeUrl": "https://newzealand.businessesforsale.com/uploads/e8340719-5ae7-462c-8365-b32100067301.jpg",
                "thumbnail": "https://newzealand.businessesforsale.com/uploads/f4949fec-b89c-42b1-b5e8-b321000672ea.jpg",
                "type": "image/jpeg"
            }
        ],
        "totalPhotos": 2,
        "hasVideo": false,
        "hasVirtualTour": false
    },
    
    // Business Description
    "description": {
        "summary": "A rare opportunity to acquire a highly successful and scalable drug and alcohol product supply business...",
        "fullText": [
            "A rare opportunity to acquire a highly successful and scalable drug and alcohol product supply business...",
            "This business specialises in importing and distributing market-leading products through major retail chains..."
        ],
        "highlights": [
            "Net profit of $770,000 for FY2025",
            "Exclusive, globally recognised products in a niche, high-growth industry",
            "Diversified client base across public, private, and direct-to-consumer sectors"
        ],
        "businessOverview": {
            "yearEstablished": null,
            "reasonForSelling": null,
            "employees": "Offshore team handles all non-packing functions",
            "facilities": "Operates from 2x company-owned shipping containers",
            "inventory": "25 SKUs, most under 1kg",
            "competition": null,
            "growthOpportunities": ["Australian expansion", "Untapped markets"]
        }
    },
    
    // Property and Location
    "location": {
        "address": {
            "streetAddress": "Not disclosed",
            "addressLocality": "Auckland",
            "addressRegion": "Auckland",
            "postalCode": null,
            "addressCountry": "New Zealand"
        },
        "geo": {
            "latitude": null,
            "longitude": null
        },
        "operatingRegions": ["Australia", "New Zealand"],
        "relocatable": true,
        "homeBased": true
    },
    
    // Business Operations
    "operations": {
        "hours": {
            "operation": "Flexible hours, owner-operated under 25 hours/week"
        },
        "staffing": {
            "employees": "Offshore team",
            "managementInPlace": true,
            "trainingProvided": true
        },
        "facilities": {
            "ownedOrLeased": "Owned",
            "size": null,
            "facilitiesDescription": "2x company-owned shipping containers"
        },
        "inventory": {
            "included": true,
            "value": null,
            "description": "25 SKUs, most under 1kg"
        },
        "expansionPotential": ["Australian market", "New product lines"]
    },
    
    // Financial Performance
    "financialPerformance": {
        "revenue": {
            "currentAnnual": null,
            "projectedAnnual": null,
            "trend": "Growing"
        },
        "profitability": {
            "netProfit": 770000,
            "netProfitMargin": null,
            "ebitda": null
        },
        "financialHighlights": [
            "Strong year-on-year growth",
            "Recurring revenue model",
            "Low overhead costs"
        ]
    },
    
    // Seller Information
    "seller": {
        "type": "Owner",
        "reasonForSelling": "Pursuing other ventures",
        "supportAndTraining": "Full support during transition period",
        "financingAvailable": false,
        "relocatable": true
    },
    
    // Related Listings and Categories
    "related": {
        "categories": [
            {
                "name": "Miscellaneous Distribution Businesses",
                "url": "https://newzealand.businessesforsale.com/newzealand/search/miscellaneous-distribution-businesses-for-sale"
            },
            {
                "name": "Medical Supply Businesses",
                "url": "https://newzealand.businessesforsale.com/newzealand/search/medical-supply-businesses-for-sale"
            }
        ],
        "similarListings": []
    },
    
    // Metadata and SEO
    "metadata": {
        "title": "Buy a $770,000 NP. Niche Product Distribution Business. Operate Anywhere - BusinessesForSale.com",
        "description": "A rare opportunity to acquire a highly successful and scalable drug and alcohol product supply business...",
        "keywords": ["distribution business", "niche products", "for sale", "New Zealand", "Australia"],
        "canonicalUrl": "https://newzealand.businessesforsale.com/newzealand/770-000-np-niche-product-distribution-business-operate-anywhere.aspx",
        "ogTitle": "Buy a $770,000 NP. Niche Product Distribution Business. Operate Anywhere",
        "ogDescription": "A rare opportunity to acquire a highly successful and scalable drug and alcohol product supply business...",
        "ogImage": "https://www.businessesforsale.com/Content/Shared/images/facebookDefaultImage.jpg"
    },
    
    // Search View Model Data
    "searchData": {
        "searchCriteria": {
            "location": "New Zealand",
            "industry": ["Distribution", "Medical Supplies"],
            "priceRange": {
                "min": null,
                "max": null,
                "currency": "NZD"
            },
            "keywords": ["niche", "distribution", "Australia", "New Zealand"]
        },
        "searchTags": ["distribution", "b2b", "import-export", "healthcare"],
        "listingsCount": 1,
        "pagination": {
            "currentPage": 1,
            "totalPages": 1,
            "resultsPerPage": 10,
            "totalResults": 1
        },
        "sortBy": "relevance",
        "filters": {
            "businessStatus": ["New"],
            "priceType": ["Asking Price"],
            "sellerType": ["Owner"]
        }
    },
    
    // JSON-LD Structured Data
    "structuredData": {
        "@context": "https://schema.org",
        "@type": "Product",
        "name": "$770,000 NP. Niche Product Distribution Business. Operate Anywhere",
        "description": "A rare opportunity to acquire a highly successful and scalable drug and alcohol product supply business...",
        "offers": {
            "@type": "Offer",
            "price": 3890000,
            "priceCurrency": "NZD",
            "availability": "https://schema.org/InStock",
            "url": "https://newzealand.businessesforsale.com/newzealand/770-000-np-niche-product-distribution-business-operate-anywhere.aspx"
        },
        "itemCondition": "https://schema.org/UsedCondition"
    },
    
    // System Information
    "system": {
        "scrapedAt": "2025-01-15T10:30:00Z",
        "source": "BusinessesForSale.com",
        "version": "1.0.0"
    }
}
```

### Output Fields Explanation

The scraper returns a comprehensive dataset for each business listing on BusinessesForSale.com. Below is a detailed explanation of all fields in the JSON output.

#### Basic Information

- `listingId` (String): Unique BusinessesForSale.com business identifier (e.g., "3828111")
- `title` (String): Complete business listing title including price and description
- `location` (String): Geographic location where the business is situated (e.g., "New Zealand")
- `status` (Array): Current listing status indicators (e.g., \["New"])
- `url` (String): Direct URL to the business listing page

#### Financial Information

- `askingPrice.amount` (String): Numerical asking price value without formatting
- `askingPrice.currency` (String): Currency code for the asking price (e.g., "NZD", "USD")
- `askingPrice.formatted` (String): Formatted price display with currency symbol and formatting
- `salesRevenue` (String): Annual sales revenue figure or "Undisclosed" if not provided
- `cashFlow` (String): Annual cash flow figure or "Undisclosed" if not provided

#### Images and Media

- `images` (Array): Collection of business listing images with the following properties:
  - `src` (String): Primary image source URL
  - `alt` (String): Alternative text description for the image
  - `fullSizeUrl` (String): URL for full-resolution image
  - `thumbnail` (String): URL for thumbnail version of the image
- `photoCount` (Number): Total number of photos available for the listing

#### Business Description

- `description.paragraphs` (Array): Main business description broken into paragraphs
- `description.keyHighlights` (Array): Bullet-pointed key selling points and business highlights

#### Property and Location Details

- `propertyInfo` (Object): Physical location and property information with dynamic keys based on available data

#### Business Operations

- `businessOperation` (Object): Operational details including:
  - Management structure and requirements
  - Expansion potential and growth opportunities
  - Current operational model

#### Additional Information

- `otherInfo` (Object): Miscellaneous business details such as:
  - Support and training availability
  - Transition assistance
  - Special terms or conditions

#### Related Businesses and Categories

- `relatedBusinesses` (Array): Similar business listings with:
  - `name` (String): Category or business type name
  - `url` (String): URL to browse similar businesses
- `categoryUrl` (String): Direct URL to the business category page
- `categoryName` (String): Descriptive name of the business category
- `contactUrl` (String): URL for contacting the seller or broker

#### SEO and Metadata

- `meta.title` (String): HTML page title for SEO
- `meta.description` (String): Meta description for search engines
- `meta.ogTitle` (String): Open Graph title for social media sharing
- `meta.ogDescription` (String): Open Graph description for social media
- `meta.ogImage` (String): Open Graph image URL for social media previews
- `meta.canonicalUrl` (String): Canonical URL for the listing page

#### Structured Data

- `basicInfo` (Object): JSON-LD structured data including:
  - `@type` (String): Schema.org type, typically "ListItem"
  - `position` (Number): Position in search results or listings
  - `url` (String): Canonical URL for the business listing
  - `name` (String): Business listing name for structured data

***

### Explore More Scrapers

If you found this Apify Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/B9QxpGHylsP0guHns/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>
- Email: muhamed.didovic@gmail.com

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/businessesforsale-scraper`).

**Purpose:** Extract business-for-sale listings from BusinessesForSale.com (and its regional sites) by search/listing URL or US search filters — one structured row per listing with financials, description, location and media.

**Minimal input:**

```json
{ "startUrls": ["https://www.businessesforsale.com/search/apps-for-sale"], "maxItems": 25 }
```

Filter mode instead of URLs (US site): set `queryKeywords` (e.g. `["cafe"]`) plus optional `queryStateOrRegion`, `queryMinAskingPrice`, `queryMaxAskingPrice`, and leave `startUrls` empty.

**Output:** one row per listing — listingId, title, location, status, url, financials {askingPrice {amount, currency, formatted}, salesRevenue, cashFlow, ebitda}, media {images, totalPhotos}, description {summary, highlights, businessOverview}, location {address, geo, operatingRegions}, operations, financialPerformance, seller, related {categories}, metadata, searchData, structuredData, basicInfo. Opt-in enrichment adds contactEmail, contactWebsite, emailEnrichment, and (with qualifyByPayment) takesPayments, paymentProcessors, paymentConfidence.

**Behaviors an agent should know:**

- Always set `maxItems` — an uncapped run defaults to 10000 listings.
- `startUrls` wins: if any URL is present, all `query*` search filters are ignored. Search filters build a URL on the US site only; for UK/AU/other regions paste a copied URL.
- M\&A Vault teasers (`/m-and-a-vault/` URLs, IDs like `MV4238`) appear in the site's search results but are left out unless `includeVaultTeasers` is true; with it on, filter them by `isVaultTeaser`.
- `enrichEmails` (default false) is billed per contact email found — charged only on a hit, never on a miss; `qualifyByPayment` requires it and adds no extra charge.
- Pay-per-event billing — see the Pricing tab on the actor page.
- Broker contact details behind the login are not extracted; public listing data only.

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Dynamis Ltd (the operator of BusinessesForSale.com) or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available business-listing pages — no authenticated endpoints, paid features, or content behind the BusinessesForSale.com login wall. Users are responsible for ensuring their use complies with BusinessesForSale.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

### SEO Keywords

businessesforsale scraper, scrape businessesforsale, businessesforsale.com scraper, businessesforsale api, business for sale scraper, business listings scraper, business broker data, business acquisition leads, franchise listings scraper, business valuation data, asking price data, cash flow listings export, m\&a deal sourcing, business marketplace scraper, small business for sale data, Apify businessesforsale, business opportunity leads, seller financing listings, business-for-sale market analysis

# Actor input Schema

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

One URL per line. Leave **empty** to use **Scrape with search filters** instead.

## `queryKeywords` (type: `array`):

Free-text terms (e.g. `car wash`). Combined with city/area into one keyword search. At least one keyword or another filter below is enough to build a URL.

## `querySort` (type: `string`):

Optional. Example: `PriceDesc`. Leave empty for site default.

## `queryStateOrRegion` (type: `string`):

Example: `California` → `…/businesses-for-sale-in-california`. Leave empty if you use **Custom search path** or **Industry slug** only.

## `queryCityOrArea` (type: `string`):

Appended to **Search keywords** (same as adding another keyword). For precise geo filters, prefer a copied URL in **Scrape with search URLs**.

## `queryIndustrySlug` (type: `string`):

Slug from the site URL, e.g. `restaurants-food-businesses-for-sale`. If set, it overrides the state-based path unless **Custom search path** is set.

## `querySearchPath` (type: `string`):

Overrides state/industry paths. Paste the path after `https://us.businessesforsale.com/`, e.g. `us/search/last-3-months-businesses-for-sale`.

## `queryMinAskingPrice` (type: `string`):

Site-style values: `10K`, `100K`, `1.5M` → `Price.From` + disclosed listings only.

## `queryMaxAskingPrice` (type: `string`):

e.g. `3M` → `Price.To`.

## `queryMinCashFlow` (type: `string`):

Maps to `Profit.From` (e.g. `50K`).

## `queryMaxCashFlow` (type: `string`):

Maps to `Profit.To`.

## `queryMinGrossIncome` (type: `string`):

Maps to `Turnover.From` (e.g. `200K`).

## `queryMaxGrossIncome` (type: `string`):

Maps to `Turnover.To`.

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

Maximum number of items that will be scraped.

## `includeVaultTeasers` (type: `boolean`):

BusinessesForSale lists M\&A Vault teasers among its search results. These are anonymised deal summaries on a separate page layout: no broker, asking price or cash flow, and an ID like MV4238. Off by default, so every row is a regular listing. Turn on to collect them too; those rows carry isVaultTeaser = true and a vaultTeaser object holding the teaser's own sections. A teaser URL pasted into the URL list is always scraped.

## `enrichEmails` (type: `boolean`):

If enabled, finds a contact email for each result from its own website (or by discovering it from the name). Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Billed per contact email found; only charged when an email is returned, never for misses.

## `qualifyByPayment` (type: `boolean`):

Requires "Enrich with contact emails". Scans each business's website — reusing the pages already fetched for email discovery, so no extra cost or time — for payment processors and e-commerce platforms (Stripe, Shopify, PayPal, Paddle, Lemon Squeezy, WooCommerce, Square, Chargebee and more). Adds takesPayments (is this a real paying business?), paymentProcessors (which stack), stripeLiveKey (the public key if exposed) and paymentConfidence. Turn raw contacts into monetization-qualified leads. No extra charge — included with each enriched company.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `proxy` (type: `object`):

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.businessesforsale.com/search/apps-for-sale"
  ],
  "queryKeywords": [
    "cafe",
    "coffee shop"
  ],
  "querySort": "PriceDesc",
  "queryStateOrRegion": "Florida",
  "queryCityOrArea": "Tampa",
  "queryMinAskingPrice": "250K",
  "queryMaxAskingPrice": "3M",
  "queryMinCashFlow": "50K",
  "queryMaxCashFlow": "1.5M",
  "queryMinGrossIncome": "200K",
  "queryMaxGrossIncome": "8M",
  "maxItems": 250,
  "includeVaultTeasers": false,
  "enrichEmails": false,
  "qualifyByPayment": false,
  "maxConcurrency": 5,
  "minConcurrency": 1,
  "maxRequestRetries": 40
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://www.businessesforsale.com/search/apps-for-sale"
    ],
    "queryKeywords": [
        "cafe",
        "coffee shop"
    ],
    "querySort": "PriceDesc",
    "queryStateOrRegion": "Florida",
    "queryCityOrArea": "Tampa",
    "queryMinAskingPrice": "250K",
    "queryMaxAskingPrice": "3M",
    "queryMinCashFlow": "50K",
    "queryMaxCashFlow": "1.5M",
    "queryMinGrossIncome": "200K",
    "queryMaxGrossIncome": "8M",
    "maxItems": 250,
    "maxConcurrency": 5,
    "minConcurrency": 1,
    "maxRequestRetries": 40
};

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

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

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

```

## Python example

```python
from apify_client import ApifyClient

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

# Prepare the Actor input
run_input = {
    "startUrls": ["https://www.businessesforsale.com/search/apps-for-sale"],
    "queryKeywords": [
        "cafe",
        "coffee shop",
    ],
    "querySort": "PriceDesc",
    "queryStateOrRegion": "Florida",
    "queryCityOrArea": "Tampa",
    "queryMinAskingPrice": "250K",
    "queryMaxAskingPrice": "3M",
    "queryMinCashFlow": "50K",
    "queryMaxCashFlow": "1.5M",
    "queryMinGrossIncome": "200K",
    "queryMaxGrossIncome": "8M",
    "maxItems": 250,
    "maxConcurrency": 5,
    "minConcurrency": 1,
    "maxRequestRetries": 40,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": [
    "https://www.businessesforsale.com/search/apps-for-sale"
  ],
  "queryKeywords": [
    "cafe",
    "coffee shop"
  ],
  "querySort": "PriceDesc",
  "queryStateOrRegion": "Florida",
  "queryCityOrArea": "Tampa",
  "queryMinAskingPrice": "250K",
  "queryMaxAskingPrice": "3M",
  "queryMinCashFlow": "50K",
  "queryMaxCashFlow": "1.5M",
  "queryMinGrossIncome": "200K",
  "queryMaxGrossIncome": "8M",
  "maxItems": 250,
  "maxConcurrency": 5,
  "minConcurrency": 1,
  "maxRequestRetries": 40
}' |
apify call memo23/businessesforsale-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/businessesforsale-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5ULcMIRoMTxXZodor/builds/iw9Tz1EgQncPYY9sm/openapi.json
