ComplaintsBoard Reviews Scraper avatar

ComplaintsBoard Reviews Scraper

Pricing

from $0.02 / 1,000 item extracteds

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

from $0.02 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

2

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, while preserving useful output if another source fails.

✅ Limit pages and records to control costs, or use fromDate for incremental monitoring.

✅ Receive ISO publication timestamps, stable complaint IDs, and verified-customer flags.

✅ Optionally fetch complaint detail pages for fuller text and category enrichment.

✅ 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 exactly as displayed
timePublished time exactly as displayed
publishedAtISO 8601 UTC publication timestamp when the displayed date/time is parseable
complaintIdStable complaint ID derived from the detail URL
authorPublic author name
authorLocationPublic author location
isVerifiedCustomerWhether ComplaintsBoard shows a verified-customer badge
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. Equivalent URLs are normalized and deduplicated.

Only HTTP(S) URLs on complaintsboard.com or its subdomains are accepted. The actor also accepts complaint detail URLs, although company pages are the recommended starting point.

fromDate

Optional UTC calendar date in YYYY-MM-DD format. Records with a parseable publication date before the cutoff are skipped and are not charged as items. Records whose displayed date cannot be parsed are retained to avoid silently losing data. When a paginated page contains only parseable records older than the cutoff, the actor stops paging that source.

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" }
],
"fromDate": "2026-09-01",
"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": "Sep 12, 2026",
"time": "4:46 pm UTC",
"publishedAt": "2026-09-12T16:46:00.000Z",
"complaintId": "c2014214",
"author": "Sample Customer",
"authorLocation": "Thomasville, US",
"isVerifiedCustomer": true,
"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 --transport http apify \
"https://mcp.apify.com?tools=automation-lab/complaintsboard-reviews-scraper"

Claude Desktop, Cursor, and VS Code setup

Claude Desktop, Cursor, VS Code, and other MCP-capable clients can use:

{
"mcpServers": {
"apify": {
"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.

Use fromDate to limit each run to a monitoring window, then deduplicate downstream on complaintId (or detailUrl for older exports).

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 remain available as the text displayed by the website. publishedAt is also emitted when that text can be parsed reliably; otherwise it is null.

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 or, for publishedAt, the displayed timestamp could not be parsed reliably.

Why did the run fail with no extracted complaints?

Verify that the URL opens as a public ComplaintsBoard page and still contains complaint records. A clear zero-output failure can also indicate that ComplaintsBoard changed its page selectors; include the input URL and run ID in a support issue.

What happens if one of several URLs fails?

The actor logs the failed source and continues with the remaining valid ComplaintsBoard URLs. The run fails only when no complaint can be extracted at all.

Data handling, AI, and retention

This actor uses deterministic HTTP extraction and does not call an AI model or send input or scraped data to an AI provider.

It processes only fields displayed on public ComplaintsBoard pages. Results and logs use the Apify run's storage and retention settings; the actor creates no separate external copy or cache. You can delete datasets and run storage through Apify Console or API controls.

Public complaint records can contain names, locations, and other personal data. Collect and retain only what your workflow lawfully needs.

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.

ComplaintsBoard is named only to identify the public data source. This actor is independent and is not affiliated with, endorsed by, or sponsored by ComplaintsBoard.

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.2

Added date-window monitoring, machine-readable timestamps, stable complaint IDs, verified-customer flags, safer URL handling, category fixes, and partial-failure resilience.

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.