# BusinessForSale AU Scraper - Australian Businesses (`pshivam/businessforsale-au-scraper`) Actor

Scrape businesses for sale in Australia from BusinessForSale.com.au: asking price, location, category, revenue and profit bands, year established, reason for sale and full description, plus 3,000+ sold businesses. Filter by state, city, category, price or keyword. Export to Excel, CSV or API.

- **URL**: https://apify.com/pshivam/businessforsale-au-scraper.md
- **Developed by:** [Shivam Prajapati](https://apify.com/pshivam) (community)
- **Categories:** Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 1,000 listings

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/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

## BusinessForSale AU Scraper - Australian Businesses for Sale

Get **businesses for sale in Australia** from [BusinessForSale.com.au](https://www.businessforsale.com.au), one of the country's largest marketplaces with **about 5,900 businesses for sale**: asking price, location, category, revenue and profit bands, year established, reason for sale, broker or owner, and the full description. Plus **3,000+ sold businesses** with their last asking price and sale month. Filter by state, city, region, category, price, keyword or franchise, and export to Excel, CSV, JSON or the API.

**Actively maintained.** Last update: 2026-11-04. Every release passes 480+ automated tests on saved BusinessForSale.com.au pages plus a check against the live site, and Apify test-runs it every day.

### What can you use it for?

- **Find a business to buy.** Screen every cafe, takeaway, franchise, trade or online business in your state by price instead of paging through the site.
- **Valuation comps.** Sold businesses give you last asking prices by category, location and month: see what cafes in Sydney or franchises in Queensland actually sell for.
- **Deal flow for brokers, accountants and investors.** Schedule a daily run sorted by newest and send new listings to Google Sheets, Slack or your CRM.
- **Market research.** Count listings and asking prices by category and state, track how many businesses come to market each month.

### What data do you get?

Fields marked *details* are filled when **Open each listing for full details** is on (the default).

| Field | What it is |
|---|---|
| `listingId` | BusinessForSale.com.au listing ID |
| `url` | Link to the listing |
| `title` | Headline |
| `dealStatus` | `available`, `under offer` or `sold` |
| `sellerType` | `broker` or `owner` (sold by the owner directly) (*details*) |
| `isFeatured` | A paid featured listing |
| `labels` | Labels such as Featured, New, Price Reduced, Under Offer |
| `askingPrice` | Asking price in AUD (lower end of a range; for sold businesses the last asking price) |
| `askingPriceMax` | Upper end of a price range |
| `priceText` | The price as shown, e.g. "$415,000 plus stock at valuation" or "Price on application" |
| `soldDate` | Month the business sold, YYYY-MM (sold businesses) |
| `revenueText` / `revenueMin` / `revenueMax` | Revenue band, e.g. "$1m - $2m", and its limits in AUD (*details*, when given) |
| `profitText` / `profitMin` / `profitMax` | Profit band, e.g. "$100k - $200k", and its limits in AUD (*details*, when given) |
| `category` | Main category, e.g. Food & Drink |
| `subcategory` | Main subcategory, e.g. Butcher Shop (*details*) |
| `categories` | Every category the listing is in (*details*) |
| `businessType` | Business type from the key facts (*details*) |
| `location` | Location as shown, e.g. "Sydney NSW" or "Gold Coast Region, QLD" |
| `region` | Region, e.g. Sydney Region |
| `state` | NSW, VIC, QLD, WA, SA, TAS, ACT or NT |
| `established` | When the business started, e.g. "1991" or "25 years" (*details*) |
| `reasonForSale` | Why the owner is selling (*details*) |
| `saleBasis` | Sale basis, e.g. "All inclusive" (*details*) |
| `summary` | Short summary from the results page |
| `description` | Full description (*details*) |
| `reference` | The broker's reference (*details*) |
| `imageUrl` / `imageCount` | Main picture and number of photos |
| `dateUpdated` | When the listing was last updated, YYYY-MM-DD (*details*) |
| `hasDetails` | `true` if the listing page was opened |
| `foundOn` | The results page where the listing was found |
| `scrapedAt` | When it was scraped (UTC) |

#### Privacy

The scraper never reads the enquiry form or broker profiles, and it **removes e-mail addresses, phone numbers, web links and people's names** given as contacts in the description ("Contact Jane Smith", "Listed by ...") (replaced with `[removed]`). "Wanted" adverts (buyers looking for a business) are skipped.

#### Example result

```json
{
  "listingId": "38jemW10034",
  "title": "Established Electrical Retail Store with Loyal Local Customer Base, Regional Market Reach, and 25 Years of Trading",
  "dealStatus": "available",
  "sellerType": "owner",
  "askingPrice": 730000,
  "priceText": "$730,000",
  "revenueText": "$1m - $2m",
  "revenueMin": 1000000,
  "revenueMax": 2000000,
  "profitText": "$100k - $200k",
  "profitMin": 100000,
  "profitMax": 200000,
  "category": "Home & Garden Retail",
  "subcategory": "Whitegoods",
  "location": "Blackall QLD",
  "region": "Gladstone & Central QLD Region",
  "state": "QLD",
  "established": "25 years",
  "reasonForSale": "Retirement and health reasons",
  "dateUpdated": "2026-10-09",
  "hasDetails": true
}
```

### How to use it

1. Choose **Deals**: businesses for sale, sold businesses, or both.
2. Optionally pick **Locations** (states, cities, regions) and **Categories**, add a **Keyword** or a price range, or choose businesses or franchises only.
3. Set **Maximum listings**, click **Start**, and download the results.

Every location is searched with every category, and duplicates are removed. With several searches, *Maximum listings* is shared fairly between them.

#### Input options

| Option | What it does |
|---|---|
| `dealTypes` | `forSale` (businesses for sale), `sold` (sold businesses), or both |
| `locations` | States, cities or regions, e.g. `nsw`, `sydney`, `gold-coast`; a suburb like `sydney-nsw-2000` works too |
| `categories` | Categories or subcategories, e.g. `cafe`, `food-drink`, `bakery`, `saas` |
| `keyword` | The site's keyword search, e.g. "coffee" or "freehold" |
| `minPrice` / `maxPrice` | Asking price range in AUD |
| `businessType` | `all`, `business` (independent businesses) or `franchise` |
| `sortBy` | `recommended`, `newest`, `priceLow` or `priceHigh` |
| `startUrls` | BusinessForSale.com.au results pages (any filters) or single listing URLs, scraped as given |
| `includeDetails` | Open each listing for the full set of fields (default on). Turn off for a fast, cheaper run |
| `onlyNew` | Skip listings that earlier runs of the same search returned: you get and pay only for ones you haven't had (the first run works as usual) |
| `maxItems` | Stop after this many listings |
| `maxConcurrency` | Pages loaded at the same time (keep low to be polite) |

#### Fast mode vs. full details

- **Full details (default):** opens every listing for all the fields above.
- **Fast mode (`includeDetails` off):** reads only the results pages, about 20x fewer requests: title, price, location, category, labels, summary and picture.

### How much does it cost?

You pay **$3.00 per 1,000 listings** returned (plus a tiny $0.00005 per run start). Platform usage is included.

| Listings | Cost |
|---|---|
| 100 | $0.30 |
| 1,000 | $3.00 |
| All businesses for sale (~5,900) | about $18 |

Apify's free plan gives you $5 of credit every month. Set a spending limit on any run and the scraper stops exactly there.

### Use it via API, on a schedule, or with your tools

- **Schedule it** daily with *Sort by* = newest to catch every new listing.
- **Only new listings:** turn it on in a scheduled run or task and each run returns only listings you haven't had yet, so you never pay twice for the same listing.
- **Integrations:** send results to Google Sheets, Slack, e-mail, Zapier, Make or a webhook.
- **API:** run it from your own code and download results as JSON, CSV or Excel.

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("pshivam/businessforsale-au-scraper").call(run_input={"locations": ["nsw"], "categories": ["cafe"], "maxItems": 200})
for business in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(business["title"], business["askingPrice"], business["location"])
```

#### Use it in Clay, n8n, Make or Zapier

Actor: `pshivam/businessforsale-au-scraper`. Paste this input and change the filters to yours:

```json
{"locations": ["sydney"], "categories": ["cafe"], "onlyNew": true, "maxItems": 500}
```

- **Clay:** create a table from an **Apify** source to pull in the results of a scheduled run of this Actor (it refreshes every 24 hours by default), or use the **Run Apify Actor** enrichment and paste the input.
- **n8n:** add the **Apify** node, choose **Run Actor and get dataset items**, pick this Actor and paste the input.
- **Make:** use **Run an Actor** with *Run synchronously* on, then **Get Dataset Items** with the run's dataset ID.
- **Zapier:** schedule this Actor in Apify, then use the **Finished Actor Run** trigger and **Fetch Dataset Items**. (Zapier stops waiting for **Run Actor** after 30 seconds, and a run usually takes about a minute.)

### Good to know

- **All filters are the site's own**, so you only pay for matching listings.
- **The site shows at most 1,000 listings per search.** When you ask for more (e.g. all of Australia), the scraper splits the search by state and then by category automatically, so you still get everything.
- **Sold businesses** can only be searched by state and category (cities count as their state).
- **The site's own count is higher than what you get**: it includes ~1,900 "wanted" adverts (buyers looking for a business), which the scraper skips.
- **Prices and figures are the seller's own**, as published on BusinessForSale.com.au. Many listings say "Contact Agent" or "Price on application" instead of a price. The price filter uses the price the seller entered, so a few matches show "Contact Seller for Price".

### This scraper vs. the alternatives

| | This scraper | Copying from BusinessForSale.com.au by hand | Building your own scraper |
|---|---|---|---|
| 100 listings with full details | About 1 minute | Hours (open and copy each page) | Days to build, then upkeep |
| Output | Excel, CSV, JSON or API; 36 fields per listing | A spreadsheet you type | Whatever you code |
| Asking price, revenue and profit bands | Numbers (min/max), ready to sort | Retyped by hand | You write the parsing |
| Only new listings each day | Built in (`onlyNew`) | Compare lists yourself | You build it |
| When the site changes | We fix it; Apify test-runs it daily | - | You fix it |
| Seller contact details | Removed | Your responsibility | Your responsibility |
| Cost | $3.00 per 1,000 listings | Your time | Your time plus hosting |

### FAQ

#### How many listings are there?

About 5,900 businesses for sale plus 3,000+ sold businesses. The site's own count (about 7,750) also includes about 1,900 'wanted' adverts from buyers, which are skipped.

#### How much does it cost?

$3.00 per 1,000 listings (less on paid Apify plans), so 200 listings cost $0.60 and every listing in NSW (about 1,950) about $5.85.

#### Can it get more than 1,000 results?

Yes. The site shows at most 1,000 listings per search, so the scraper splits bigger searches by state and then by category automatically.

#### Is it legal to scrape BusinessForSale.com.au?

This scraper reads public listing pages at a polite speed, follows the site's robots.txt and returns business data with contact details removed. You are responsible for how you use the data; check the site's terms for your use case.

#### Can I get the seller's contact details?

No. Use the listing `url` to enquire on BusinessForSale.com.au.

#### Why are some revenue or profit fields empty?

Only some sellers publish revenue and profit bands. The full description often has more figures.

#### How do I get only new listings every day?

Save your search as a task, turn on **Only new listings** and schedule it daily. Each run then skips the listings earlier runs returned, so you get and pay only for ones you haven't had. Tip: set *Maximum listings* above the number of listings your search has, so the first run gets them all and later runs return just the new ones.

### Ready-made examples

Open one, click **Try for free**, and get data in about a minute:

- [Cafes for Sale in Sydney (BusinessForSale AU)](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-cafes-for-sale-sydney)
- [Businesses for Sale in NSW (BusinessForSale AU)](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-businesses-for-sale-nsw)
- [Franchises for Sale in Australia (BusinessForSale AU)](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-franchises-for-sale-australia)
- [Sold Businesses in Australia for Valuation Comps](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-sold-businesses-valuation-comps)
- [New Businesses for Sale in Australia (Daily Feed)](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-new-business-listings-daily)
- [Online Businesses for Sale in Australia](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-online-businesses-for-sale)
- [Businesses for Sale Under $200k in Queensland](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-businesses-under-200k-queensland)
- [Businesses for Sale in Melbourne (BusinessForSale AU)](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-businesses-for-sale-melbourne)
- [Businesses for Sale in Perth (BusinessForSale AU)](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-businesses-for-sale-perth)
- [Food & Drink Businesses for Sale in Australia](https://apify.com/pshivam/businessforsale-au-scraper/examples/bfsau-food-businesses-for-sale)

### More business-for-sale scrapers

- [BusinessBroker.net Scraper - Businesses for Sale](https://apify.com/pshivam/businessbroker-net-scraper): US businesses for sale with asking price, revenue, cash flow and location.
- [Daltons Business Scraper - Businesses for Sale UK](https://apify.com/pshivam/daltons-business-scraper): UK businesses for sale with asking price, leasehold or freehold, turnover, net profit and location.
- [DUB.de Scraper - Businesses for Sale in Germany](https://apify.com/pshivam/dub-de-scraper): companies for sale in Germany, Austria and Switzerland with year-by-year financials.
- [nexxt-change Scraper - Businesses for Sale & Buyers](https://apify.com/pshivam/nexxt-change-scraper): Germany's official succession marketplace, companies for sale and buyers looking for a company.
- [Website Closers Scraper - Online Businesses for Sale](https://apify.com/pshivam/website-closers-scraper): online and tech businesses for sale (eCommerce, SaaS, Amazon FBA) with asking price, cash flow and revenue, plus closed deals for valuation comps.
- [BizBen Scraper - California Businesses for Sale](https://apify.com/pshivam/bizben-scraper): California and other US businesses for sale with asking price, revenue, cash flow, down payment and lease details.
- [Transentreprise Scraper - Businesses for Sale France](https://apify.com/pshivam/transentreprise-scraper): the CCI and CMA chambers' marketplace in France with price, revenue and staff bands, sector, department and region.
- [LINK Business Scraper - Businesses for Sale NZ & AU](https://apify.com/pshivam/link-business-scraper): New Zealand's largest business broker and its Australian offices, with asking price, profit, revenue, industry and location.
- [Bpifrance Transmission Scraper - Businesses for Sale France](https://apify.com/pshivam/bpifrance-transmission-scraper): about 45,000 French businesses and shops for sale from Bpifrance's partner marketplaces, with price, revenue, EBE, staff, sector and region.

### Other scrapers

- [Trade Show Scraper - Worldwide Trade Fair Calendar](https://apify.com/pshivam/trade-show-scraper): trade shows and exhibitions worldwide with dates, venue, city, country, industries and the official website.
- [CeX Scraper - Prices, Trade-In Values & Stock](https://apify.com/pshivam/cex-scraper): CeX (webuy.com) second-hand phones, games and laptops in 11 countries with sell price, cash and voucher trade-in value, stock by store and price history.
- [DealSeek Scraper - Amazon Deals & Promo Codes](https://apify.com/pshivam/dealseek-scraper): Amazon, Walmart and eBay deals in 8 countries with final prices, verified promo codes, coupons and price history.

# Actor input Schema

## `dealTypes` (type: `array`):

Businesses for sale now, sold businesses (with their last asking price and sale month), or both. Default: for sale.

## `locations` (type: `array`):

States, cities or regions (e.g. NSW, Sydney, Gold Coast Region). Leave empty for all of Australia. A suburb works too, typed like 'sydney-nsw-2000'. Sold businesses can only be searched by state.

## `categories` (type: `array`):

Pick one or more business categories (e.g. Cafe, Food & Drink > Bakery, Online > SaaS). Leave empty for all. With locations too, every category is searched in every location; duplicates are removed.

## `keyword` (type: `string`):

The site's keyword search, e.g. "coffee", "freehold" or "NDIS".

## `minPrice` (type: `integer`):

Only listings asking at least this much (the site's price filter).

## `maxPrice` (type: `integer`):

Only listings asking at most this much (the site's price filter).

## `businessType` (type: `string`):

Independent businesses, franchises (resales and new territories), or both. Businesses for sale only.

## `sortBy` (type: `string`):

Order of the site's results: recommended (featured first), newest, or by price. Businesses for sale only.

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

Optional: businessforsale.com.au results pages (for sale or sold, with any filters) or single listing URLs, scraped as given.

## `includeDetails` (type: `boolean`):

On: full description, all categories, revenue and profit bands, year established, reason for sale, broker or owner, last update. Off: a fast, cheaper run with what the results pages show.

## `onlyNew` (type: `boolean`):

Skip listings that earlier runs of this same search already returned, so you never get or pay for the same listing twice. Turn it on for a scheduled run or a saved task to get only what's new each time. The first run works as usual and remembers what it returned, in your key-value store 'businessforsale-au-scraper-only-new' (delete it to start over).

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

Stop after this many listings. You are charged per listing.

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

Pages loaded at the same time. Keep it low to be polite to the website.

## Actor input object example

```json
{
  "dealTypes": [
    "forSale"
  ],
  "businessType": "all",
  "sortBy": "recommended",
  "includeDetails": true,
  "onlyNew": false,
  "maxItems": 50,
  "maxConcurrency": 4
}
```

# Actor output Schema

## `listings` (type: `string`):

One row per business for sale or sold business, shown with the overview view.

## `financials` (type: `string`):

Asking price, revenue and profit bands as numbers for sorting and filtering.

## `runStats` (type: `string`):

Requests made, time spent and number of listings for this run (RUN_STATS record).

# 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 = {
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("pshivam/businessforsale-au-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 = { "maxItems": 50 }

# Run the Actor and wait for it to finish
run = client.actor("pshivam/businessforsale-au-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 '{
  "maxItems": 50
}' |
apify call pshivam/businessforsale-au-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pshivam/businessforsale-au-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/ird3p4YqHiKIz2P1T/builds/UV7raCHvbTEU4EsQK/openapi.json
