Reviews.io Reviews Scraper avatar

Reviews.io Reviews Scraper

Pricing

Pay per event

Go to Apify Store
Reviews.io Reviews Scraper

Reviews.io Reviews Scraper

Extract public Reviews.io company reviews, ratings, reviewer names, dates, replies, and aggregate reputation metrics for monitoring.

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

2 days ago

Last modified

Categories

Share

Extract public customer reviews from Reviews.io company pages into a clean Apify dataset.

Reviews.io is used by ecommerce brands, travel companies, agencies, and service businesses to collect public customer feedback. This actor turns those public review pages into structured data you can export to CSV, JSON, Excel, Google Sheets, BI tools, or your own data warehouse.

What does Reviews.io Reviews Scraper do?

Reviews.io Reviews Scraper collects review records from public Reviews.io company review pages.

It reads pages such as:

  • https://www.reviews.io/company-reviews/store/loveholidays-com
  • Any other public Reviews.io /company-reviews/store/... page
  • Plain store keys such as loveholidays-com

For each review, it saves the rating, reviewer name, date, review text, source URL, company-level rating, and other traceability fields.

Who is it for?

This actor is useful for teams that need repeatable review monitoring.

  • 🛍️ Ecommerce operators tracking customer sentiment
  • 📈 SEO teams building reputation reports
  • 🧑‍💼 Agencies monitoring many client brands
  • 🧪 Product teams analyzing review themes
  • 🧾 Compliance teams archiving public feedback
  • 🏨 Travel and hospitality analysts comparing public ratings
  • 🤖 AI teams feeding review text into summarization or classification workflows

Why use this actor?

Manual review collection is slow and error-prone. Reviews.io pages are readable in a browser, but exports are not always available for competitive research, public reputation monitoring, or multi-brand reporting.

This actor gives you:

  • Structured rows instead of copied text
  • Repeatable runs for daily or weekly monitoring
  • A simple input format: URLs or store keys
  • Low-cost HTTP scraping without a browser
  • Dataset output that works with Apify integrations

What data can you extract?

FieldDescription
storeKeyReviews.io store slug from the URL
companyNameCompany or store name from page metadata
companyUrlCompany website URL when exposed
sourceUrlFirst Reviews.io page requested for the store
pageUrlExact page URL where the review was found
pageNumberPagination counter used by the actor
aggregateRatingCompany-level average rating
totalReviewCountCompany-level public review count
reviewerNameReviewer display name
reviewDateReview publication date
ratingReview star rating
reviewTitleReview title or headline when present
reviewTextReview body text
verifiedVerification signal when visible near the review
companyReplyTextPublic company response text when detected
companyReplyDatePublic company response date when detected
scrapedAtActor run timestamp

How much does it cost to scrape Reviews.io reviews?

The actor uses pay-per-event pricing.

  • A small start event is charged once per run.
  • A review event is charged for each saved review.
  • You control spend with maxReviews and maxPagesPerCompany.

Typical first tests should use 10-25 reviews. Larger recurring monitoring runs can increase the limit after you confirm the target pages contain the data you need.

How to use Reviews.io Reviews Scraper

  1. Open the actor on Apify.
  2. Paste one or more Reviews.io company review URLs.
  3. Set maxReviews to the number of reviews you want.
  4. Optionally set maxPagesPerCompany to limit pagination.
  5. Run the actor.
  6. Download results from the dataset tab.

Input example

{
"startUrls": [
{ "url": "https://www.reviews.io/company-reviews/store/loveholidays-com" }
],
"maxReviews": 25,
"maxPagesPerCompany": 3
}

Input fields

startUrls

Paste full Reviews.io company review URLs. This is the recommended input for most users.

storeKeys

Optional list of plain store keys. Use this when you already know the Reviews.io slug and do not want to paste full URLs.

maxReviews

Total number of review records to save across all companies in the run.

maxPagesPerCompany

Pagination safety limit for each company page. Increase it when you need more historical reviews.

Output example

{
"storeKey": "loveholidays-com",
"companyName": "loveholidays.com",
"companyUrl": "https://www.loveholidays.com/",
"sourceUrl": "https://www.reviews.io/company-reviews/store/loveholidays-com",
"pageUrl": "https://www.reviews.io/company-reviews/store/loveholidays-com",
"pageNumber": 1,
"aggregateRating": 3.04,
"totalReviewCount": 5081,
"reviewerName": "Anonymous",
"reviewDate": "2026-05-26 07:34:13",
"rating": 5,
"reviewTitle": null,
"reviewText": "Everything went well...",
"verified": true,
"companyReplyText": null,
"companyReplyDate": null,
"scrapedAt": "2026-05-26T09:00:00.000Z"
}

Tips for best results

  • Start with a low maxReviews value to validate the target store.
  • Use full Reviews.io URLs when possible.
  • Run on a schedule to monitor new reviews over time.
  • Keep the pageUrl field when deduplicating historical exports.
  • Combine storeKey and reviewDate with review text for deduplication.

Common use cases

  • Daily review monitoring for your own brand
  • Competitive reputation reports
  • Negative-review alerting workflows
  • Customer sentiment analysis
  • Support quality audits
  • Product feedback clustering
  • Public review archiving

Integrations

Apify datasets can be connected to many downstream systems.

  • Google Sheets for stakeholder reports
  • Slack or email alerts for low ratings
  • BigQuery or Snowflake for analytics
  • Make and Zapier automations
  • Webhooks for review monitoring pipelines
  • LLM summarization for weekly sentiment briefs

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/reviews-io-scraper').call({
startUrls: [{ url: 'https://www.reviews.io/company-reviews/store/loveholidays-com' }],
maxReviews: 25,
maxPagesPerCompany: 3,
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/reviews-io-scraper').call(run_input={
'startUrls': [{'url': 'https://www.reviews.io/company-reviews/store/loveholidays-com'}],
'maxReviews': 25,
'maxPagesPerCompany': 3,
})
print(run['defaultDatasetId'])

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~reviews-io-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"startUrls":[{"url":"https://www.reviews.io/company-reviews/store/loveholidays-com"}],"maxReviews":25,"maxPagesPerCompany":3}'

MCP usage

Use this actor from MCP-compatible tools through Apify MCP Server.

MCP URL:

https://mcp.apify.com/?tools=automation-lab/reviews-io-scraper

Claude Code setup:

$claude mcp add apify-reviews-io https://mcp.apify.com/?tools=automation-lab/reviews-io-scraper

Claude Desktop JSON config:

{
"mcpServers": {
"apify-reviews-io": {
"url": "https://mcp.apify.com/?tools=automation-lab/reviews-io-scraper"
}
}
}

Example prompts:

  • "Scrape the latest 25 Reviews.io reviews for this company URL."
  • "Run the Reviews.io scraper and summarize the top complaints."
  • "Compare average rating and recent review text for these two store keys."

Scheduling

You can schedule the actor in Apify Console.

Suggested schedules:

  • Daily for active reputation monitoring
  • Weekly for agency reporting
  • Monthly for competitor snapshots

Data quality notes

The actor extracts public information exposed in the page HTML and JSON-LD. Some optional fields, such as company replies or verification badges, may not appear on every page or every review.

If a target page has no public reviews, the actor may finish with fewer rows than requested.

FAQ

Why did I get fewer reviews than requested?

The store may have fewer public reviews available in the fetched pages, or maxPagesPerCompany may be too low. Increase the page limit and run again.

Why is companyReplyText empty?

Not every review has a public company reply. The field is populated only when a response is visible and detected near the review.

Why does my URL fail?

Make sure the URL is a public Reviews.io company review page containing /company-reviews/store/.

Legality and ethical use

This actor is designed for public web data. Always use the data responsibly, respect applicable laws, and follow the terms that apply to your use case. Do not use scraped data for spam, harassment, or unlawful profiling.

You may also be interested in other automation-lab reputation and review actors:

Limitations

  • The actor does not log in to private Reviews.io dashboards.
  • It does not bypass access controls.
  • It extracts what is publicly visible in the page response.
  • Optional fields depend on what Reviews.io exposes for each store.

Version notes

Version 0.1 focuses on public company review pages, JSON-LD review extraction, pagination, and clean dataset output.

Support

If a public Reviews.io company page does not work as expected, share the run ID and input with support so the extractor can be checked against the current page structure.