# Hipages Scraper - Australian Tradie & Home Services Leads (`scrapesage/hipages-scraper`) Actor

Scrape hipages tradies & home-service businesses by trade and suburb, or from profile URLs. Get name, phone & mobile, ABN, licence flag, star rating & reviews, services, headline and a lead score. Monitoring, no login, no key, no browser. Independent tool, not affiliated with hipages.

- **URL**: https://apify.com/scrapesage/hipages-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Real estate, Agents
- **Features:** Limited permissions
- **Stats:** 19 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 1.00 out of 5 stars

## Pricing

from $8.00 / 1,000 tradie / businesses

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

## Hipages Scraper - Australian Tradie & Home Services Leads (Phones, ABN & Reviews)

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by hipages or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "hipages" is referenced only to describe the publicly available website this Actor collects data from.

Extract **tradie & home-service business data from [hipages](https://hipages.com.au)**, the Australian tradie marketplace. Get the fields lead lists actually need: **business name, phone & mobile, email, website, ABN (with verification link), trade licences, address, star rating & times hired, services offered, headline and a 0-100 lead score** - for plumbers, electricians, builders, painters, carpenters, landscapers and 100+ trades, in any Australian suburb.

No login, no API key, no browser - fast JSON extraction from hipages' own page data. Requests go through Apify datacenter IPs first and switch to Australian residential IPs whenever hipages' firewall refuses them.

### What you get

How often each field is filled depends on what each tradie publishes on hipages; the shares below come from 69 tradies (plumbers in Sydney, electricians in Melbourne, painters around Perth) read on 23 October 2026 with business details on (the default).

| Data | Filled |
|---|---|
| Business name, profile URL, trade, suburb & state, address, headline | every tradie |
| **Phone** (mobile or landline) | every tradie (69 of 69; mobile 62, landline 60) |
| **Email** | 68 of 69 |
| **Website** | 31 of 69 |
| **ABN + ABR verification link** | every tradie |
| **Trade licences** (issuer, number, verified flag) | 66 of 69 |
| Star rating, total ratings, **times hired**, joined date | every tradie |
| **Services offered** (the trades on the profile) | every tradie |
| Google rating and Google review count | 10 of 69 |
| Highlights, premium listing flag | 45 and 23 of 69 |
| Customer reviews (text, author, date, verified hire, star rating) | opt-in; 38 of 57 reviews carried text. Most hipages reviews are recommendations without stars, so `rating` is empty on them (4 of 74 carried stars) rather than a misleading 0 |
| Lead score (0-100), monitoring (only new tradies) | every run |

### Use cases

- **Lead generation** - tradies are high-intent local buyers for job-management & invoicing software (ServiceM8, Tradify, AroFlo, simPRO), payments, marketing, tools, materials and insurance. Score them by reputation and reach (`reviewCount`, `licensed`, `abnValid`, `isPremium`) and contact them by `phone`, `mobile` or `email`.
- **Sales territory building** - pull every plumber / electrician / builder in a metro with phone, email, ABN and service area for route planning and outreach.
- **Market & competitive intelligence** - compare ratings, times hired, services and review volumes across trades and suburbs.
- **Monitoring** - schedule recurring runs to watch a trade + area for **newly listed** tradies with monitoring mode.
- **Aggregators & directories** - feed apps and CRMs with structured, verified Australian tradie data.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up).
2. Open the **Hipages Scraper**, choose trades and locations (or paste hipages URLs), and click **Start**.
3. Watch tradies stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS - or pull results via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "categories": ["plumbers", "electricians"],
    "locations": ["Sydney, NSW", "Melbourne, VIC"],
    "maxResults": 200,
    "includeBusinessDetails": true,
    "includeReviews": false,
    "includeJobLeads": false,
    "expandNearbySuburbs": false,
    "monitorMode": false
}
```

- **categories** - trades such as `plumbers`, `electricians`, `carpenters`, `painters`, `builders`, `tilers`, `plasterers`, `bricklayers`, `concreting`, `fencing`, `landscaping`, `roofing`, `gardening`, `handyman`, `gas_fitters`, `cabinet_makers`, `air_conditioning`, `pest_control`, `cleaning`, `removalists`. Friendly words like `plumber`, `sparky`, `aircon`, `removals` are auto-mapped, and any valid hipages category slug also works. Each trade pairs with every location.
- **locations** - Australian `Suburb, STATE` (`Sydney, NSW`, `Bondi, NSW`, `Brisbane, QLD`). The parser is forgiving: `Sydney NSW` (no comma), full state names, postcodes and `Australia` suffixes, bare major cities (`Newcastle`, `Gold Coast`) and bare states (`NSW` → its capital) all work, and a bare suburb with no state is automatically probed across every state. States: NSW, VIC, QLD, WA, SA, TAS, ACT, NT.
- **startUrls** - hipages listing URLs (`/find/<trade>/<state>/<suburb>`) or profile URLs (`/connect/<slug>`).
- **maxResults / maxBusinessesPerSearch** - global and per-search caps.
- **minRating / minReviews / withPhoneOnly / licensedOnly / validAbnOnly** - quality & trust filters.
- **includeBusinessDetails** *(default true)* - open each profile for phone, mobile, email, website, address, ABN, licences, rating breakdown, services and review texts. Since hipages' 2026 rebuild the listing no longer carries phone numbers, so keep this on for a lead list.
- **includeServices** *(default true)* - the list of services each tradie offers.
- **includeReviews** *(default false)* - output review records (type `review`): rating, text, author, date, source (hipages or Google) and the verified-hire flag.
- **includeJobLeads** *(default false)* - homeowner job requests (type `job`). hipages no longer puts these in its pages (the browser loads them from an API its robots.txt disallows), so this currently returns none and nothing is billed for it; the run card says so.
- **expandNearbySuburbs** *(default false)* - follow nearby suburbs for broader coverage (hipages has no deep pagination).
- **monitorMode** *(default false)* - emit only tradies not seen in previous runs.

### Output

One record per tradie (`type: "business"`), plus optional `review` and `job` records:

```json
{
    "type": "business",
    "source": "hipages",
    "businessId": "2769796",
    "slug": "worldlightelectricalptyltd",
    "name": "World Light Electrical Pty Ltd",
    "profileUrl": "https://hipages.com.au/connect/worldlightelectricalptyltd",
    "categoryName": "Electricians",
    "tradeType": "Electrician",
    "state": "vic",
    "suburb": "melbourne",
    "serviceArea": "Melbourne",
    "phone": "04xxxxx409",
    "mobile": "04xxxxx409",
    "landline": null,
    "email": "xxxxxxxx@gmail.com",
    "website": "https://worldlightelectrical.com.au/about.php",
    "address": "Melbourne University VIC 3000",
    "abn": "49607843005",
    "abnValid": true,
    "abnVerifyUrl": "https://www.abr.business.gov.au/SearchByAbn.aspx?SearchText=49607843005",
    "licensed": true,
    "licenses": [
        { "issuer": "Energy Safe VIC", "number": "REC-25020", "verified": true },
        { "issuer": "Australian Refrigeration Council", "number": "L171223", "verified": true },
        { "issuer": "TITAB Australia Cabler Registry Services (TITAB)", "number": "T61863", "verified": true }
    ],
    "rating": 4.8,
    "totalRatings": 102,
    "totalHired": 184,
    "reviewCount": 105,
    "joinedAt": "2018-01-09T05:02:32.000Z",
    "headline": "With our extensive knowledge and experience, we pride ourselves on being the most reliable, professional, and trustworthy electricians in all over Melbourne.",
    "highlights": ["Fast & Efficient", "Highly Recommended", "Professional & Prompt", "All Your Electrical Needs", "Competitive Price"],
    "isPremium": false,
    "serviceCount": 33,
    "services": ["Electricians", "Lighting", "Antenna Services", "Antenna Installation"],
    "leadScore": 80,
    "searchCategory": "electricians",
    "searchLocation": "Melbourne, VIC",
    "scrapedAt": "2026-10-23T01:58:28.137Z"
}
```

(A real record from a 23 October 2026 run, shortened: the mobile and the email are masked here, and the service list shows 4 of its 33 entries.)

Review rows carry `businessName`, `rating` (empty for a recommendation without stars), `text` (empty for a star-only review), `author`, `postedAt`, `reviewSource` (hipages or Google), `verifiedHire`, `reviewerLocation`, `ownerReply` and `profileUrl`.

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

This Actor uses Apify's **pay-per-event** pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

- **Tradie / business** - One tradie record: name, phone & mobile, email, website, ABN + verification link, licences, service area, rating, services and a 0-100 lead score.
- **Review** - One customer review from a tradie's profile: star rating, text, author, date and source.
- **Job request (demand-side lead)** - One homeowner job request. hipages no longer puts these in its pages, so this event is currently never charged.

The current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** - start runs, fetch datasets, manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[Python](https://docs.apify.com/api/client/python/)** - official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** - run it daily/weekly to track newly listed tradies in a trade + area; perfect for lead pipelines.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** - trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/hipages-scraper').call({
    categories: ['plumbers', 'electricians'],
    locations: ['Sydney, NSW'],
    maxResults: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} tradies`);
```

### Monitoring mode

Turn on **monitorMode** and the actor remembers every business id it has returned (in a named key-value store) and emits **only new tradies** on the next run. It pairs cleanly with [Schedules](https://docs.apify.com/platform/schedules) - the schedule triggers the run; monitoring decides what's new - so you can watch a trade + area for newly listed businesses without conflict or duplicates.

### Integrate with any app

Connect the dataset to 5,000+ apps - no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** - multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** - push new tradie leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** - get notified when a monitored search finds new tradies.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** - auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** - pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** - trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** - ask your assistant to "find the top-rated licensed plumbers in Sydney with their phone numbers" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready**: AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)**: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), with no account and no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)**: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **local-business lead-gen stack**:

- **[Houzz Scraper](https://apify.com/scrapesage/houzz-scraper)** - home-improvement pros, contacts and reviews.
- **[Bark Listing Scraper](https://apify.com/scrapesage/bark-listing-scraper)** - service-provider leads from Bark.
- **[Fresha Scraper](https://apify.com/scrapesage/fresha-scraper)** - salon, spa & beauty business leads.
- **[Booksy Scraper](https://apify.com/scrapesage/booksy-scraper)** - beauty & wellness provider leads.
- **[Healthgrades Scraper](https://apify.com/scrapesage/healthgrades-scraper)** - doctors & healthcare providers with reviews.
- **[FindLaw Scraper](https://apify.com/scrapesage/findlaw-scraper)** - lawyers, law firms and contact leads.
- **[Insurance Agent Scraper](https://apify.com/scrapesage/insurance-agent-scraper)** - State Farm & Farmers agent leads.
- **[TaxBuzz Scraper](https://apify.com/scrapesage/taxbuzz-scraper)** - CPA, accountant & tax preparer leads.

### Tips

- **More tradies per city**: each trade + suburb page returns the ~15-20 top-ranked tradies. To go deeper, add more suburbs (`Parramatta, NSW`, `Bondi, NSW`, …) or turn on `expandNearbySuburbs` to follow adjacent suburbs automatically.
- **Phones, emails and ABNs**: keep `includeBusinessDetails` on (the default). Since hipages' 2026 rebuild the listing shows only that a number exists; the numbers, email, website, ABN, licences, services and review texts all come from each tradie's profile.
- **Cost control**: filter with `minRating` / `withPhoneOnly` / `licensedOnly` and cap with `maxResults`. Reviews are opt-in; a tradie the filters drop is never billed.

### Getting 0 results?

Every run ends with a **status message that tells you exactly why** and what to change. The common causes:

- **Trade name hipages doesn't know** - unknown trades produce an empty hipages page, not an error. The run's status message lists exactly which trade + suburb combinations found nothing. Use the trades listed in the input hints (the actor also auto-tries plural/singular variants), or paste a working `hipages.com.au/find/...` URL as a Start URL.
- **Location typos** - the status message names any location it couldn't understand. `Suburb, STATE` always works; most casual formats (missing comma, postcodes, bare cities) are auto-corrected.
- **Filters too strict** - if tradies were found but `minRating` / `minReviews` / `withPhoneOnly` / `licensedOnly` / `validAbnOnly` excluded all of them, the status message says how many were excluded. Loosen the filters.
- **Run cost limit** - if your run's *Max cost per run* is set lower than the price of a single record, nothing can be delivered. Raise `maxTotalChargeUsd` - you are only ever billed for delivered rows.
- **Monitoring mode** - repeat runs emit only tradies *not seen before*; an established search can legitimately return 0 new ones that day (the status message will say so).
- **Refused by hipages' firewall** - hipages refuses part of Apify's datacenter IPs. On the default proxy setting the actor takes a fresh IP for every try and switches to Australian residential IPs when datacenter ones are refused, so a run ends empty only if every lane was refused; the status message then says so, and nothing is billed. If you chose a specific proxy group, the actor uses exactly that one; switch back to the default to get the residential fallback.

### FAQ

**How do I scrape tradies for a specific suburb?** Put the suburb in `locations` as `Suburb, STATE` (`Bondi, NSW`, `Carlton, VIC`) and pick `categories`. Each trade pairs with each location.

**Which trades are supported?** Plumbers, electricians, carpenters, painters, builders, tilers, plasterers, bricklayers, concreters, fencing, landscaping, roofing, gardening, handyman, gas fitters, cabinet makers, air conditioning, pest control, cleaning, removalists and any other hipages category - friendly words auto-map and raw slugs pass through.

**Where do phone numbers and emails come from?** From each tradie's public hipages profile: the mobile, landline, email and website the tradie published there (in a 23 October 2026 sample, 69 of 69 tradies had a phone and 68 an email; 31 listed a website).

**What is the ABN field?** The Australian Business Number - a verified business identifier. The actor includes the number and an [Australian Business Register](https://www.abr.business.gov.au) verification link, so you can confirm and enrich each lead.

**Can I export to Google Sheets, CSV, or Excel?** Yes - one click in the dataset view, or automatically every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I get only new tradies over time?** Turn on `monitorMode` and create a [Schedule](https://docs.apify.com/platform/schedules); each run emits only tradies not seen before.

**A field is null - why?** Some tradies genuinely don't publish a particular detail (e.g. an ABN number, a service list, or a landline). Fields are `null` only when the data doesn't exist, not because the scraper skipped them.

**Is scraping hipages legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (including the Australian Privacy Act / GDPR / CCPA for personal data) and hipages' terms.

### Data & lawful use

This Actor reads business and professional listings that the professionals themselves published to be found: names, roles, firms, ratings and the contact details shown on the public listing. Because those details belong to identifiable people, treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for B2B prospecting or market research), keep any outreach relevant to the professional's line of work, honour opt-outs and deletion requests, and do not use the output for spam.

Under [Apify's Standard Actor Contract](https://docs.apify.com/legal/standard-actor-contract), which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

### Disclaimer

**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by hipages or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**

"hipages" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official hipages product, is not authorised or certified by hipages, and does not distribute hipages software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome - this actor is actively maintained.

# Actor input Schema

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

Trade categories to search: e.g. plumbers, electricians, carpenters, painters, builders, tilers, plasterers, bricklayers, concreting, fencing, landscaping, roofing, gardening, handyman, gas_fitters, cabinet_makers, air_conditioning, pest_control, cleaning, removalists. Friendly words (plumber, sparky, aircon, removals) auto-map; any valid hipages category slug also works. Each category is combined with every location.

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

Australian suburb + state, e.g. `Sydney, NSW`, `Bondi, NSW`, `Melbourne, VIC`, `Brisbane, QLD`. Forgiving: `Sydney NSW` (no comma), full state names, postcodes and `Australia` suffixes, bare major cities (`Newcastle`, `Gold Coast`) and bare states (`NSW` = its capital) all work; a bare suburb with no state is auto-probed across every state. States: NSW, VIC, QLD, WA, SA, TAS, ACT, NT.

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

Paste hipages listing URLs (`https://hipages.com.au/find/<trade>/<state>/<suburb>`) or tradie profile URLs (`https://hipages.com.au/connect/<slug>`). Processed in addition to the categories + locations above.

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

Global cap on the number of business records emitted in this run, across all searches and Start URLs.

## `maxBusinessesPerSearch` (type: `integer`):

Cap the number of tradies collected per trade + suburb page. Each hipages suburb page lists roughly 15-20 top-ranked tradies.

## `minRating` (type: `number`):

Keep only tradies with an average rating at or above this value (0 = no filter). Rated 1-5.

## `minReviews` (type: `integer`):

Keep only tradies with at least this many recommendations/reviews (0 = no filter).

## `withPhoneOnly` (type: `boolean`):

Keep only tradies that publish a phone or mobile number (read from their profile) - best for cold-call / SMS lead lists.

## `licensedOnly` (type: `boolean`):

Keep only tradies flagged by hipages as holding a trade licence.

## `validAbnOnly` (type: `boolean`):

Keep only tradies with a verified Australian Business Number (ABN).

## `includeBusinessDetails` (type: `boolean`):

Visit each tradie's profile to add the contact and deep fields: phone, mobile, email, website, address, ABN + ABR verification link, licences, rating breakdown, Google rating, services and review texts. One small extra request per tradie. Since hipages' 2026 rebuild the listing no longer carries phone numbers, so keep this on for a lead list.

## `includeServices` (type: `boolean`):

Include the list of services each tradie offers (the trades listed on their profile). Requires business details.

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

Also output review records (type `review`) from each tradie's profile: star rating, review text, author, date, source (hipages or Google) and the verified-hire flag. Requires business details.

## `maxReviewsPerBusiness` (type: `integer`):

How many reviews to emit per tradie when 'Include reviews' is on (profiles expose roughly the 10 most recent).

## `includeJobLeads` (type: `boolean`):

Homeowner job-request records (type `job`). Since its 2026 rebuild hipages no longer puts these in its pages (the browser loads them from an API that its robots.txt disallows), so this currently returns none and nothing is billed for it; it stays so saved inputs keep working.

## `expandNearbySuburbs` (type: `boolean`):

hipages has no deep page-by-page pagination, so coverage comes from breadth. Turn this on to automatically follow the 'nearby suburbs' on each listing and collect tradies from them too (same trade).

## `maxNearbySuburbs` (type: `integer`):

When 'Expand into nearby suburbs' is on, how many adjacent suburbs to add per starting suburb.

## `deduplicateBusinesses` (type: `boolean`):

Emit each tradie only once per run (keyed by business id / slug), even if they appear across multiple trades, suburbs or nearby-suburb expansions.

## `monitorMode` (type: `boolean`):

Remember tradies already returned and emit ONLY ones not seen in previous runs. Pairs with Apify Schedules to track newly listed tradies in an area over time (no conflict - the schedule triggers the run, monitoring decides what's new).

## `monitorStoreName` (type: `string`):

Named key-value store that holds the 'already seen' business ids for monitoring mode. Use a different name per tracked search to keep histories separate.

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

Maximum parallel requests. Lower it if you hit rate limits on very large runs.

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

Keep the default (Apify Proxy, no group): the actor tries datacenter IPs first and switches to Australian residential IPs when hipages refuses them. Any other choice is used exactly as given; a group your account can't use falls back to the default.

## `urlsFromFile` (type: `string`):

Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically.

## Actor input object example

```json
{
  "categories": [
    "plumbers"
  ],
  "locations": [
    "Sydney, NSW"
  ],
  "maxResults": 100,
  "maxBusinessesPerSearch": 60,
  "minRating": 0,
  "minReviews": 0,
  "withPhoneOnly": false,
  "licensedOnly": false,
  "validAbnOnly": false,
  "includeBusinessDetails": true,
  "includeServices": true,
  "includeReviews": false,
  "maxReviewsPerBusiness": 20,
  "includeJobLeads": false,
  "expandNearbySuburbs": false,
  "maxNearbySuburbs": 5,
  "deduplicateBusinesses": true,
  "monitorMode": false,
  "monitorStoreName": "hipages-monitor",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "urlsFromFile": ""
}
```

# Actor output Schema

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

All scraped records in the default dataset. Business rows carry the full tradie profile, contact, ABN, ratings, services and lead score; review and job rows carry their own fields.

# 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 = {
    "categories": [
        "plumbers"
    ],
    "locations": [
        "Sydney, NSW"
    ],
    "urlsFromFile": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/hipages-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 = {
    "categories": ["plumbers"],
    "locations": ["Sydney, NSW"],
    "urlsFromFile": "",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/hipages-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 '{
  "categories": [
    "plumbers"
  ],
  "locations": [
    "Sydney, NSW"
  ],
  "urlsFromFile": ""
}' |
apify call scrapesage/hipages-scraper --silent --output-dataset

```

## MCP server setup

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