ProductReview.com.au Reviews Scraper
Pricing
Pay per event
ProductReview.com.au Reviews Scraper
🇦🇺 Export public ProductReview.com.au customer reviews with ratings, reviewer context, verified/incentive badges, images, and business replies—ready for monitoring and analysis.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Share
Export public Australian customer reviews from ProductReview.com.au into a clean dataset. Start with a business listing or a category, choose a limit, and receive one review per row.
The scraper captures more than star ratings and text. It also preserves public reviewer context, verified and fair-incentive signals, review images, listing aggregates, and company replies. That makes the output useful for recurring reputation monitoring, customer-experience research, and competitor benchmarking.
- 🇦🇺 Built specifically for ProductReview.com.au
- ⭐ One structured review per dataset row
- ✅ Verified and Fair Incentive badges
- 💬 Company response text and timestamps
- 🖼️ Public review attachment URLs
- 📄 Bounded review pagination
- 🔗 Category discovery or direct listing inputs
- ⚡ HTTP-only extraction with no browser overhead
What does ProductReview.com.au Reviews Scraper do?
The Actor reads server-rendered public ProductReview.com.au pages. It can begin from either:
- a category URL such as
https://www.productreview.com.au/c/online-shops; or - a listing URL such as
https://www.productreview.com.au/listings/booktopia.
For a category, it discovers listing links and visits the requested number of businesses. For a listing, it follows review pages directly. Results are deduplicated by ProductReview review ID and stop at your global review limit.
No ProductReview login, browser session, or private API credential is required.
Who is it for?
Brand and reputation teams
Monitor new feedback, verification badges, incentive signals, and public company responses. Export the same listing regularly and compare review IDs or dates with your previous dataset.
Customer-experience teams
Analyze recurring complaints, praise, product themes, response coverage, and response timing. Company reply fields stay alongside the original review.
Agencies
Collect consistent review records across several client or competitor listings. Category discovery helps build an initial benchmark set quickly.
Ecommerce researchers
Compare public sentiment, ratings, review volume, reviewer context, and response behavior across Australian businesses.
Data and AI teams
Feed normalized text and metadata to sentiment analysis, topic classification, dashboards, warehouses, or LLM workflows.
Why use this ProductReview review extractor?
Copying reviews manually is slow and loses context. Generic page scrapers often return a block of text without stable IDs, dates, badges, listing aggregates, or response fields.
This Actor provides:
- stable review identifiers for incremental monitoring;
- typed ratings and counts instead of formatted strings;
- ISO timestamps for sorting and time-series analysis;
- canonical listing and review URLs for traceability;
- explicit boolean badge fields;
- review and reply text in the same record;
- configurable listing, page, and dataset limits;
- direct HTTP extraction for low runtime and memory use.
What ProductReview.com.au data can you extract?
| Field | Type | Description |
|---|---|---|
reviewId | string | Stable ProductReview review identifier |
entityName | string | Reviewed business, service, or product name |
entityUrl | URL | Canonical ProductReview listing URL |
category | string | Most specific public breadcrumb category |
aggregateRating | number | Listing's aggregate rating |
entityReviewCount | number | Listing's public review count |
reviewerName | string | Public reviewer display name |
reviewerLocation | string | Public location label when shown |
reviewerPostCount | number | Public reviewer post count when shown |
reviewerAvatarUrl | URL | Public avatar URL when shown |
rating | number | Individual review rating from 1 to 5 |
reviewDate | date | Review publication timestamp |
reviewTitle | string | Review headline when supplied by the source |
reviewBody | string | Server-rendered review text |
verified | boolean | Whether ProductReview marks the review Verified |
fairIncentive | boolean | Whether ProductReview marks a Fair Incentive |
images | URL[] | Public review attachment image URLs |
companyReplyAuthor | string | Public responder name |
companyReplyText | string | Public company response text |
companyReplyDate | date | Public company response timestamp |
sourceUrl | URL | Canonical review anchor URL |
pageUrl | URL | Review page fetched by the Actor |
scrapedAt | date | Extraction timestamp |
Optional fields are omitted when ProductReview does not display them.
How to scrape ProductReview.com.au reviews
- Open the Actor input page.
- Add at least one ProductReview.com.au category or listing URL.
- Set Maximum reviews to your desired dataset size.
- For category inputs, choose Listings per category.
- Choose how many Review pages per listing to follow.
- Leave proxy disabled unless your network needs it.
- Click Start.
- Preview the dataset or export JSON, CSV, Excel, XML, or RSS.
The prefilled Booktopia example collects ten reviews from one page and normally completes well under two minutes.
Input parameters
Category or listing URLs
startUrls is required.
Each URL must use productreview.com.au and begin with /c/ or /listings/.
Unsupported hosts and unrelated source routes fail closed.
Maximum reviews
maxItems is a global cap across all supplied URLs.
Use a small number for a quick sample and a larger number for analysis or backfills.
Listings per category
maxListingsPerCategory applies only to category inputs.
It controls how many listing pages the Actor selects from each category.
Review pages per listing
maxPagesPerListing bounds pagination for each listing.
One ProductReview listing page often contains many detailed review records.
Proxy configuration
Direct access is the default because the public pages are server-rendered. You can enable Apify Proxy or supply custom proxies if your environment encounters a temporary block.
Input example
{"startUrls": [{ "url": "https://www.productreview.com.au/listings/booktopia" },{ "url": "https://www.productreview.com.au/listings/vpa" }],"maxItems": 100,"maxListingsPerCategory": 1,"maxPagesPerListing": 3,"proxyConfiguration": { "useApifyProxy": false }}
For category discovery, replace the listing URLs with a URL such as:
https://www.productreview.com.au/c/online-shops
Output example
{"reviewId": "6c4e997d-6515-5e87-8116-f20aa572846c","entityName": "Booktopia","entityUrl": "https://www.productreview.com.au/listings/booktopia","category": "Best Book Shops","aggregateRating": 4.7,"entityReviewCount": 33001,"reviewerName": "John Adams","reviewerPostCount": 10,"rating": 1,"reviewDate": "2026-07-14T03:27:29.000Z","reviewBody": "This company has been sending me unsolicited emails...","verified": false,"fairIncentive": false,"images": [],"companyReplyAuthor": "Booktopia","companyReplyText": "Hi John, Please note that you do not need to sign in...","companyReplyDate": "2026-07-15T01:00:32.000Z","sourceUrl": "https://www.productreview.com.au/listings/booktopia#review-6c4e997d-6515-5e87-8116-f20aa572846c","pageUrl": "https://www.productreview.com.au/listings/booktopia","scrapedAt": "2026-07-18T05:31:57.007Z"}
Source content changes over time, so this example illustrates the schema rather than promising a specific live review.
How much does it cost to scrape ProductReview.com.au reviews?
This Actor uses pay-per-event pricing. A small one-time start event covers setup, and a review event is charged only for each record saved. Review prices use Apify plan-based volume tiers, so higher plans receive lower per-review rates.
Before a larger job:
- run a 10-review sample;
- inspect the run cost shown by Apify;
- estimate the larger export from your expected review count; and
- use
maxItemsand page limits to keep the crawl bounded.
The Actor uses 256 MB by default and does not launch a browser, which keeps compute requirements low.
Monitoring new ProductReview reviews
ProductReview pages can be exported on a schedule using Apify Tasks and Schedules.
Use stable reviewId values as your deduplication key.
A typical monitoring workflow is:
- create a Task with one or more listing URLs;
- schedule it daily or weekly;
- send each dataset to your storage or automation platform;
- keep only review IDs not seen in earlier runs; and
- alert on low ratings, selected themes, or missing company replies.
The Actor does not maintain cross-run state automatically, so your destination remains the source of truth for historical deduplication.
Tips for reliable exports
- 🎯 Prefer direct listing URLs when you already know the brands to monitor.
- 📉 Keep category listing limits low for routine monitoring.
- 📄 Increase page limits gradually for historical backfills.
- 🔁 Overlapping input URLs are safe because review IDs are deduplicated within a run.
- 🧾 Keep
sourceUrlwith every downstream record for auditability. - 🕒 Compare
reviewDate, notscrapedAt, when charting review activity. - 🌐 Enable a proxy only when direct traffic is blocked from your environment.
- ⚠️ A review or response can be truncated when the public server-rendered source itself shows a “Read more” preview.
Integrations
Google Sheets and Airtable
Use Zapier or Make to append each dataset row to a review tracker.
Deduplicate on reviewId and create a view for ratings below your threshold.
Slack and email alerts
Trigger an alert when rating is low, verified is true, or companyReplyText is absent after your response-time target.
BigQuery, Snowflake, and data warehouses
Export datasets to object storage or use the Apify API to load normalized review rows into your warehouse.
Partition by reviewDate and cluster by entityName or reviewId.
Sentiment and topic analysis
Send reviewBody and optional companyReplyText to your preferred NLP model.
Retain ratings, badges, listing context, and source URLs as structured dimensions.
Webhooks
Configure an Actor run webhook to notify your service when a scheduled run succeeds or fails. Then fetch the default dataset through its API URL.
API usage from Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/productreview-australia-reviews-scraper').call({startUrls: [{ url: 'https://www.productreview.com.au/listings/booktopia' }],maxItems: 20,maxPagesPerListing: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use the Actor from Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/productreview-australia-reviews-scraper').call(run_input={'startUrls': [{'url': 'https://www.productreview.com.au/listings/booktopia'}],'maxItems': 20,'maxPagesPerListing': 1,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use the Actor with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~productreview-australia-reviews-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url":"https://www.productreview.com.au/listings/booktopia"}],"maxItems": 20,"maxPagesPerListing": 1}'
Use the returned run's defaultDatasetId with the Apify dataset API to download results.
Use with MCP and AI assistants
Apify's MCP server lets Claude Code, Claude Desktop, Cursor, or VS Code invoke the Actor as a tool.
For Claude Code:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/productreview-australia-reviews-scraper"
For Claude Desktop, Cursor, or VS Code, add an HTTP MCP server:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/productreview-australia-reviews-scraper"}}}
Example prompts:
- “Export the latest 20 Booktopia reviews and summarize recurring complaints.”
- “Collect reviews from the online shops category and compare verified-review share by business.”
- “Find low-rating reviews without a visible company reply.”
- “Create a CSV-ready competitor review dataset from these ProductReview listing URLs.”
Data quality and limitations
The Actor extracts what ProductReview.com.au renders publicly at run time. Pages, ratings, review counts, badges, attachments, and responses can change.
Some public bodies or replies include a “Read more” preview in server-rendered HTML. The Actor removes the UI label but cannot invent hidden text that is not present in that response. Optional fields may be absent for anonymous reviewers, reviews without images, or businesses without replies.
Category mode selects listing links visible on the supplied category page and does not claim to enumerate every listing in a very large category. Use direct listing URLs for complete control over monitored entities.
Is it legal to scrape ProductReview.com.au?
This Actor accesses public pages without logging in or circumventing access controls. Web scraping legality depends on your jurisdiction, intended use, volume, and handling of personal data.
You are responsible for:
- following applicable laws and contractual requirements;
- collecting only the data you need;
- respecting copyright and privacy rights;
- applying appropriate retention and access controls; and
- using conservative crawl limits.
This documentation is general information, not legal advice.
FAQ
Does this Actor require a ProductReview account?
No. It reads public category and listing pages anonymously.
Can it scrape a category and individual listings in one run?
Yes. Mix /c/... and /listings/... URLs in startUrls.
Duplicate reviews are removed within that run.
How do I collect only one business?
Supply its canonical /listings/... URL and set maxPagesPerListing and maxItems to the depth you need.
Why is an optional field missing?
ProductReview may not display it for that review. For example, not every reviewer shows a location, not every review has images, and not every business has replied.
Why did my run reject a URL?
The product contract accepts only public ProductReview.com.au category and listing routes.
Use a URL beginning with https://www.productreview.com.au/c/ or https://www.productreview.com.au/listings/.
Why did extraction fail with no records?
Confirm the listing still has public reviews and that the URL loads in your network. If direct traffic is temporarily blocked, enable Apify Proxy and retry with a small limit. The Actor intentionally fails rather than returning a misleading successful empty dataset.
Can I scrape all historical reviews?
Increase maxPagesPerListing and maxItems for a bounded backfill.
Very large histories should be split into controlled runs and monitored for source changes.
Does it support scheduled monitoring?
Yes. Save the input as an Apify Task, attach a Schedule, and deduplicate new datasets by reviewId downstream.
Related scrapers
Build a broader public review and reputation workflow with other Automation Lab Actors:
Use ProductReview.com.au Reviews Scraper when the target is the Australian ProductReview portal and combine sources only when their review definitions are appropriate for your analysis.
Support
If a public ProductReview category or listing page no longer parses correctly, open an Actor issue with:
- the exact start URL;
- a safe copy of the input;
- the run ID;
- the expected record type; and
- the field or page that changed.
Do not include private credentials or unrelated personal data. Clear reproduction details help distinguish a source layout change from an input-scope error.