TrueLocal AU Directory Listings & Reviews Scraper avatar

TrueLocal AU Directory Listings & Reviews Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
TrueLocal AU Directory Listings & Reviews Scraper

TrueLocal AU Directory Listings & Reviews Scraper

Scrape TrueLocal.com.au business listings by keyword, location, or URL. Extract names, addresses, GPS coordinates, phones, emails, websites, ratings, and review counts. Optional review mode exports individual reviews with author, rating, text, and date. Automatic pagination included.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

AbotAPI

AbotAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Pull structured directory data from TrueLocal.com.au, the Australian local listings portal. Search by keyword and location (or paste any TrueLocal URL) and get clean records: name, full address, GPS coordinates, phone, email, website, category, star rating, and review count. Flip on the dedicated reviews mode to export every customer review as its own row, with author, star rating, review text, and date. Pagination is automatic, so one search keyword in one location can walk thousands of listings.

Why this scraper

  • Three modes in one actor: keyword + location search, URL paste (search or profile URLs), and a flat one-row-per-review mode.
  • 20+ fields per listing including the listing description, GPS latitude/longitude, public phone (plus secondary), public email, website, full category trail with codes, and structured weekly + holiday opening hours.
  • Reviews come free with each profile page, so nested reviews on a listing record cost no extra fetch.
  • Forward auto-pagination verified to walk fully disjoint result pages (no duplicate rows across pages).
  • Cross-product search expansion: pass several keywords and several locations and every combination is searched.
  • Lean mode (profile fetch off) returns the SERP card alone for fast, low-cost enumeration.

Data you get

Listing record (search and URL modes), example values are real results captured from the live site:

FieldExample
id00000001
urlhttps://www.truelocal.com.au/sydney-nsw/tlp/sample-listing-00000001
nameSample Listing Name
descriptionThe listing's own description text appears here, when the owner wrote one.
primaryCategorySample Category
categories["Sample Category"]
categoryCodes["00000000"]
phone(02) 0000 0000
secondaryPhonenull
emailcontact@example.com
websitehttps://example.com
fullAddress1 Sample Street, Sydney NSW 2000
suburbSydney
stateNSW
postcode2000
latitude-33.0000
longitude151.0000
openingHours{ "MONDAY": "0000-2359", "TUESDAY": "0000-2359", ... }
holidayHours{ "New Year's Day": [["2026/01/01", "Open 24 Hours"]], ... }
permanentlyClosedfalse
ratingValue5
reviewCount6
reviewsReturned6
reviews[{ "author": "Jane D.", "rating": 5, "body": "...", "date": "2024-01-01" }]
scrapedAt2026-01-01T00:00:00.000Z

Sample shape, values are illustrative placeholders rather than from a live listing.

Note on description: TrueLocal exposes the listing's own description text when the owner wrote one; listings that never added a description return null (the site shows only an auto-generated title there). openingHours times use a 24-hour HHMM-HHMM format ("0000-2359" = open 24 hours).

Review record (reviews mode), one row per review:

FieldExample
businessId00000001
businessNameSample Listing Name
businessUrlhttps://www.truelocal.com.au/sydney-nsw/tlp/sample-listing-00000001
businessCategorySample Category
businessSuburbSydney
businessStateNSW
businessRating5
businessReviewCount6
authorJane D.
rating5
reviewBodyReview text appears here when reviews are present on the listing.
datePublished2024-01-01

How to use

Search by keyword and location (one record per listing, reviews nested):

{
"mode": "search",
"searchTerms": ["restaurants"],
"locations": ["Sydney NSW"],
"fetchDetails": true,
"fetchReviews": true,
"maxReviews": 20,
"maxPages": 3,
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "AU" }
}

Several keywords across several locations (every combination is searched):

{
"mode": "search",
"searchTerms": ["plumber", "electrician"],
"locations": ["Sydney NSW", "Melbourne VIC"],
"maxPages": 5,
"maxListings": 200
}

URL mode, paste a search URL and a profile URL together:

{
"mode": "url",
"urls": [
"https://www.truelocal.com.au/search?search_terms=cafe&geo_location_terms=Melbourne+VIC",
"https://www.truelocal.com.au/sydney-nsw/tlp/sample-listing-00000001"
],
"maxPages": 2
}

Reviews mode, one row per review (works with search inputs or pasted profile URLs):

{
"mode": "reviews",
"urls": ["https://www.truelocal.com.au/sydney-nsw/tlp/sample-listing-00000001"],
"maxReviews": 50
}

Input parameters

ParameterTypeDefaultDescription
modestringsearchsearch, url, or reviews.
searchTermsarray["restaurants"]Keywords to search (search and reviews modes).
locationsarray["Sydney NSW"]Free-text locations; suburb level is accepted. Every keyword is searched in every location.
urlsarray(none)TrueLocal search and/or profile URLs. In search/reviews modes, pasting URLs here overrides searchTerms + locations.
fetchDetailsbooleantrueOpen each profile page for address, GPS, email, website, rating and reviews. Off returns the lean SERP card. Reviews mode always fetches profiles.
fetchReviewsbooleantrueNest a reviews array on each listing record (search/URL modes).
maxReviewsinteger20Max reviews captured per listing. 0 = all.
maxPagesinteger3Max SERP pages per keyword/location or per pasted search URL. ~30 listings per page.
maxListingsinteger0Stop after this many listings across all searches. 0 = no cap.
proxyobjectApify residential AUProxy configuration. AU residential is recommended.

Output example

{
"id": "00000001",
"url": "https://www.truelocal.com.au/sydney-nsw/tlp/sample-listing-00000001",
"name": "Sample Listing Name",
"description": "The listing's own description text appears here when the owner wrote one.",
"primaryCategory": "Sample Category",
"categories": ["Sample Category"],
"categoryCodes": ["00000000"],
"categoryId": "00000000",
"phone": "(02) 0000 0000",
"secondaryPhone": null,
"email": "contact@example.com",
"website": "https://example.com",
"fullAddress": "1 Sample Street, Sydney NSW 2000",
"suburb": "Sydney",
"state": "NSW",
"postcode": "2000",
"latitude": -33.0000,
"longitude": 151.0000,
"openingHours": {
"MONDAY": "0000-2359", "TUESDAY": "0000-2359", "WEDNESDAY": "0000-2359",
"THURSDAY": "0000-2359", "FRIDAY": "0000-2359", "SATURDAY": "0000-2359", "SUNDAY": "0000-2359"
},
"holidayHours": { "New Year's Day": [["2026/01/01", "Open 24 Hours"]] },
"permanentlyClosed": false,
"ratingValue": 5,
"reviewCount": 6,
"reviewsReturned": 6,
"reviews": [
{ "author": "Jane D.", "rating": 5, "body": "Review text appears here when reviews are present on the listing.", "date": "2024-01-01" }
],
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Plan requirement

TrueLocal accepts clean Australian residential IPs reliably. Datacenter IPs (the default on the Apify free plan) are accepted only intermittently; the scraper rotates exit IPs to recover, but results are slower and less complete.

  • Recommended: an Apify plan with the RESIDENTIAL proxy group, country set to AU (Starter and above).
  • Free plan: residential proxy is not included. The scraper falls back to the default Apify proxy and rotates IPs, but some pages may be rejected. You can also paste your own AU residential proxy URLs in the proxy field.
  • Set the proxy country to AU for the most consistent acceptance.