ProductReview.com.au Reviews Scraper avatar

ProductReview.com.au Reviews Scraper

Pricing

Pay per event

Go to Apify Store
ProductReview.com.au Reviews Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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:

  1. a category URL such as https://www.productreview.com.au/c/online-shops; or
  2. 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?

FieldTypeDescription
reviewIdstringStable ProductReview review identifier
entityNamestringReviewed business, service, or product name
entityUrlURLCanonical ProductReview listing URL
categorystringMost specific public breadcrumb category
aggregateRatingnumberListing's aggregate rating
entityReviewCountnumberListing's public review count
reviewerNamestringPublic reviewer display name
reviewerLocationstringPublic location label when shown
reviewerPostCountnumberPublic reviewer post count when shown
reviewerAvatarUrlURLPublic avatar URL when shown
ratingnumberIndividual review rating from 1 to 5
reviewDatedateReview publication timestamp
reviewTitlestringReview headline when supplied by the source
reviewBodystringServer-rendered review text
verifiedbooleanWhether ProductReview marks the review Verified
fairIncentivebooleanWhether ProductReview marks a Fair Incentive
imagesURL[]Public review attachment image URLs
companyReplyAuthorstringPublic responder name
companyReplyTextstringPublic company response text
companyReplyDatedatePublic company response timestamp
sourceUrlURLCanonical review anchor URL
pageUrlURLReview page fetched by the Actor
scrapedAtdateExtraction timestamp

Optional fields are omitted when ProductReview does not display them.

How to scrape ProductReview.com.au reviews

  1. Open the Actor input page.
  2. Add at least one ProductReview.com.au category or listing URL.
  3. Set Maximum reviews to your desired dataset size.
  4. For category inputs, choose Listings per category.
  5. Choose how many Review pages per listing to follow.
  6. Leave proxy disabled unless your network needs it.
  7. Click Start.
  8. 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:

  1. run a 10-review sample;
  2. inspect the run cost shown by Apify;
  3. estimate the larger export from your expected review count; and
  4. use maxItems and 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:

  1. create a Task with one or more listing URLs;
  2. schedule it daily or weekly;
  3. send each dataset to your storage or automation platform;
  4. keep only review IDs not seen in earlier runs; and
  5. 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 sourceUrl with every downstream record for auditability.
  • 🕒 Compare reviewDate, not scrapedAt, 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 os
from apify_client import ApifyClient
client = 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().items
print(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.

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.

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.