Pricing
Pay per event
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
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?
| Field | Description |
|---|---|
companyName | Company/profile name from the ComplaintsBoard page |
companyUrl | Canonical company URL |
companyRating | Aggregate rating when displayed |
reviewCount | Public review count from page metadata |
complaintCount | Public complaint count from page metadata |
itemType | Review/complaint label visible on the card |
title | Complaint or review title |
body | Complaint/review text |
date | Published date |
time | Published time when visible |
author | Public author name |
authorLocation | Public author location |
status | Visible status labels |
rating | Per-item rating when available |
category | Category when visible |
recommendation | Customer recommendation text when present |
sourceUrl | Page where the item was found |
detailUrl | Complaint detail URL |
pageNumber | Paginated 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 tier | Price per complaint/review | Approx. 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
-
Open the actor on Apify.
-
Paste one or more ComplaintsBoard company URLs.
-
Set
maxItemsandmaxPagesPerCompany. -
Run the actor.
-
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 =newApifyClient({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 ApifyClientclient = 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.
Related scrapers
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
npminstallnpm run buildtimeout120 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.
