# Seek Business (`websift/seek-business`) Actor

Scrape Australian SEEK Business listings with powerful filters for industries, regions, investment and listing age. Extract business details, summaries, images, phone numbers and emails into clean, structured datasets for lead generation, market research and investment discovery.

- **URL**: https://apify.com/websift/seek-business.md
- **Developed by:** [Jacob](https://apify.com/websift) (community)
- **Categories:**
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.
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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## SEEK Business Scraper

### 🔎 What is the SEEK Business Scraper?

**SEEK Business Scraper** extracts public business-for-sale listings from [SEEK Business](https://www.seekbusiness.com.au), including investment details, location, industry, seller information, full listing descriptions, contact details, and image URLs.

- **Find opportunities:** Search by keywords, industry, opportunity type, region, investment range, and listing age.
- **Capture complete listings:** Fetches the listing page after the search so the output includes detailed descriptions and structured sections.
- **Filter results:** Set a maximum result count, choose a sort order, exclude price-on-application listings, and include or exclude premium listings.
- **Export structured data:** Results are stored in an Apify dataset and can be downloaded as JSON, CSV, Excel, XML, or HTML.

The scraper uses SEEK Business search results to discover listings, then parses each public listing page for additional details. It does not require SEEK Business login credentials or cookies.

#### What data can you extract with the SEEK Business Scraper?

| | |
|---|---|
| 🔗 Listing ID and URL | 🏢 Business name and title |
| 📝 Summary and full description | 💰 Investment range and status |
| 📍 Location, region, state, and country | 🏷️ Industry and opportunity type |
| 👤 Seller broker ID and seller type | 📅 Listing refresh date |
| ☎️ Contact phone numbers and emails | 🖼️ Listing image URLs |
| 📚 Structured detail sections | ⭐ Premium and freemium status |

### ⬇️ Input

All input fields are optional. With the default settings, the scraper searches for business listings, returns up to 5,000 results, sorts them by date, and includes premium listings.

```json
{
    "searchQuery": ["cafe", "restaurant"],
    "maxResults": 100,
    "whenListed": 30,
    "regionIds": ["16511"],
    "excludePOA": true,
    "industryIds": [],
    "investmentLevelMin": 100000,
    "investmentLevelMax": 1000000,
    "opportunityIds": ["3"],
    "regionRadius": 50,
    "sort": "relevance",
    "includePremium": true
}
```

#### Input parameters

| Parameter | Type | Default | Description |
|---|---|---:|---|
| `searchQuery` | array | `[]` | Keywords used to filter listings, such as `cafe` or `mechanic`. |
| `maxResults` | integer | `5000` | Maximum number of listings to return. The allowed range is 10 to 30,000. |
| `whenListed` | integer | `1000` | Listing age filter used by SEEK Business. Use `0` for no age restriction when supported by the site. |
| `regionIds` | array | `[]` | SEEK Business region IDs used for location filtering. |
| `excludePOA` | boolean | `false` | Excludes listings whose price is available on application when `true`. |
| `industryIds` | array | `[]` | SEEK Business industry IDs used to filter listings. |
| `investmentLevelMin` | integer | `0` | Minimum investment amount. |
| `investmentLevelMax` | integer | `2147483647` | Maximum investment amount. |
| `opportunityIds` | array | `["3"]` | Opportunity types: `1` franchise new, `2` franchise resale, `3` business, and `4` licence/distribution. |
| `regionRadius` | integer | `5` | Search radius used with region filters. |
| `sort` | string | `date` | Sort order: `date`, `business`, `investment`, `relevance`, or `closest`. |
| `includePremium` | boolean | `true` | Includes premium listings when `true`. |

Region and industry IDs are values used by SEEK Business. You can obtain them from the filters in the SEEK Business search interface.

### ⬆️ Output

The scraper stores one enriched listing per dataset item. A record contains search-result fields plus details parsed from the listing’s public HTML page.

Here is a representative output record:

```json
{
    "listingId": 785119,
    "listingUrl": "https://www.seekbusiness.com.au/business-listing/785119",
    "title": "Well-Established Auto Repair Workshop - Profitable & Turnkey Operation",
    "businessName": "LINK Albury-Wodonga",
    "summary": "The business provides a comprehensive range of mechanical servicing and repair services",
    "opportunityType": "Business",
    "investmentMin": 500001,
    "investmentMax": 599999,
    "investmentStatus": "POA",
    "hasInventory": false,
    "location": "Wodonga, VIC 3690",
    "area": null,
    "region": "Regional Victoria",
    "state": "Victoria",
    "country": "Australia",
    "industry": "Automotive & Marine",
    "industryGroup": "Commercial Services",
    "industryTag": "Mechanic",
    "sellerBrokerId": 74305,
    "sellerType": "Broker",
    "refreshedAt": "2026-08-08T16:16:13.487Z",
    "isFreemium": false,
    "detailText": "Summary\nThe business provides a comprehensive range of mechanical servicing and repair services\nAbout the Business\nA highly profitable automotive repair business with strong gross margins and diversified revenue streams.",
    "detailSections": {
        "About the Business": "A highly profitable automotive repair business with strong gross margins and diversified revenue streams."
    },
    "contactText": "Contact\nDallas Lodge\n+61 412 298 651",
    "contactPhones": ["+61 412 298 651"],
    "contactEmails": [],
    "imageUrls": [
        "https://images.seekbusiness.com.au/client/original/74305/400x300/0467e8d6-a970-4468-b0f4-7227629dd034.jpg"
    ]
}
```

`detailSections` contains headings detected in the listing page, such as `About the Business`, `Potential`, or `History`. Contact fields and images may be empty when they are not publicly available.

Results can be downloaded in **JSON, CSV, Excel, XML, or HTML**, or fetched through the [Apify Dataset API](https://docs.apify.com/api/v2/dataset/items-get).

### What can you use SEEK Business data for?

- 🎯 **Business acquisition research:** Find businesses for sale that match an investment budget or industry.
- 📊 **Market analysis:** Compare asking prices, locations, industries, and opportunity types across listings.
- 🤝 **Lead generation:** Build prospect lists for brokers, advisors, lenders, and business service providers.
- 📈 **Competitive monitoring:** Track newly listed and recently refreshed business opportunities.
- 🗺️ **Regional research:** Analyze business opportunities by state, region, or local area.
- 🤖 **Data pipelines:** Send structured listings to a database, spreadsheet, CRM, or analysis workflow.

### 📏 How many results can you get? (and other limitations)

The maximum configured result count is 30,000, but the number returned depends on SEEK Business search availability and the selected filters. Run a small test first to confirm that your filters produce the expected results.

- **Search availability:** SEEK Business may return fewer listings than requested when fewer listings match the selected criteria.
- **Public data only:** The scraper does not access private, login-protected, deleted, or otherwise unavailable listing content.
- **Contact details:** Phone numbers and email addresses are included only when exposed in the public listing page. Some phone numbers may require an interaction on the source site and therefore may not be present.
- **Platform changes:** SEEK Business may change its HTML, GraphQL search response, rate limits, or anti-automation controls. Such changes can affect results and field availability.
- **Regional values:** Region and industry IDs are SEEK Business identifiers. Use the source site’s filter controls to select valid values.

### 🔧 Troubleshooting and error handling

**Few or no results?** Check the search keywords, IDs, investment range, listing age, and opportunity type. Run the scraper with the default filters to determine whether the issue is caused by restrictive criteria.

**Some detail fields are empty?** The source listing may not publish that field, or the page may use a different presentation. Search-result fields remain available when full detail fields are missing.

**The run returns fewer items than requested?** The request is a maximum, not a guarantee. SEEK Business may have fewer matching public listings or may restrict access temporarily.

**The run fails or takes too long?** Reduce `maxResults` and retry. Large runs fetch an additional page for every listing, so they require more time and resources.

### 🔗 Integrations and using the SEEK Business Scraper with the API

The dataset can be connected to cloud services through [Apify integrations](https://apify.com/integrations), including Make, Zapier, Slack, Google Sheets, Google Drive, Airbyte, and GitHub. You can also use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to receive a notification when a run finishes.

#### Using the SEEK Business Scraper with the Apify API

The Apify API provides programmatic access to actor runs and datasets. Official clients are available for [Python](https://pypi.org/project/apify-client/) and [Node.js](https://www.npmjs.com/package/apify-client/). The API tab in Apify Console provides ready-made examples for the deployed actor.

### ❓ Frequently asked questions

#### Can I scrape only one industry or region?

Yes. Use `industryIds` and `regionIds` to apply SEEK Business filter values. You can also combine these filters with `searchQuery`, investment limits, and `whenListed`.

#### Can I exclude listings without a public asking price?

Yes. Set `excludePOA` to `true` to exclude price-on-application listings returned by SEEK Business.

#### Can I use the scraper with Python or Node.js?

Yes. Start an actor run and retrieve its dataset through the Apify API or the official Python and Node.js clients.

#### Does the scraper download listing images?

No. It returns the image URLs found in each listing. Images are not downloaded into the dataset.

### 💬 Your feedback

If you have feedback, a feature request, or find a bug, please create an issue in the actor’s **Issues** tab in Apify Console.

SEEK Business Scraper is not affiliated with or endorsed by SEEK Business.

# Actor input Schema

## `searchQuery` (type: `array`):

Keywords to filter business listings by.

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

Maximum number of business listings to return.

## `whenListed` (type: `integer`):

Listing age filter used by SEEK Business.

## `regionIds` (type: `array`):

SEEK Business region IDs to filter listings by.

## `excludePOA` (type: `boolean`):

Exclude listings whose price is available on application.

## `industryIds` (type: `array`):

SEEK Business industry IDs to filter listings by.

## `investmentLevelMin` (type: `integer`):

Minimum investment level for listings.

## `investmentLevelMax` (type: `integer`):

Maximum investment level for listings.

## `opportunityIds` (type: `array`):

Opportunity types: 1 for franchise new, 2 for franchise resale, 3 for business, and 4 for licence/distribution.

## `regionRadius` (type: `integer`):

Radius used when filtering by region.

## `sort` (type: `string`):

Sorting method for listings.

## `includePremium` (type: `boolean`):

Include premium listings in the results.

## Actor input object example

```json
{
  "searchQuery": [],
  "maxResults": 5000,
  "regionIds": [],
  "excludePOA": false,
  "industryIds": [],
  "opportunityIds": [
    "3"
  ],
  "regionRadius": 5,
  "sort": "date",
  "includePremium": true
}
```

# Actor output Schema

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

Business listings stored in the Actor's default dataset.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("websift/seek-business").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("websift/seek-business").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 '{}' |
apify call websift/seek-business --silent --output-dataset

```

## MCP server setup

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

```

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/vEr2nPBIlAnhUm705/builds/f6KkD1SsG6Y6GXt80/openapi.json
