TrueLocal AU Directory Listings & Reviews Scraper
Pricing
from $1.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
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:
| Field | 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"] |
| phone | (02) 0000 0000 |
| secondaryPhone | null |
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", ... } |
| 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": "...", "date": "2024-01-01" }] |
| scrapedAt | 2026-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:
| Field | Example |
|---|---|
| businessId | 00000001 |
| businessName | Sample Listing Name |
| businessUrl | https://www.truelocal.com.au/sydney-nsw/tlp/sample-listing-00000001 |
| businessCategory | Sample Category |
| businessSuburb | Sydney |
| businessState | NSW |
| businessRating | 5 |
| businessReviewCount | 6 |
| author | Jane D. |
| rating | 5 |
| reviewBody | Review text appears here when reviews are present on the listing. |
| datePublished | 2024-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
| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | search | search, url, or reviews. |
| searchTerms | array | ["restaurants"] | Keywords to search (search and reviews modes). |
| locations | array | ["Sydney NSW"] | Free-text locations; suburb level is accepted. Every keyword is searched in every location. |
| urls | array | (none) | TrueLocal search and/or profile URLs. In search/reviews modes, pasting URLs here overrides searchTerms + locations. |
| fetchDetails | boolean | true | Open each profile page for address, GPS, email, website, rating and reviews. Off returns the lean SERP card. Reviews mode always fetches profiles. |
| fetchReviews | boolean | true | Nest a reviews array on each listing record (search/URL modes). |
| maxReviews | integer | 20 | Max reviews captured per listing. 0 = all. |
| maxPages | integer | 3 | Max SERP pages per keyword/location or per pasted search URL. ~30 listings per page. |
| maxListings | integer | 0 | Stop after this many listings across all searches. 0 = no cap. |
| proxy | object | Apify residential AU | Proxy 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.