ReclameAqui Scraper · Brazil Complaints & Company Reputation avatar

ReclameAqui Scraper · Brazil Complaints & Company Reputation

Pricing

from $10.00 / 1,000 complaint records

Go to Apify Store
ReclameAqui Scraper · Brazil Complaints & Company Reputation

ReclameAqui Scraper · Brazil Complaints & Company Reputation

Monitor any Brazilian brand on ReclameAqui. Get every complaint with the company's full reply thread, plus the reputation scorecard buyers judge on — score, RA status, response and resolution rates, average answer time, CNPJ. Incremental runs emit only what changed. No browser.

Pricing

from $10.00 / 1,000 complaint records

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

ReclameAqui Scraper

Scrape consumer complaints and company reputation data from ReclameAqui.com.br — Brazil's largest consumer-complaints platform, where shoppers publicly post problems and companies answer in the open.

Every complaint comes back with its full company reply thread, and every company with a complete reputation scorecard: final score, RA status, response / resolution / recommendation rates, average answer time, CNPJ, segment and contacts. Pure HTTP, no browser.

How the ReclameAqui Scraper works

Why use this scraper

  • The whole conversation, not just the complaint. Each complaint carries interactions[] — the ordered thread of company answers and consumer replies, each with HTML, plain text and Markdown, plus a convenience companyAnswer. The reply thread does not exist in ReclameAqui's list feed; this actor reconstructs it from the complaint page.
  • A real reputation scorecard. ReclameAqui publishes its reputation index as a Java map dump rather than JSON. This actor parses it into clean numbers: finalScore, reputationLabel, raStatus (RA1000), responseRate, resolutionRate, recommendationRate, averageAnswerTimeHuman, plus 6- and 12-month breakdowns.
  • Cheapest in its category. $0.01 per complaint — see the Pricing tab.
  • Built for monitoring. Incremental mode classifies every record NEW / UPDATED / UNCHANGED / EXPIRED and emits only what changed, so a daily brand-watch run costs a fraction of the first pull.
  • Push results where you work. Telegram, Slack, Discord, WhatsApp and generic webhooks (n8n, Make, Zapier) are built in.
  • Optional B2B enrichment. Turn on enrichEmails and the actor scrapes each company's own website for business contact emails — billed only when an email is actually found.

What it does

Give it a company slug (nubank), a company name, or any reclameaqui.com.br URL. The actor resolves the company, reads its reputation scorecard, pages through its complaints with the filters you set, and — when you ask for it — opens each complaint to rebuild the full back-and-forth with the company. One clean row per record, as JSON, CSV or Excel.

Supported inputs

  • Company slugnubank, magazine-luiza (the part of the company URL after /empresa/)
  • Company name — free text, slugified automatically
  • Company URLhttps://www.reclameaqui.com.br/empresa/nubank/
  • Complaint URLhttps://www.reclameaqui.com.br/nubank/titulo-da-reclamacao_ABC123/, scraped directly with its reply thread

Not supported: private or moderated-out complaints, anything behind a ReclameAqui login (company dashboards, HugMe/RA Chat tickets), consumer personal data that the platform itself masks, and platform-wide free-text complaint search (ReclameAqui's own public search route is currently broken server-side — scrape by company instead).

Use cases

AudienceWhat they get
Brand & reputation teamsTrack your RA score, response and resolution rates over time, and read every complaint the moment it lands
Competitive analystsCompare rivals' reputation scorecards, resolution rates and top problem types side by side
Customer-experience teamsMine recurring problemType / productType clusters to find what actually breaks
Market researchersQuantify consumer pain by segment across Brazil's biggest complaint dataset
Support & opsGet a Telegram or Slack ping the moment a new complaint is filed against your brand
Sales teamsFind companies with poor resolution rates, enriched with business contact emails

How it works

  1. Resolve the company — a slug, name or URL becomes a company profile via ReclameAqui's public company API.
  2. Read the reputation scorecard — the 6- and 12-month reputation indexes are parsed into clean numeric fields.
  3. Page the complaints — the complaint feed is walked ten at a time (the platform's fixed page size), filtered by status, date and keyword.
  4. Rebuild each thread — with includeInteractions on, each complaint page is opened and its full company/consumer exchange is reconstructed and decoded.
  5. Classify and emit — in incremental mode every record is diffed against the previous run, then pushed as a clean row and optionally sent to your notification channels.

Proxy requirement

None. ReclameAqui gates on the client's TLS fingerprint rather than the exit IP, which this actor handles natively — the default Apify proxy is enough and datacenter IPs work fine. The platform does rate-limit bursts, so the actor ships a politeness delay and a retry ladder that escalates automatically. Configure the proxy input only if you want traffic routed through your own pool.

Input configuration

FieldTypeDefaultDescription
companiesarray["nubank"]Company slugs, names or URLs to scrape
startUrlsarray[]Direct company or complaint URLs
includeCompanyProfilebooleantrueEmit one reputation record per company
scrapeComplaintsbooleantrueEmit complaint records
includeInteractionsbooleanfalseRebuild the full company reply thread (one extra request per complaint)
extractContactsbooleanfalseMine emails and phones out of complaint text
enrichEmailsbooleanfalseScrape each company's own website for business emails
statusFilterarray["LATEST"]LATEST, PENDING, ANSWERED, EVALUATED, SOLVED, UNSOLVED
dateFrom / dateTostring""Restrict complaints to a date range (YYYY-MM-DD)
includeKeywords / excludeKeywordsarray[]Keep or drop complaints by keyword
solvedOnlybooleanfalseOnly complaints the consumer marked resolved
withReplyOnlybooleanfalseOnly complaints with a company answer
maxComplaintsPerCompanyinteger100Per-company cap (0 = unlimited)
maxItemsinteger1000Hard cap across all records
maxConcurrencyinteger5Parallel detail fetches
minDelayMsinteger250Politeness delay between requests
compactbooleanfalseSlim field projection
descriptionFormatstringallall, text, html, markdown
descriptionMaxLengthinteger0Truncate descriptions (0 = no limit)
excludeEmptyFieldsbooleanfalseDrop null/empty keys
flattenbooleantrueFlatten nested objects for CSV export
incrementalModebooleanfalseEmit only what changed since the last run
stateKeystring""Override the incremental state key
detectUpdatesbooleanfalseRe-fetch known complaints to catch edits and new replies
emitUnchanged / emitExpiredbooleanfalseAlso emit unchanged / disappeared records
telegramToken + telegramChatIdstring""Telegram notifications
slackWebhookUrl / discordWebhookUrlstring""Slack / Discord notifications
whatsappAccessToken + whatsappPhoneNumberId + whatsappTostring""WhatsApp Cloud API notifications
webhookUrl + webhookHeadersstring / object""Generic JSON webhook
notificationLimitinteger10Records listed per notification
notifyOnlyNewbooleantrueOnly notify on NEW records
proxyobjectApify proxyOptional proxy override

Output overview

Two record types land in the same dataset, tagged by recordType:

  • company — one reputation scorecard per company
  • complaint — one row per complaint, with its reply thread when enabled

Output sample

A company reputation record:

{
"recordType": "company",
"id": "88850",
"shortname": "nubank",
"companyName": "Nubank",
"cnpj": "18236120000158",
"url": "https://www.reclameaqui.com.br/empresa/nubank/",
"website": "http://www.nubank.com.br",
"segment": "Bancos e Financeiras",
"finalScore": 8.7,
"reputationLabel": "Ótimo",
"raStatus": "RA1000",
"hasStamp": true,
"consumerScore": 7.69,
"responseRate": 99.1,
"resolutionRate": 92.9,
"recommendationRate": 81.1,
"averageAnswerTimeHuman": "4d 8h",
"totalComplaints": 57833,
"complaints6Months": 57133,
"complaintsLast30Days": 9112,
"phones": ["0800 591 2117"]
}

A complaint record with its reply thread:

{
"recordType": "complaint",
"id": "3PwlaEaLWR4wGswj",
"url": "https://www.reclameaqui.com.br/nubank/problema-com-emprestimo_3PwlaEaLWR4wGswj/",
"title": "Problema com empréstimo",
"description": "No dia 14 de maio de 2026 fui vítima de [Editado pelo Reclame Aqui] onde a pessoa se apresentava como gerente do banco …",
"status": "ANSWERED",
"createdAt": "2026-08-03T15:12:30.000Z",
"solved": false,
"evaluated": false,
"consumerCity": "Belo Horizonte",
"consumerState": "MG",
"companyId": "88850",
"companyName": "Nubank",
"problemType": "Outro problema",
"productType": "Outro Tipo de produto/Serviço",
"hasReply": true,
"interactionCount": 1,
"interactions": [
{
"author": "company",
"type": "ANSWER",
"createdAt": "2026-08-03T17:33:59.000Z",
"messageText": "Olá, Adelisete.\n\nSomos o time especialista de Reclame Aqui do Nubank e recebemos a sua manifestação …"
}
]
}

Key output fields

Complaint records

FieldDescription
id, url, titleComplaint identity and public link
description / descriptionHtml / descriptionMarkdownComplaint body in three formats
statusPENDING, ANSWERED, REPLY, SOLVED, …
createdAt, modifiedAt, firstReplyAt, expiresAt, daysRemainingISO-8601 timeline
solved, evaluated, dealAgain, consumerScoreOutcome as rated by the consumer
consumerName, consumerCity, consumerStateWho complained and from where
problemType, productType, categoryReclameAqui's own taxonomy
interactions[]Ordered thread: author (company/consumer), type, createdAt, message in HTML / text / Markdown
companyAnswer, interactionCount, hasReplyReply-thread shortcuts
contactEmails, contactPhonesMined from the text when extractContacts is on

Company records

FieldDescription
companyName, fantasyName, shortname, cnpjCompany identity
finalScore, reputationLabel, raStatus, hasStampHeadline reputation (0–10, Ótimo/Bom/Regular/Ruim, RA1000 seal)
responseRate, resolutionRate, recommendationRate, consumerScoreThe rates buyers actually judge a brand on
averageAnswerTimeSeconds / averageAnswerTimeHumanHow fast the company replies
totalComplaints, complaints6Months, complaints12Months, complaintsLast30DaysVolume by period
scorecard6Months, scorecard12MonthsFull parsed index for each period
segment, secondarySegmentsMarket segment and ranking context
website, phones, emails, addressContact surface
enrichedEmailsBusiness emails discovered on the company's own site (enrichEmails)

FAQ

How many complaints can I get? As many as the company has — large brands carry hundreds of thousands. Use maxComplaintsPerCompany and maxItems to cap a run. ReclameAqui serves its feed ten complaints per request, so very large pulls take time; the politeness delay is there to keep the run stable.

Why do some complaints have no reply thread? Turn on includeInteractions — the reply thread is not in ReclameAqui's list feed and is only fetched when you ask for it. Also note the default LATEST bucket returns the newest complaints, most of which have not been answered yet. Use statusFilter: ["ANSWERED"] or ["SOLVED"] to target complaints that carry a company reply.

Why is some complaint text replaced with asterisks or "[Editado pelo Reclame AQUI]"? That masking is applied by ReclameAqui itself to profanity and personal data before publication. The actor returns the text exactly as the platform publishes it.

Does it support recurring monitoring? Yes. Set incrementalMode: true and schedule the actor. Each run emits only NEW and UPDATED records, so ongoing brand monitoring costs a fraction of the initial pull. Add detectUpdates: true to catch new company replies on complaints you already have.

Do I need a proxy? No. The default works, and datacenter IPs are fine — see the Proxy requirement section above.

Support

Found a bug or need a field that isn't there? Open an issue on the actor's Issues tab — issues are read and acted on.

Additional services

Need a custom scraper, an enrichment pipeline, or this data delivered on a schedule to your warehouse? Get in touch through the Apify profile.

Explore more scrapers

Check the publisher's profile for the rest of the reviews and reputation suite — Trustpilot, G2, Capterra, TrustRadius, Google Maps reviews and more — plus job-board and directory scrapers.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/reclameaqui-scraper).

Purpose: Scrapes ReclameAqui.com.br consumer complaints and company reputation scorecards, optionally reconstructing each complaint's full company/consumer reply thread, with incremental diff runs and webhook notifications.

Minimal input:

{
"companies": ["nubank"],
"statusFilter": ["ANSWERED"],
"includeInteractions": true,
"maxItems": 25,
"compact": true
}

Output: two record types in one dataset, distinguished by recordType. company rows carry the reputation scorecard (finalScore, reputationLabel, raStatus, responseRate, resolutionRate, recommendationRate, averageAnswerTime, complaint counts, CNPJ, segment, website, phones). complaint rows carry id, url, title, description (text/HTML/Markdown), status, ISO dates, solved/evaluated, consumer city and state, problemType, productType, and interactions[] when enabled. compact: true returns core fields only, ideal for LLM context.

Behaviors an agent should know:

  • companies accepts slugs, names or full URLs interchangeably; complaint URLs in startUrls are scraped directly.
  • The default statusFilter of LATEST returns mostly unanswered complaints. To get reply threads, filter to ANSWERED, EVALUATED or SOLVED and set includeInteractions: true.
  • includeInteractions costs one extra request per complaint — leave it off for fast, cheap pulls.
  • maxItems caps kept rows; filters drop rows before they are stored or billed.
  • incrementalMode: true with a stable stateKey makes repeat calls return only new or changed records — the cheapest way to poll a brand.
  • Platform-wide free-text complaint search is not available (ReclameAqui's public search route returns a server error); scrape by company.
  • Billing: pay-per-event — see the Pricing tab. Company records cost more than complaints; enrichEmails is billed per email found and never charged for misses.

⚠️ Disclaimer

This actor collects only publicly available complaint and company-reputation data, exactly as ReclameAqui publishes it — including the platform's own masking of personal data and profanity. Use it for legitimate research, brand monitoring and competitive analysis, and respect ReclameAqui's terms of service along with applicable laws in your jurisdiction, including Brazil's LGPD and other data-protection rules. Complaints contain personal narratives from real consumers; you are responsible for how you store and use that data.

SEO Keywords

reclame aqui scraper, reclameaqui scraper, reclame aqui api, reclameaqui.com.br scraper, brazil consumer complaints scraper, brazilian complaints data, company reputation scraper brazil, ra1000 reputation data, brand monitoring brazil, consumer complaint analysis, cnpj company reputation, customer complaint api, reclame aqui reviews export, brazil customer experience data, complaint reply thread scraper, reputation score scraper, competitor complaint analysis, brazil market research data, lgpd compliant complaint data, reclame aqui monitoring