Reclame Aqui Scraper - Reputation, Complaints & Replies
Pricing
from $17.00 / 1,000 company records
Reclame Aqui Scraper - Reputation, Complaints & Replies
Scrapes company reputation profiles and consumer complaints from Reclame Aqui (Brazil): score, response/resolution rates, complaint text, status, and company reply threads.
Pricing
from $17.00 / 1,000 company records
Rating
0.0
(0)
Developer
Rise and Code
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
What does Reclame Aqui Scraper do?
This Actor extracts company reputation profiles and consumer complaints from Reclame Aqui — Brazil's largest consumer-complaints platform, used by shoppers to check a company's track record before buying and by companies to monitor their own reputation. Give it one or more company slugs (or full Reclame Aqui URLs) and get back the company's reputation scorecard — score, % answered, % resolved, % would-buy-again, average response time, CNPJ, contact info — plus its most recent complaints, with the option to pull the full complaint text and the company's reply thread.
Why scrape Reclame Aqui?
- 📊 Reputation monitoring — track your own brand's score, response rate, and resolution rate over time.
- 🔍 Due diligence — check a supplier, franchise, or acquisition target's consumer complaint history before signing.
- 🥊 Competitive benchmarking — compare reputation metrics across competitors in your sector.
- 🎯 Customer-service QA — audit response times and reply content for unanswered or unresolved complaints.
- 🤖 Automation — schedule runs and pipe results into spreadsheets, dashboards, or CRMs via Apify integrations.
How to use Reclame Aqui Scraper
- Visit the Actor page on Apify and click Try for free — no credit card required.
- In the Input tab, add one or more companies (slug like
nubank, or the full URL). - Leave Max complaints per company at 5 and Include full complaint text off to try the cheapest data first.
- Click Start and wait a few seconds for the run to finish.
- Open the Output tab or download the dataset as JSON, CSV, Excel, or HTML.
To trigger a run via the Apify API:
curl -X POST \"https://api.apify.com/v2/acts/riseandcode~reclameaqui-scraper/runs?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"companies": ["nubank"],"maxComplaintsPerCompany": 5,"includeComplaintDetail": true}'
Input
Configure the Actor in the Input tab or via JSON.
| Field | Type | Default | Description |
|---|---|---|---|
companies | string[] | ["nubank"] | Company slugs or full Reclame Aqui URLs. Reputation profile + the 5 most recent complaints. |
searchQueries | string[] | [] | Advanced. Free-text terms searched across the whole platform. Best-effort — billed as Extra complaint per result. |
maxComplaintsPerCompany | integer | 5 | How many recent complaints to fetch per company. The 5 most recent are billed as Complaint; every one beyond 5 as Extra complaint. |
includeComplaintDetail | boolean | false | Fetch full complaint text + the company's reply thread for every complaint returned. Billed as Complaint detail per complaint. Off by default. |
Example input:
{"companies": ["nubank", "microsoft"],"maxComplaintsPerCompany": 5,"includeComplaintDetail": true}
Output
Every run returns the same data in two formats — use whichever fits your tool:
| Format | Shape | Best for | Where to get it |
|---|---|---|---|
| Dataset (default) | One row per company ("kind": "company") and one row per complaint ("kind": "complaint"), linked by companyShortname | Spreadsheets, CSV/Excel, Google Sheets, Make/Zapier, the table views in the Output tab | Output tab → Results, or GET https://api.apify.com/v2/datasets/<datasetId>/items (JSON, CSV, Excel, HTML) |
| Grouped JSON | One object per company with its complaints nested in complaints: [...]; keyword-search results in searchResults, grouped by query | Code and APIs that want a company and its complaints in one object | Output tab → Grouped JSON, or GET https://api.apify.com/v2/key-value-stores/<storeId>/records/OUTPUT |
Both hold the same records and values (the grouped JSON just drops the kind row-type field); you're charged once per item, whichever format you read. The grouped JSON is saved when the run ends (also when it is aborted or stops at your maximum cost per run).
Grouped JSON shape (fields shortened — see the full example below):
{"companies": [{"shortname": "nubank","companyName": "Nubank","score": 7.72,"complainCount": 56647,"complaints": [{"id": "NQfrzMqCgcwSPN05","tier": "free","title": "Comprei um bolo online e não recebi…","status": "PENDING"}]}],"searchResults": [{"query": "entrega atrasada","complaints": [{ "id": "…", "companyShortname": "ifood", "title": "…" }]}]}
Output example (dataset)
[{"kind": "company","companyId": "88850","shortname": "nubank","companyName": "Nubank","fantasyName": "Nubank","cnpj": "18236120000158","score": 7.72,"answeredPercentual": 99.9,"solvedPercentual": 92.4,"dealAgainPercentual": 80.7,"averageAnswerTimeHours": 94.4,"complainCount": 56647,"companyPlan": "PREMIUM","status": "ACTIVE","city": "SAO PAULO","state": "SP","urlSite": "http://www.nubank.com.br","urlInstagram": "https://www.instagram.com/nubank/","urlLinkedin": "https://www.linkedin.com/company/nubank-brasil/","scrapedAt": "2026-10-09T01:03:06.114Z"},{"kind": "complaint","id": "NQfrzMqCgcwSPN05","tier": "free","searchQuery": null,"hasFullDetail": true,"companyShortname": "nubank","companyId": "88850","companyName": "Nubank","title": "Comprei um bolo online e não recebi, Nubank não devolveu meu dinheiro","description": "Entrei no Google procurando por uma página onde eu queria comprar…","status": "PENDING","solved": false,"evaluated": false,"createdAt": "2026-10-08T21:29:20.000Z","userCity": "São Paulo","userState": "SP","category": "Marketplace","problemType": "Produto não recebido","productType": "Produtos","interactions": [],"url": "https://www.reclameaqui.com.br/nubank/comprei-um-bolo-online-e-nao-recebi-nubank-nao-devolveu-meu-dinheiro_NQfrzMqCgcwSPN05/","scrapedAt": "2026-10-09T01:03:06.759Z"}]
Data table
| Field (company) | Type | Description |
|---|---|---|
shortname / companyId | string | Reclame Aqui slug and ID of the company |
companyName / fantasyName / cnpj | string | null | Legal name, trade name and CNPJ |
score | number | null | Reclame Aqui reputation score (0–10) |
answeredPercentual / solvedPercentual | number | null | % of complaints answered / solved |
dealAgainPercentual | number | null | % of consumers who would do business with the company again |
averageAnswerTimeHours / complainCount | number | null | Average time to answer (hours) and total complaints received |
companyPlan / status | string | null | The company's Reclame Aqui plan and account status |
city / state / urlSite / urlInstagram / url… | string | null | Location, website and social profiles, when the company lists them |
| Field (complaint) | Type | Description |
|---|---|---|
id | string | Reclame Aqui complaint ID |
tier | "free" | "extra" | free = one of the 5 most recent complaints (billed as Complaint); extra = older or from a search |
searchQuery | string | null | The searchQueries term that found this complaint; null for a company's own complaints |
hasFullDetail | boolean | Whether includeComplaintDetail successfully fetched the full text/thread for this item |
title / description | string | Complaint headline and body (full text with includeComplaintDetail, a short snippet otherwise) |
status | string | null | Complaint status as Reclame Aqui reports it, e.g. PENDING, ANSWERED |
solved / evaluated | boolean | null | Whether the consumer marked the complaint resolved / left a final evaluation |
category / problemType / productType | string | null | Reclame Aqui's complaint taxonomy (only with includeComplaintDetail) |
interactions | array | null | The company↔consumer reply thread (only with includeComplaintDetail) |
userCity / userState | string | null | Consumer's self-reported location (only with includeComplaintDetail) |
How much does it cost to scrape Reclame Aqui?
This Actor uses Apify's pay-per-event pricing: you pay only for what is delivered, with no separate charge for Apify platform usage (compute, proxy, bandwidth).
| Event | Price | When it applies |
|---|---|---|
| Company profile | $0.02 | Once per company — reputation scorecard (score, CNPJ, contacts, response rates) |
| Complaint | $0.01 | Per complaint, for each of the 5 most recent complaints of a company |
| Extra complaint | $0.015 | Per complaint beyond the 5 most recent (or from searchQueries) — older complaints and keyword search results |
| Complaint detail | $0.005 | Per complaint, only when includeComplaintDetail is on — full text + reply thread |
Full example — every event in one run: 1 company, maxComplaintsPerCompany: 15, includeComplaintDetail: true:
| Event | Count | Price | Subtotal |
|---|---|---|---|
| Company profile | 1 | $0.02 | $0.02 |
| Complaint | 5 | $0.01 | $0.05 |
| Extra complaint | 10 | $0.015 | $0.15 |
| Complaint detail | 15 | $0.005 | $0.075 |
| Total | $0.295 |
More examples:
- 1 company, profile + 5 recent complaints →
$0.02 + 5 × $0.01 = $0.07 - 1 company, 5 recent complaints with full text and reply thread →
$0.02 + 5 × ($0.01 + $0.005) = $0.095 - Monitoring 10 companies (profile + 5 recent each) →
10 × $0.07 = $0.70 - Keyword search only, 20 results (
searchQueries, no companies) →20 × $0.015 = $0.30
Prices above are for Apify's free plan; paid Apify plans get a discount on every event (shown on the Pricing tab).
Apify's free plan includes $5 of free usage per month — about 70 company checks.
Tips to keep costs low
- Leave
maxComplaintsPerCompanyat 5 to get the cheapest useful signal (score + recent complaints) for reputation monitoring at scale. - Turn on
includeComplaintDetailwhen you need the full complaint text and the company's reply — it adds $0.005 per complaint. - Older complaints (beyond the 5 most recent) cost a bit more because they come from extra paginated requests to Reclame Aqui.
Known limitations
- Older complaints (beyond the 5 most recent) cap out around 10–15 per company. Reclame Aqui itself only lists that many older complaints per company, the same for every company we tested. If it can't go further, the Actor returns fewer than requested instead of failing the run, and never charges for complaints it didn't deliver. Setting
maxComplaintsPerCompanywell above ~15 won't return more. Keyword search (searchQueries) is not limited this way. interactions(the reply thread) is returned as-is from the source; its exact shape may vary between complaints.
FAQ
Is it legal to scrape Reclame Aqui?
This Actor only collects publicly available data — the same complaint text, company scores, and reply threads visible to any visitor without logging in. Always comply with Reclame Aqui's Terms of Service and applicable local laws (including the LGPD if you process any personal data returned, such as a consumer's self-reported city).
Do I need a Reclame Aqui account or API key?
No. The Actor works without any Reclame Aqui credentials — just a free Apify account.
Where do I find a company's slug?
It's the identifier in the company's Reclame Aqui URL, e.g. nubank in reclameaqui.com.br/empresa/nubank/. You can also just paste the full URL into companies — the Actor extracts the slug automatically.
Am I charged for a run that finds nothing?
No. Billing is per delivered item (company profile, complaint, extra complaint, or complaint detail) — a company that fails to load or a paginated request that returns nothing is never charged. If none of the companies you asked for can be found, the run fails with a message telling you to check the slug.
How long does a run take?
Measured on the live Actor: 1 company with its 5 recent complaints takes about 10–20 seconds; 1 company with 15 complaints and full text about 30 seconds; 3 companies plus a keyword search with full text under a minute. The default timeout is more than enough — for large batches (hundreds of companies) allow a few minutes.
Why did I get fewer extra complaints than the ~10-15 ceiling?
For companies that receive a high volume of new complaints, a new one can land between the moment the 5 most recent complaints are read and the moment the extra pages are fetched moments later. Since the Actor deduplicates by complaint ID so nothing is ever double-counted, that overlap can push the actual extra count a bit under what the pagination ceiling would otherwise allow. This is a timing effect on very active companies, not an error — you're only ever charged for what was actually delivered.
Changelog
- 2026-10-09 — New grouped JSON output: each company with its complaints nested, next to the usual table. Complaints now show which search term found them (
searchQuery). - 2026-10-08 — Older complaints and keyword search are now much faster and more reliable. Runs stop at your maximum cost per run, and a run where no company can be found fails with a clear message.
- 2026-10-06 — Updated for Reclame Aqui's new website layout.
Support
If you encounter a bug or have a suggestion for this Actor or a new one, reach us at contact.riseandcode@gmail.com. We respond in English 🇺🇸 and Portuguese 🇧🇷.