# ReclameAqui Scraper - Company Reputation & Complaints (`webdata_labs/reclameaqui-scraper`) Actor

\[💵 $20.00 / 1K] Scrape public ReclameAqui company reputation metrics, complaint summaries, statuses, and category/problem breakdowns from company listing pages.

- **URL**: https://apify.com/webdata\_labs/reclameaqui-scraper.md
- **Developed by:** [Open Web Team](https://apify.com/webdata_labs) (community)
- **Categories:** Lead generation, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## ReclameAqui Scraper - Company Reputation & Complaints

**Turn any Brazilian company's ReclameAqui page into a structured reputation scorecard - score, response rate, and recent complaints as clean data.**

### 🔎 What does ReclameAqui Scraper do?

ReclameAqui Scraper extracts public **Brazilian company reputation metrics** and **recent complaint summaries** from [ReclameAqui](https://www.reclameaqui.com.br/) company listing pages. Use it as a ReclameAqui API alternative when you need structured company scorecards, complaint status data, and problem/category breakdowns in JSON, CSV, Excel, or through the Apify API.

This Actor is intentionally focused on listing/profile pages. It does not yet scrape full complaint reply threads from individual complaint detail pages.

### ✅ What you get / ❌ what this isn't

| ✅ This Actor gives you | ❌ This Actor is not |
|---|---|
| Company reputation score, response/solved/deal-again rates | Not full complaint reply threads (yet) |
| Top categories, problems, and products as data | Not private user contact details |
| Recent complaint summaries with status | Not an official ReclameAqui API |
| JSON/CSV/Excel export + Apify API | Not a one-off page you copy by hand |

### 💡 Why scrape ReclameAqui?

ReclameAqui is one of Brazil's most important public consumer complaint and brand reputation platforms. Scraping it can help with:

- brand reputation monitoring for Brazilian companies,
- competitor complaint analysis,
- due diligence before partnerships or procurement,
- customer support benchmarking,
- market research by category, product, or recurring problem type,
- scheduled monitoring through Apify Tasks.

Because it runs on Apify, you can schedule runs, call it from the API, export datasets, connect it to Make/Zapier/webhooks, and monitor failures from the Apify Console.

### 📊 What data can ReclameAqui Scraper extract?

| Field | Type | Description |
|---|---|---|
| `recordType` | string | `company`, `complaint`, or `error`. |
| `companySlug` | string | ReclameAqui company slug, for example `nubank`. |
| `companyName` | string | Public company name shown by ReclameAqui. |
| `mainSegment` | string | Main public company segment/category. |
| `finalScore` | number | ReclameAqui reputation score when exposed on the listing page. |
| `answeredPercentual` | number | Public response percentage. |
| `solvedPercentual` | number | Public solved percentage. |
| `dealAgainPercentual` | number | Public "would do business again" percentage. |
| `complaintsTotal` | number | Total complaint count exposed by the page. |
| `topCategories`, `topProblems`, `topProducts` | array | Top public breakdowns with IDs, labels, and counts. |
| `title` | string | Recent complaint title. |
| `description` | string | Recent complaint snippet from the listing page. |
| `created` | string | Complaint creation timestamp. |
| `status` | string | Company RA status on company rows, complaint status on complaint rows. |
| `solved`, `evaluated` | boolean | Public complaint flags when exposed. |
| `url` | string | ReclameAqui page URL. |

### ⚙️ How to scrape ReclameAqui

1. Open the Actor on Apify.
2. Enter one or more ReclameAqui company slugs, such as `nubank`, or paste full company listing URLs.
3. Choose how many recent complaint summaries to return per company.
4. Keep `Include company record` enabled if you want reputation metrics and breakdowns.
5. Click **Start**.
6. Download the dataset in JSON, CSV, Excel, HTML, RSS, or XML, or use the Apify API endpoint from the Output tab.

### 💵 How much will it cost to scrape ReclameAqui?

The default run is intentionally small: one company, one company profile row, and a few recent complaint summaries. In validation, a one-company run with 5 complaint summaries finished in about 25 seconds and used roughly `$0.006` of Apify platform usage.

Costs depend on Apify platform pricing, memory, run duration, and how many companies you provide. To keep runs predictable:

- the Actor accepts up to 10 companies per run,
- `maxComplaintsPerCompany` is capped at 20,
- set `maxComplaintsPerCompany` to `0` for profile-only runs,
- keep `delayMs` at the default unless a page returns incomplete data.

### 📥 Input

See the **Input** tab for all configuration options.

```json
{
  "companies": ["nubank"],
  "maxComplaintsPerCompany": 5,
  "includeCompanyRecord": true,
  "includeBreakdowns": true,
  "delayMs": 1000
}
````

`companies` accepts either company slugs or full ReclameAqui company/lista-reclamacoes URLs:

```json
{
  "companies": [
    "nubank",
    "https://www.reclameaqui.com.br/empresa/nubank/lista-reclamacoes/"
  ]
}
```

### 📤 Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Example company row:

```json
{
  "recordType": "company",
  "companySlug": "nubank",
  "companyName": "Nubank",
  "mainSegment": "Bancos e Financeiras",
  "complaintsTotal": 521843,
  "finalScore": 8.7,
  "answeredPercentual": 99.7,
  "solvedPercentual": 92.4,
  "dealAgainPercentual": 80.4,
  "status": "RA1000",
  "recentComplaintsAvailable": 10,
  "url": "https://www.reclameaqui.com.br/empresa/nubank/lista-reclamacoes/"
}
```

Example complaint row:

```json
{
  "recordType": "complaint",
  "companySlug": "nubank",
  "id": "6sD8vx8alwr1cPEU",
  "title": "Estorno de Pix nao existe na Nubank",
  "description": "Complaint snippet from the listing page...",
  "created": "2026-06-24T14:27:41",
  "status": "PENDING",
  "solved": false,
  "evaluated": false,
  "url": "https://www.reclameaqui.com.br/nubank/estorno-de-pix-nao-existe-na-nubank_6sD8vx8alwr1cPEU/"
}
```

### 🔁 Run it on the Apify platform

Schedule recurring reputation monitoring, call it from the Apify API, export to CSV/JSON/Excel, or pipe results into Make, Zapier, or webhooks to track scores over time.

### ⚠️ Tips and limitations

- For cheapest monitoring, run with `maxComplaintsPerCompany: 0` and compare company metrics over time.
- For complaint monitoring, schedule small recurring runs and deduplicate by `id`.
- Full complaint detail pages and company reply threads are not included yet.
- Some public fields can change if ReclameAqui changes its page data structure.
- If a company fails, the Actor emits an `error` row for that company instead of hiding the failure.

### 🧩 Related Actors

- **Website Contact Extractor** - turn the companies you research into outreach contacts.
- **Lead List Deduplicator & Normalizer** - clean any company lists you build.

### ❓ FAQ

#### Is this a ReclameAqui API?

It is not an official ReclameAqui API. It is an Apify Actor that turns public ReclameAqui company listing pages into structured datasets and API-accessible output.

#### Can it scrape full complaint conversations?

Not in this version. This version focuses on company reputation metrics and recent complaint summaries visible in listing/profile page data.

#### Can I run this for many companies?

Yes, but keep runs small and scheduled. The Actor currently caps each run at 10 companies and 20 complaint summaries per company to prevent accidental high-cost runs.

#### Does it collect private user data?

The Actor extracts public data exposed on ReclameAqui pages. It does not log into ReclameAqui and does not attempt to extract private contact details.

### 🛠️ Disclaimers and support

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

For programmatic use, open the **API** tab on Apify. For bugs, feature requests, or missing fields, use the Actor's **Issues** tab.

# Actor input Schema

## `companies` (type: `array`):

Enter ReclameAqui company slugs such as nubank, or full company/lista-reclamacoes URLs. Keep runs small; the Actor currently accepts up to 10 companies per run.

## `maxComplaintsPerCompany` (type: `integer`):

Maximum recent complaint summary rows to emit per company. Use 0 for company profile rows only. Cost-safe maximum is 20.

## `includeCompanyRecord` (type: `boolean`):

Emit one company reputation/profile row per input company.

## `includeBreakdowns` (type: `boolean`):

Include top categories, problems, and products with counts on the company row.

## `delayMs` (type: `integer`):

Milliseconds to wait after DOMContentLoaded before extracting page state. Lower values are cheaper; increase only if a company page returns empty data.

## Actor input object example

```json
{
  "companies": [
    "nubank"
  ],
  "maxComplaintsPerCompany": 3,
  "includeCompanyRecord": true,
  "includeBreakdowns": true,
  "delayMs": 1000
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companies": [
        "nubank"
    ],
    "maxComplaintsPerCompany": 3,
    "delayMs": 1000
};

// Run the Actor and wait for it to finish
const run = await client.actor("webdata_labs/reclameaqui-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "companies": ["nubank"],
    "maxComplaintsPerCompany": 3,
    "delayMs": 1000,
}

# Run the Actor and wait for it to finish
run = client.actor("webdata_labs/reclameaqui-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companies": [
    "nubank"
  ],
  "maxComplaintsPerCompany": 3,
  "delayMs": 1000
}' |
apify call webdata_labs/reclameaqui-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=webdata_labs/reclameaqui-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ReclameAqui Scraper - Company Reputation & Complaints",
        "description": "[💵 $20.00 / 1K] Scrape public ReclameAqui company reputation metrics, complaint summaries, statuses, and category/problem breakdowns from company listing pages.",
        "version": "0.1",
        "x-build-id": "F9fC3jBcZhj4LYavS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/webdata_labs~reclameaqui-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-webdata_labs-reclameaqui-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/webdata_labs~reclameaqui-scraper/runs": {
            "post": {
                "operationId": "runs-sync-webdata_labs-reclameaqui-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/webdata_labs~reclameaqui-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-webdata_labs-reclameaqui-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "companies"
                ],
                "properties": {
                    "companies": {
                        "title": "Company slugs or URLs",
                        "minItems": 1,
                        "maxItems": 10,
                        "type": "array",
                        "description": "Enter ReclameAqui company slugs such as nubank, or full company/lista-reclamacoes URLs. Keep runs small; the Actor currently accepts up to 10 companies per run.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "nubank"
                        ]
                    },
                    "maxComplaintsPerCompany": {
                        "title": "Max complaints per company",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum recent complaint summary rows to emit per company. Use 0 for company profile rows only. Cost-safe maximum is 20.",
                        "default": 5
                    },
                    "includeCompanyRecord": {
                        "title": "Include company record",
                        "type": "boolean",
                        "description": "Emit one company reputation/profile row per input company.",
                        "default": true
                    },
                    "includeBreakdowns": {
                        "title": "Include breakdowns",
                        "type": "boolean",
                        "description": "Include top categories, problems, and products with counts on the company row.",
                        "default": true
                    },
                    "delayMs": {
                        "title": "Delay after page load",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Milliseconds to wait after DOMContentLoaded before extracting page state. Lower values are cheaper; increase only if a company page returns empty data.",
                        "default": 1000
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
