ComplaintsBoard Reviews Scraper avatar

ComplaintsBoard Reviews Scraper

Pricing

Pay per event

Go to Apify Store
ComplaintsBoard Reviews Scraper

ComplaintsBoard Reviews Scraper

Scrape public ComplaintsBoard complaints, reviews, ratings, dates, authors, statuses, and company complaint counts for brand 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

12 days ago

Last modified

Share

Scrape public company complaint pages from ComplaintsBoard and export complaint text, ratings, dates, authors, statuses, recommendations, and company-level review metrics.

What does ComplaintsBoard Reviews Scraper do?

ComplaintsBoard Reviews Scraper collects public complaint and review records from complaintsboard.com company pages.

It is built for reputation-monitoring workflows where teams need structured complaint data instead of manual copy-and-paste from the website.

The actor uses HTTP requests and server-rendered HTML parsing.

No browser automation is required for the default workflow.

No login is required for public complaint pages.

You provide one or more ComplaintsBoard URLs.

The actor follows pagination.

It saves each complaint or review as one dataset item.

Who is it for?

Reputation agencies

Track public complaints about brands, marketplaces, banks, airlines, telecoms, retailers, and service providers.

Customer support teams

Find recurring issues that customers publish outside your owned support channels.

Compliance teams

Monitor complaint volume, unresolved problems, and potentially risky language.

Market researchers

Compare complaint themes across competitors in the same industry.

Data teams

Feed complaint records into BI, warehouses, dashboards, or alerting systems.

Why use this actor?

✅ Export complaint pages into structured JSON, CSV, Excel, XML, or RSS.

✅ Capture company-level metrics and per-complaint fields in the same row.

✅ Crawl multiple company pages in one run.

✅ Limit pages and records to control costs.

✅ Optionally fetch complaint detail pages for fuller text.

✅ Use Apify integrations, API, webhooks, and schedules.

What data can I extract?

FieldDescription
companyNameCompany/profile name from the ComplaintsBoard page
companyUrlCanonical company URL
companyRatingAggregate rating when displayed
reviewCountPublic review count from page metadata
complaintCountPublic complaint count from page metadata
itemTypeReview/complaint label visible on the card
titleComplaint or review title
bodyComplaint/review text
datePublished date
timePublished time when visible
authorPublic author name
authorLocationPublic author location
statusVisible status labels
ratingPer-item rating when available
categoryCategory when visible
recommendationCustomer recommendation text when present
sourceUrlPage where the item was found
detailUrlComplaint detail URL
pageNumberPaginated list page number

How much does it cost to scrape ComplaintsBoard complaints?

The actor uses pay-per-event pricing.

There is a small $0.005 run-start event.

Each saved complaint/review is charged as one result event.

Apify plan tierPrice per complaint/reviewApprox. 1,000 records
Free$0.000044635$0.0446
Bronze$0.000038813$0.0388
Silver$0.000030274$0.0303
Gold$0.000023288$0.0233
Platinum$0.000015525$0.0155
Diamond$0.000010868$0.0109

Because the default scraper is HTTP-only, it is designed to be inexpensive for typical monitoring workloads.

Use low maxItems and maxPagesPerCompany values for test runs.

Increase limits after checking the first dataset output.

Input configuration

startUrls

Add ComplaintsBoard company URLs such as:

https://www.complaintsboard.com/amazon-b109438

You can add more than one URL.

The actor also accepts complaint detail URLs, although company pages are the recommended starting point.

maxItems

Maximum number of complaint/review records to save across all URLs.

The default is intentionally small for a cheap first run.

maxPagesPerCompany

Maximum number of paginated pages to crawl per start URL.

Use this to control crawl depth.

includeComplaintDetails

When enabled, the actor fetches individual complaint detail pages to enrich or expand text.

This produces more complete records but requires more requests.

Example input

{
"startUrls": [
{ "url": "https://www.complaintsboard.com/amazon-b109438" }
],
"maxItems": 20,
"maxPagesPerCompany": 3,
"includeComplaintDetails": false
}

Example output

{
"companyName": "Amazon Shoppers",
"companyUrl": "https://www.complaintsboard.com/amazon-b109438",
"companyRating": 1.2,
"reviewCount": 15,
"complaintCount": 2102,
"itemType": "New review",
"title": "Amazon slow ships",
"body": "Customer complaint text...",
"date": "Jun 08, 2026",
"time": "11:25 am UTC",
"author": "kyokushinkai",
"authorLocation": "Thomasville, US",
"status": "New review, Featured review",
"rating": 1,
"category": null,
"recommendation": null,
"sourceUrl": "https://www.complaintsboard.com/amazon-b109438",
"detailUrl": "https://www.complaintsboard.com/amazoncom-amazon-slow-ships-c2014214",
"pageNumber": 1
}

How to scrape ComplaintsBoard in 5 steps

  1. Open the actor on Apify.

  2. Paste one or more ComplaintsBoard company URLs.

  3. Set maxItems and maxPagesPerCompany.

  4. Run the actor.

  5. Download the dataset or connect it to your workflow.

Tips for best results

Start with one company URL.

Keep maxItems low for the first run.

Review the output fields.

Then increase pagination and record limits.

Enable detail-page fetching only when you need fuller complaint text.

Use Apify schedules for recurring monitoring.

Use webhooks to notify your team when new data is ready.

Integrations

You can connect this actor to Google Sheets.

You can send results to Slack through a webhook.

You can store output in S3, BigQuery, Snowflake, or your own API.

You can run it on a daily or weekly Apify schedule.

You can combine it with sentiment analysis, deduplication, or alerting actors.

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/complaintsboard-reviews-scraper').call({
startUrls: [{ url: 'https://www.complaintsboard.com/amazon-b109438' }],
maxItems: 20,
maxPagesPerCompany: 3
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/complaintsboard-reviews-scraper').call(run_input={
'startUrls': [{'url': 'https://www.complaintsboard.com/amazon-b109438'}],
'maxItems': 20,
'maxPagesPerCompany': 3,
})
print(run['defaultDatasetId'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~complaintsboard-reviews-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"startUrls":[{"url":"https://www.complaintsboard.com/amazon-b109438"}],"maxItems":20,"maxPagesPerCompany":3}'

MCP usage

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

MCP URL:

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

Claude Code setup:

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

Claude Desktop JSON configuration:

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

MCP example prompts:

  • "Run the ComplaintsBoard Reviews Scraper through MCP for this company URL and summarize the top recurring customer issues."

  • "Use MCP to collect the latest 50 ComplaintsBoard complaints for this brand and group them by complaint theme."

  • "Use the Apify ComplaintsBoard MCP tool to scrape this brand, then create a table with complaint title, date, status, rating, and a one-sentence issue theme."

Scheduling

For brand monitoring, schedule the actor to run daily or weekly.

Use a fixed list of company URLs.

Export only new records in your downstream system by deduplicating on detailUrl.

Data quality notes

ComplaintsBoard pages are public web pages.

Some fields may be missing when the website does not display them.

Author names and locations are captured only when publicly visible.

Dates are emitted as the text displayed by the website.

The actor does not infer or rewrite complaint content.

Limits

The actor only scrapes publicly accessible pages.

It does not log in.

It does not post comments.

It does not submit complaints.

It does not bypass paywalls, CAPTCHAs, or private data restrictions.

FAQ

Does this actor require a ComplaintsBoard account?

No. It reads public company and complaint pages only.

Can I monitor several brands in one run?

Yes. Add multiple company URLs to startUrls and set a combined maxItems limit.

Troubleshooting

Why did I get fewer items than requested?

The company may have fewer visible records within your maxPagesPerCompany limit.

Increase maxPagesPerCompany or add more company URLs.

Why is body shorter than expected?

Enable includeComplaintDetails to fetch individual detail pages for fuller text.

Why are some fields null?

ComplaintsBoard does not display every field on every complaint card.

Null values mean the field was not visible in public HTML.

Legality and responsible use

This actor extracts publicly available web data.

You are responsible for using the results in compliance with applicable law, platform terms, and privacy rules.

Avoid collecting or processing personal data unless you have a valid legal basis.

Respect takedown, deletion, and retention requirements in your jurisdiction.

Try other automation-lab review and reputation scrapers on Apify:

  • Trustpilot Scraper

  • BBB Scraper

  • Reviews.io Scraper

  • Sitejabber Scraper

  • Google Maps review and lead actors

Changelog

0.1

Initial HTTP-only ComplaintsBoard company complaint scraper.

Support

If a page layout changes or a public company page stops working, open an Apify issue with the input URL and run ID.

Development

npm install
npm run build
timeout 120 apify run

Storage

Results are saved to the default Apify dataset.

You can download results from the Apify Console or access them through the Dataset API.

Performance

The actor uses lightweight HTTP requests.

It is designed for low memory usage.

The default memory is 256 MB.

Version

Current development version: 0.1.