# hipages Australia Scraper (`scraptivo/hipages-au-scraper`) Actor

Collect hipages.com.au tradie listings by category or URL. Optionally add company profile details and reviews.

- **URL**: https://apify.com/scraptivo/hipages-au-scraper.md
- **Developed by:** [Scraptivo](https://apify.com/scraptivo) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 1,000 company records

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

**hipages Australia Scraper** collects tradie and home-service companies from [hipages.com.au](https://hipages.com.au) and turns them into structured data for lead generation, market research, and local-service monitoring. Provide a category such as air-conditioning installation, a suburb URL, or a company page, then export name, rating, location, hired count, and profile URL to JSON, CSV, or Excel. Use it to build tradie lists, watch competitors, and schedule recurring collection. Pricing starts at **$2.50 per 1,000 companies**, with optional profile details and reviews at **$2.00 per 1,000**.

### What can you automate with hipages Australia Scraper?

- **Build targeted tradie lists** — Collect electricians, plumbers, builders, and other directory categories in a suburb or city.
- **Qualify local providers** — Use rating, hired count, license flags, and recommendation count to shortlist companies.
- **Attach contact context** — Optionally add ABN, website, email, address, licenses, and public phone numbers.
- **Read customer sentiment** — Nest reviews on each company row when **Include company reviews** is on.
- **Schedule recurring collection** — Run weekly and push new companies into Sheets, a CRM, or an alert workflow.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Lead-generation agencies | Build suburb-and-category lists of licensed tradies for outreach. |
| Home-service platforms | Monitor competitor coverage, ratings, and hired counts in a city. |
| Market researchers | Compare category density and ratings across Australian metros. |
| Procurement teams | Shortlist providers with ABN, licenses, and review history. |

### What data can you collect from hipages?

| Data group | Example fields | How it helps |
|---|---|---|
| Company identity | `companyId`, `companyKey`, `name`, `url`, `category` | Identify each tradie and deduplicate with `companyId`. |
| Reputation | `rating`, `ratingCount`, `hiredCount`, `recommendationCount` | Rank providers by reviews and completed jobs. |
| Location | `location`, `suburb`, `state`, `address` | Filter by city and postcode. |
| Profile details | `phone`, `email`, `abn`, `licenses`, `website` | Appear when **Include company details** succeeds. |
| Reviews | nested review list | Appear when **Include company reviews** is on — not separate dataset rows. |

Directory-card fields are always collected. Phone, email, ABN, and licenses appear only when details are enabled. Reviews nest on the company row.

### How to use hipages Australia Scraper

1. Open the [hipages Australia Scraper](https://apify.com/scraptivo/hipages-au-scraper) on Apify.
2. Paste a hipages category or company URL, or choose a category and optional location such as Sydney.
3. Set **Max companies** (`0` means unlimited) and any detail or review toggles.
4. Run the Actor — it writes one dataset row per company.
5. Export the dataset or connect it to your workflow.

```json
{
    "startUrls": [
        {
            "url": "https://hipages.com.au/find/air_conditioning_installation/nsw/sydney"
        }
    ],
    "includeCompanyDetails": false,
    "includeReviews": false,
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### Example workflow

#### Build a weekly Sydney aircon-installer list

1. Schedule a Monday run with the Sydney air-conditioning installation URL and `maxItems` high enough for your pipeline.
2. Keep companies with a license and a rating of 4.5 or above using `hasLicense` and `rating`.
3. Enable **Include company details** on a second pass when you need phone, email, and ABN.
4. Send new records to Google Sheets or a CRM through a webhook after each run.
5. Deduplicate user-side against the stable `companyId` field.

The Actor does not filter or merge results across runs — those steps happen in your pipeline.

### Automate and integrate your results

- **Schedules** — Run **weekly** for directory snapshots, or **daily** when you monitor a single suburb. Create a separate scheduled task per category and city.
- **Webhooks** — Push completed runs into Google Sheets, Make, Zapier, Slack, or a CRM.
- **Exports and API** — Download JSON, CSV, Excel, or HTML from the Apify Console, or start a run from the API:

```shell
curl -X POST "https://api.apify.com/v2/acts/scraptivo~hipages-au-scraper/runs?token=YOUR-APIFY-TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [{"url": "https://hipages.com.au/find/air_conditioning_installation/nsw/sydney"}],
    "maxItems": 20
  }'
```

Deduplicate user-side with `companyId`.

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---|---:|---|---|
| `startUrls` | array | No | — | hipages category or company URLs. |
| `categories` | array | No | — | Directory slugs such as `electricians`, `plumbers`, or group values such as `interior`. |
| `location` | string | No | — | Suburb, city, or postcode. Empty starts from capital cities so collection can go beyond national top-10 cards. |
| `includeCompanyDetails` | boolean | No | `false` | Add ABN, website, email, address, licenses, phone (`company-details` event). |
| `includeReviews` | boolean | No | `false` | Nest reviews on each company (`company-review` event per review). |
| `maxReviewsPerCompany` | integer | No | `0` | Cap reviews per company; `0` means all. |
| `maxItems` | integer | No | `0` | Cap companies; `0` is unlimited. |
| `proxyConfiguration` | object | No | Residential | Apify proxy settings. |

Provide `startUrls`, `categories`, or both.

### Output example

```json
{
    "companyId": "3595346",
    "companyKey": "lennairptyltd",
    "name": "LENNAIR PTY LTD",
    "url": "https://hipages.com.au/connect/lennairptyltd",
    "category": "Aircon Installation",
    "categoryKey": "air_conditioning_installation",
    "location": "sydney, nsw",
    "rating": 5.0,
    "ratingCount": 144,
    "hiredCount": 215,
    "hasLicense": true,
    "hasValidAbn": true,
    "phone": "0461 272 435",
    "email": "info@lennair.com.au",
    "abn": "22652327716",
    "address": "RIVERWOOD NSW 2210"
}
```

### How much does it cost to scrape hipages?

Billing is pay-per-event. A one-time **Actor Start** fee of **$0.00005** applies per run.

| Event | When it is charged | Price |
|---|---|---|
| `company` | Each company row | **$2.50 per 1,000** |
| `company-details` | Each profile successfully enriched | **$2.00 per 1,000** |
| `company-review` | Each review | **$2.00 per 1,000** |

A listing-only run of 1,000 companies costs about **$2.50** plus Actor Start. Adding details on every company costs about **$4.50** plus Actor Start. Apify plan discounts may reduce these prices. Platform compute and proxy usage are billed separately on your Apify plan.

### Reliability and responsible use

- **Proxy** — Residential proxies are the default and recommended setting.
- **Conditional fields** — Phone, email, ABN, licenses, and reviews appear only when their toggles succeed.
- **Public data** — The Actor collects publicly visible company and review information from hipages.
- **Responsible use** — Only use the data in ways that comply with hipages' terms of service and applicable law.

### Frequently asked questions

#### Can I scrape hipages tradies by category and suburb?

Yes. Paste a category or suburb URL in `startUrls`, or set `categories` and an optional `location` such as `Sydney`.

#### Can I schedule hipages Australia Scraper to run automatically?

Yes. Open the **Scheduler** tab in Apify Console and set a weekly cadence per category and city.

#### What counts as one result?

A company row is one `company` event at **$2.50 per 1,000**. Details and reviews are separate events and are billed only when those toggles return data.

#### Why are some fields empty?

Phone, email, ABN, and licenses appear only when **Include company details** is on. Reviews appear only when **Include company reviews** is on. Some companies hide contact fields.

#### How do I avoid duplicate records?

Within one run, companies are unique by `companyId`. Across runs the Actor appends results. When you combine datasets, keep the first row for each `companyId`.

#### Do I need a proxy?

The Actor works with the default Apify residential proxy. If a run returns unusually few companies, confirm that `proxyConfiguration` uses the RESIDENTIAL group.

### Related Scraptivo automations

- [SEEK Australia Jobs Scraper](https://apify.com/scraptivo/seek-au-jobs-scraper) — collect Australian job listings alongside local-service research.
- [Gumtree Scraper](https://apify.com/scraptivo/gumtree-scraper) — add classified listings from another AU marketplace.
- [Realestate.com.au Scraper](https://apify.com/scraptivo/realestate-com-au-scraper) — cover Australian property when your workflow includes renovations and trades.
- [Clutch Scraper](https://apify.com/scraptivo/clutch-scraper) — collect service-company profiles for B2B research.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, sample URL, required fields, and expected volume so we can assess the request.

# Actor input Schema

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

hipages category or company URLs. Category pages look like https://hipages.com.au/find/air\_conditioning\_installation or a suburb page such as https://hipages.com.au/find/air\_conditioning\_installation/nsw/sydney. Company pages look like https://hipages.com.au/connect/amplifyelectrical. Use this or Categories (or both).

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

Directory categories from the hipages header (Interior, Exterior, Outdoor, Build & Renovate, More). Choosing a group (All Interior, …) includes every subcategory in that group. Combine with Start URLs if you want both.

## `location` (type: `string`):

Optional suburb, city, or postcode (e.g. Sydney, 2000, Melbourne VIC). When set, listings are paginated for that area. When empty, the actor starts from capital cities and nearby suburbs so it can collect companies beyond the national top-10 cards.

## `includeCompanyDetails` (type: `boolean`):

Visit each company profile for ABN, website, email, address, licenses, and the public phone number. Charged as the company-details event when details are extracted.

## `includeReviews` (type: `boolean`):

Attach reviews to each company as a list (not separate dataset rows). Charged once per review scraped (company-review event).

## `maxReviewsPerCompany` (type: `integer`):

Maximum reviews to scrape for each company (0 = all available).

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

Maximum number of companies to scrape (0 = unlimited).

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

Use Apify Residential proxies on the platform. Local runs can disable this.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://hipages.com.au/find/air_conditioning_installation/nsw/sydney"
    }
  ],
  "categories": [
    "air_conditioning_installation"
  ],
  "location": "Sydney",
  "includeCompanyDetails": false,
  "includeReviews": false,
  "maxReviewsPerCompany": 0,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset of scraped hipages companies

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

Record counts and timestamps for this run

# 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://hipages.com.au/find/air_conditioning_installation/nsw/sydney"
        }
    ],
    "categories": [
        "air_conditioning_installation"
    ],
    "location": "Sydney",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/hipages-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 = {
    "startUrls": [{ "url": "https://hipages.com.au/find/air_conditioning_installation/nsw/sydney" }],
    "categories": ["air_conditioning_installation"],
    "location": "Sydney",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scraptivo/hipages-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 '{
  "startUrls": [
    {
      "url": "https://hipages.com.au/find/air_conditioning_installation/nsw/sydney"
    }
  ],
  "categories": [
    "air_conditioning_installation"
  ],
  "location": "Sydney",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scraptivo/hipages-au-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraptivo/hipages-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/ikpCwATzATxgQNv8p/builds/N1KWusu6CgdtoTTZA/openapi.json
