# Reclame Aqui Scraper - Complaints & Reputation, No Login (`benthepythondev/reclame-aqui-complaints-scraper`) Actor

Export Reclame Aqui complaints and company reputation from Brazil: title, status, solved, consumer score, problem type, city, date, plus full text and the company's replies on request. Reputation score, CNPJ, rates and top problems per company. Filter by status, keyword and date. $4 per 1,000.

- **URL**: https://apify.com/benthepythondev/reclame-aqui-complaints-scraper.md
- **Developed by:** [Ben](https://apify.com/benthepythondev) (community)
- **Categories:** Lead generation, Marketing, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Reclame Aqui Scraper: Complaints & Company Reputation, No Login

Reclame Aqui Scraper exports consumer complaints and company reputation from reclameaqui.com.br, Brazil's largest complaints site, to JSON, CSV or Excel. Give it company slugs or links and it returns each complaint's title, status, solved flag, consumer score, problem type, product, city, state and date, plus one reputation row per company (RA1000 label, final score, answered and solved rates, CNPJ, segment rank, top problems).

- **$4 per 1,000 complaints**, $8 per 1,000 with full text and the company's replies, $0.01 per company profile. The leading Reclame Aqui Actors charge $10 to $15 per 1,000.
- **Filters the site itself uses:** not answered, answered, evaluated, solved, not solved, plus a keyword and a start date.
- **No login, no cookies, no proxy setup.** The run uses Brazilian residential addresses on its own.
- **Privacy by default:** consumer names, e-mails and addresses are never copied (the site masks them too).

### What does Reclame Aqui Scraper return?

Two kinds of rows, told apart by `type`.

A **complaint** row (one per complaint, newest first):

```json
{
  "type": "complaint",
  "complaintId": "eHlTHxQNLuC0wEPx",
  "companyName": "Magazine Luiza - Loja Online",
  "title": "Não recebi meu estorno do Pix após devolver fone de ouvido ao Magalu",
  "snippet": "Fiz uma compra no magalu de um fone de ouvido, o mesmo veio com problema...",
  "status": "ANSWERED",
  "hasReply": true,
  "evaluated": false,
  "problemType": "Estorno do valor pago",
  "productType": "Fone de ouvido",
  "city": "Jundiaí",
  "state": "SP",
  "createdAt": "2026-10-30T00:25:44",
  "interactionCount": 1,
  "url": "https://www.reclameaqui.com.br/magazine-luiza-loja-online/nao-recebi-meu-estorno-do-pix-apos-devolver-fone-de-ouvido-ao-magalu_eHlTHxQNLuC0wEPx/"
}
```

With **Include full text and company replies** on, the row also carries `text` (the whole complaint), `companyReply`, `companyReplyAt` and `thread` (every answer, consumer reply and final evaluation, in order).

A **company** row (one per company, first in its block):

```json
{
  "type": "company",
  "companyName": "Nubank",
  "cnpj": "18236120000158",
  "reputation": "RA1000",
  "finalScore": 8.7,
  "consumerScore": 7.77,
  "complaintsInPeriod": 56927,
  "answeredRate": 97.9,
  "solvedRate": 92.7,
  "dealAgainRate": 81.0,
  "averageAnswerTimeHours": 92.6,
  "periodStart": "2026-05-01",
  "periodEnd": "2026-10-31",
  "segmentRank": 1,
  "segmentRankName": "Melhores Emissoras e Bandeiras de Cartão de Crédito",
  "matchingComplaints": 559290,
  "topProblems": [{"problem": "Cobrança indevida", "complaints": 89377}, {"problem": "Limite", "complaints": 53722}]
}
```

### How do I scrape Reclame Aqui complaints?

1. Open the company on reclameaqui.com.br and copy its address, or just the part after `/empresa/` (for example `nubank` or `itau-unibanco_15`).
2. Paste one or more into **Companies**.
3. Pick a **Complaint status**, an optional **Keyword** (`estorno`, `cobrança indevida`) and **Complaints from (date)**.
4. Set **Max complaints per company** (up to 1,000) and start the run.

Input example:

```json
{
  "companies": ["nubank", "https://www.reclameaqui.com.br/empresa/magazine-luiza-loja-online/"],
  "maxComplaintsPerCompany": 200,
  "status": "not_solved",
  "keyword": "estorno",
  "dateFrom": "2026-10-01",
  "includeDetails": true
}
```

### How much does it cost to scrape Reclame Aqui?

| What | Price | 1,000 rows |
|---|---|---|
| Complaint (list fields) | $0.004 | $4 |
| Complaint with full text and replies | $0.008 | $8 |
| Company profile | $0.01 | one per company |

Higher Apify plans pay up to 15% less per row. Example: 5 competitors with 200 complaints each and full replies cost 5 × $0.01 + 1,000 × $0.008 = $8.05. Nothing is charged for a company that could not be read.

### How does it compare with other Reclame Aqui scrapers?

| | This Actor | Typical Reclame Aqui Actor |
|---|---|---|
| Price per 1,000 complaints | $4 ($8 with replies) | $10 to $15, plus a start fee |
| Status filters (solved, not answered...) | all five tabs of the site | some |
| Keyword and date filter | yes | some |
| Company reputation, CNPJ, segment rank, top problems | yes, one row | often a separate paid record |
| Consumer names in the output | never | varies |

### Who uses Reclame Aqui data?

Brand and customer-service teams track their own complaints and reply times, agencies benchmark a client against competitors, investors and procurement teams check a supplier's reputation before signing, and analysts feed complaint text into AI models to find recurring problems.

### FAQ

**Can I search by company name?** Use the slug or the link from the company's page. Reclame Aqui slugs are not derived from the name (`itau-unibanco_15`), so the Actor takes the one the site uses.

**How many complaints can I get per company?** Up to 1,000 per filter, the most Reclame Aqui's own list serves. For more history, run again per status, keyword or date window.

**Is the reply thread included?** With **Include full text and company replies** on, yes: every company answer, consumer reply and final evaluation, in order. Without it you get a 130-character snippet and the number of interactions.

**Does it need a Reclame Aqui account or cookies?** No. It reads the public pages a logged-out visitor sees.

**What happens if nothing matches?** The run succeeds with one `no_results` row that says so, and the status message explains why per company.

**Can AI agents use it?** Yes. Call it through the Apify API or the Apify MCP server with `companies` and `maxComplaintsPerCompany`; every row is flat JSON with stable field names.

### Limits

- Brazilian residential addresses are used; a run sometimes needs a retry when Reclame Aqui's protection refuses several addresses in a row (the status message says so and nothing is charged for missing rows).
- The `solved` field is filled only for complaints the consumer evaluated.
- Reputation figures are the site's current 6-month period.

This Actor is an independent tool. It is not affiliated with or endorsed by Reclame Aqui. It reads public pages only and copies no personal data of consumers.

# Actor input Schema

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

Reclame Aqui company slugs or links, e.g. 'nubank', 'itau-unibanco_15' or https://www.reclameaqui.com.br/empresa/magazine-luiza-loja-online/. The slug is the part after /empresa/ in the company's page address.

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

Newest complaints to read per company, up to 1,000 (the most Reclame Aqui serves per filter). 0 = company profile only.

## `status` (type: `string`):

Same filters as the tabs on the company's complaint list.

## `keyword` (type: `string`):

Only complaints that mention this word or phrase, e.g. 'estorno' or 'cobrança indevida'. Leave empty for all.

## `dateFrom` (type: `string`):

Stop at complaints older than this date, as YYYY-MM-DD, e.g. 2026-10-01. Leave empty for no date limit.

## `includeDetails` (type: `boolean`):

Open every complaint page for the full complaint text and the whole reply thread (company answers, consumer replies, final evaluation). Billed as 'complaint with details' instead of 'complaint'.

## `includeCompanyProfile` (type: `boolean`):

One row per company with the reputation label (RA1000, Ótima...), final score, answered, solved and deal-again rates, average answer time, CNPJ, website, segment rank and the top 10 problem types with complaint counts.

## Actor input object example

```json
{
  "companies": [
    "nubank"
  ],
  "maxComplaintsPerCompany": 50,
  "status": "all",
  "includeDetails": false,
  "includeCompanyProfile": true
}
```

# Actor output Schema

## `results` (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"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/reclame-aqui-complaints-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"] }

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/reclame-aqui-complaints-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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"
  ]
}' |
apify call benthepythondev/reclame-aqui-complaints-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,benthepythondev/reclame-aqui-complaints-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4ENbc61ZHrph2UbQl/builds/ifZVBdyGWQ8hMqFaJ/openapi.json
