HiPages Scraper - Business Listings, Contacts & Reviews avatar

HiPages Scraper - Business Listings, Contacts & Reviews

Pricing

from $1.50 / 1,000 results

Go to Apify Store
HiPages Scraper - Business Listings, Contacts & Reviews

HiPages Scraper - Business Listings, Contacts & Reviews

Scrape business listings from HiPages Australia by category, location, or URL. Extract business names, contact details, ratings, customer reviews, images, service areas, and other structured business information.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

30

Total users

1

Monthly active users

15 days ago

Last modified

Share

hipages Business Scraper: Contacts, Ratings and Profiles for Australian Tradespeople

This scraper turns hipages into a queryable directory of Australian tradespeople and service businesses. Search by service category and suburb, or paste hipages search result URLs, to collect contact details, star ratings, licence and ABN status, highlights and photos for each listing, with optional profile depth covering services offered, business description and every customer recommendation. Export to JSON, CSV or Excel, or pull results straight into your app through the API.

Why This Scraper?

  • Two ways to find businesses. Search by category, state and suburb, or paste hipages search result URLs directly. No need to build URLs by hand.
  • 140+ service categories. Electricians, plumbers, builders, landscapers, pool builders and more, across all eight Australian states and territories.
  • Contact details and trust signals on every record. Phone, mobile, service area, licence and ABN status, star rating, total hires and recommendation count.
  • Optional profile depth. Switch on business details for ABN, email, description, services offered, licences, the full rating breakdown and photo galleries, plus every customer recommendation, and pay only for what you use.
  • Built for monitoring. Resume continues one interrupted run without re scraping, and Incremental mode tracks a recurring search itself, returning only new, updated, reappeared or expired businesses.
  • Export straight into your apps. Pipe a summary of every business into Notion, Linear, Airtable or Apify through Integrations, on top of the full dataset.

Use Cases

  • Lead generation: pull contactable tradespeople by category and suburb for outreach, partnerships or supplier lists.
  • Vetting a contractor before hiring: check star rating, total hires, licence and ABN status before committing to a quote.
  • Market research: compare listing counts, ratings and trust signals for a trade category across suburbs or states.
  • Reputation monitoring: schedule a recurring search with Incremental mode and get only the businesses whose rating, reviews or listing actually changed.
  • Directories and dashboards: feed business profiles, images and contact details into your own site or app.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
businessId"123456"
name"Sample Excavation Co"
title"Excavation and earthworks specialists"
key"sample-excavation-co"
phone / mobile"03 9999 9999" / "0400 000 000"
serviceArea"Clayton"
highlights["Free quotes", "Fully insured"]
hasLicense / hasValidAbntrue / true
starRating{ "rating": 4.9, "totalHired": 42, "totalRatings": 18 }
totalRecommendations18
latestRecommendationcomment, reviewer name, job category and postcode (when the business has one)
brandColor / theme"#1B5E20" / "classic"
thumbnailUrl / bannerUrlprofile photo and banner image links
galleryImagesuploaded project photos, each with an id, title and URL
profilePageUrl / profilePagePathlink to the hipages business profile
listingType"local" (also "servicing" for a promoted listing)
position / distancesearch rank and distance in kilometres from the searched suburb
searchContextcategory, state and suburb (or source URL) used to find this record
detailedInfoABN, email, description, services, licences, rating breakdown, images and recommendations, only when Scrape Business Details is on
changeType / changedFields / firstSeenAt / lastSeenAt"UPDATED" / ["starRating"] / timestamps, only in Incremental mode

How to Use

  1. Pick a mode: search (category, state, suburb) or url (paste hipages search result links).
  2. Fill in the fields for that mode, and switch on business details or recommendations if you need them.
  3. Set Maximum Businesses to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search a category and suburb:

{
"mode": "search",
"category": "electricians",
"state": "nsw",
"suburb": "parramatta",
"maxBusinesses": 25
}

Search with full profile details and recommendations:

{
"mode": "search",
"category": "plumbers",
"state": "vic",
"suburb": "clayton",
"maxBusinesses": 10,
"scrapeDetails": true,
"scrapeRecommendations": true
}

Paste a hipages search URL:

{
"mode": "url",
"urls": [
{ "url": "https://hipages.com.au/find/excavation/vic/clayton" }
],
"maxBusinesses": 25
}

Recurring monitoring of one search:

{
"mode": "search",
"category": "builders",
"state": "qld",
"suburb": "brisbane",
"incrementalMode": true,
"stateKey": "brisbane-builders-watch"
}

A hipages search URL must be a search results page in the /find/<category>/<state>/<suburb> or /find/<category>/<state> (state wide, no suburb) shape. A hipages business profile page is not a search URL and is not supported in URL mode.

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/hipages-business-scraper").call(run_input={"mode": "search", "category": "electricians", "state": "nsw", "suburb": "parramatta"})
for business in client.dataset(run["defaultDatasetId"]).iterate_items():
print(business["name"], business.get("phone"))

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/hipages-business-scraper').call({ mode: 'search', category: 'electricians', state: 'nsw', suburb: 'parramatta' });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips every business already collected there, so this run returns only the new ones (a delta). Combine both runs' datasets for the full set.
  • Incremental mode (incrementalMode) is for a search you run repeatedly on a schedule. It remembers the previous run of the SAME search itself, so you never paste an id, and classifies every business as NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED, or EXPIRED (only after a run that scanned the search to completion, and only with emitExpired). stateKey names or shares the stored baseline; leave it blank to auto derive one from category, state, suburb and detail settings. With Incremental mode off, output is exactly as before.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human readable summary of each business, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (category, state, suburb) or url (paste hipages search URLs).
categorystringexcavationService category to search for. Used in search mode.
statestringvicAustralian state code (nsw, vic, qld, sa, wa, tas, nt, act). Used in search mode.
suburbstringclaytonSuburb name. Used in search mode.
urlsarray[]hipages search result URLs. Used only in URL mode.
maxBusinessesinteger5Maximum number of businesses to scrape.
pageLimitinteger10Number of results requested per page from the search API (max 10).
scrapeDetailsbooleanfalseScrape detailed information from each business profile page.
scrapeRecommendationsbooleanfalseExtract all customer recommendations from each profile (requires scrapeDetails).
proxyobjectApify ProxyConnection settings.
resumeFromRunIdstring(none)ID of a previous run or dataset to continue one interrupted crawl (a delta).
incrementalModebooleanfalseTrack a recurring search and return only new, updated, reappeared or expired businesses.
stateKeystring(none)Name or share the Incremental mode baseline. Leave empty to auto derive one from the search.
emitUnchangedbooleanfalseIncremental mode only: also return (and bill) unchanged businesses.
emitExpiredbooleanfalseIncremental mode only: also return (and bill) businesses no longer found after a complete scan.
mcpConnectorsarray(none)Optional: send a summary of each business to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"businessId": "123456",
"name": "Sample Excavation Co",
"title": "Excavation and earthworks specialists",
"key": "sample-excavation-co",
"phone": "03 9999 9999",
"mobile": "0400 000 000",
"serviceArea": "Clayton",
"highlights": ["Free quotes", "Fully insured", "20+ years experience"],
"hasLicense": true,
"hasValidAbn": true,
"starRating": {
"rating": 4.9,
"totalHired": 42,
"totalRatings": 18
},
"totalRecommendations": 18,
"latestRecommendation": {
"comment": "Great job, arrived on time and left the site clean.",
"userName": "Sample Customer",
"jobCategoryId": 42,
"jobPostcode": "3168"
},
"brandColor": "#1B5E20",
"theme": "classic",
"thumbnailUrl": "https://example.com/thumbnail.jpg",
"bannerUrl": "https://example.com/banner.jpg",
"galleryImages": [
{ "galleryId": "1", "imageId": "1001", "title": "Completed driveway excavation", "url": "https://example.com/gallery/1001.jpg" }
],
"profilePageUrl": "https://hipages.com.au/connect/sample-excavation-co",
"profilePagePath": "/connect/sample-excavation-co",
"listingType": "local",
"position": 3,
"distance": 2.4,
"searchContext": {
"mode": "search",
"category": "excavation",
"state": "vic",
"suburb": "clayton"
}
}

Plan Requirement

This actor uses Apify Proxy by default, which is enough for search results in both modes with Scrape Business Details off. When Scrape Business Details is switched on, the actor automatically requests a residential connection for hipages profile pages, no separate proxy input is needed. If a residential connection is not available on your account, profile enrichment is skipped and each business is returned with detailsSkipped set instead of failing the run; the core search fields are unaffected either way.

FAQ

How much does it cost?

You pay per business record returned. Optional profile details and recommendations do not add a separate line item beyond the record itself. The Pricing tab shows the current rates. Use Maximum Businesses to cap the cost of any run.

This actor collects only publicly available business listing data. You are responsible for how you use it: follow hipages' terms and the laws that apply to you, and get legal advice if you plan commercial redistribution of contact details or reviews.

Can I get only new or changed businesses on a schedule?

Yes. Schedule the actor on the same category, state and suburb and turn on Incremental mode. Each business is classified NEW, UPDATED, REAPPEARED, UNCHANGED or EXPIRED against the previous run for that search, and UNCHANGED businesses are neither returned nor billed unless you turn on Emit unchanged businesses.

What is the difference between Resume and Incremental mode?

Resume (resumeFromRunId) continues ONE interrupted crawl: paste its run or dataset id and this run skips businesses already collected there, returning only the delta. Incremental mode is for a search you run repeatedly on a schedule: it remembers state itself between runs, so you never paste an id, and it adds change tracking to every business.

Why did my run fail instead of returning an empty dataset?

The run fails outright only in specific cases: URL mode with no supported hipages search URL, a resumeFromRunId that cannot be resolved, or turning on Incremental mode together with resumeFromRunId while that search already has saved state. A search that simply matches no businesses, or a temporary problem reaching hipages mid run, returns whatever could be collected (possibly an empty dataset) with a warning in the log, rather than failing.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push a summary of results into Notion, Linear or Airtable when the run finishes.

🔗 Want more leads data?

Pair this actor with these related scrapers from the same team:

📇 PagesJaunes FR
From $0.8/1K. Scrapes business listings from PagesJaunes.fr (French Yellow Pages)...
📇 Yellow Pages AU
From $1/1K. Scrape business listings from Yellow Pages Australia by type and location...
📇 Yellow Pages NZ
From $0.8/1K. Scrapes business listings from Yellow.co.nz (New Zealand Yellow Pages)...
✈️ Fuel Prices AU Scraper
Scrapes petrol and fuel prices data across Australia and New Zealand. Search by address...
📇 TrueLocal AU Directory Listings & Reviews Scraper
Scrape TrueLocal.com.au business listings by keyword, location, or URL. Extract names...
📇 BizQuest Scraper
From $1/1K. Extract business-for-sale, franchise, and asset listings from BizQuest...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.