Reclame Aqui Scraper - Complaints & Reputation avatar

Reclame Aqui Scraper - Complaints & Reputation

Pricing

from $8.90 / 1,000 rows

Go to Apify Store
Reclame Aqui Scraper - Complaints & Reputation

Reclame Aqui Scraper - Complaints & Reputation

Scrape Reclame Aqui, Brazil's consumer complaint site. One row per company: reputation score, index status, answer and resolution rates over five periods. One row per complaint: text, the company's reply, the consumer's 0 to 10 rating, city and date. $9.20 per 1,000 rows.

Pricing

from $8.90 / 1,000 rows

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape Reclame Aqui complaints and company reputation scores: give it a company, as a Reclame Aqui link, the short name from that link or the brand typed out. You get one company row with the reputation score, index status and answer, resolution and buy-again rates for five periods, plus one row per complaint with the full text, the company's reply, the consumer's 0 to 10 rating, city, state and dates.

Two things to know first. Big retailers are split into several pages with separate scores, so a typed brand name picks one of them. And one listing stops at 519 complaints, the site's own limit.

InputCompanies, as a Reclame Aqui link, a short name or a brand name
OutputOne row per company: reputation score, index status, answer, resolution and buy-again rates for five periods. One row per complaint: text, company reply, consumer rating, city, state, dates
Ceiling519 complaints per company for each sort order and combination of filters
Account neededNone
Price$9.20 per 1,000 rows on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 540

🔍 What Reclame Aqui Scraper does

The company row carries the figures the company's own page shows, for the site's default period, the last six months. The other periods sit in periods in the same shape: last 12 months, last calendar year, the year before that and the last three years. A year-on-year comparison needs no second run.

Complaint rows come newest first, or oldest first if you ask. Oldest first on Casas Bahia's online store went back to a complaint filed on 7 May 2013.

A typed brand is looked up and the best match wins. That matters, because "Loja Online", "Lojas Físicas" and "Marketplace" are separate companies with separate scores. Typing Casas Bahia picked casas-bahia-loja-online and listed four other pages for the brand in otherPagesForThisBrand. Paste the exact link when you care which one you get.

The company's reply lives on each complaint's own page, so includeCompanyReply reads that page too. Fifty complaints and the company row took 41 seconds with replies on in a test run; sixty without replies took 8.

About personal data. Reclame Aqui withholds the consumer's name, e-mail and IP, so the rows carry only city and state about the person. Every text field is also scanned for e-mail addresses, CPF, CNPJ, CEP and Brazilian phone numbers, which are replaced with [CPF removido] and the like. Names get the same treatment where they usually turn up: the greeting a company's reply opens with (Olá, Maria, Prezado Sr. João), a consumer's sign-off or meu nome é, and that same name anywhere else in the complaint. Each becomes [nome removido]. It is a pattern match, so a name written anywhere else comes through as written, and so do the first names company staff sign with.

📋 What data you get from each Reclame Aqui company and complaint

What you getField
The company: names, id, page, website, CNPJ, segment, logocompanyName, tradingName, companyId, shortname, url, website, cnpj, segment, secondarySegments, logoUrl
Reputation for the default periodreputationScore, indexStatus, indexStatusLabel, consumerScore
Answer, resolution and buy-again rates, and the average answer timeansweredPercent, resolvedPercent, wouldBuyAgainPercent, averageAnswerHours
The same figures for all five periods, with dates and complaint countsperiods
Complaint totalscomplaintsTotalAllTime, complaintsLast30Days
Profile detailsverifiedCompany, accountStatus, city, state, profileCreatedAt, socialProfiles
How a typed name was matched, and the brand's other pagesmatchedBy, otherPagesForThisBrand
The complaint: title, text, extra details, linkcomplaintId, complaintNumber, title, text, extraDetails, url
Where it standsstatus, answered, resolved, resolutionStatus, isCompliment
The consumer's verdictrated, consumerScore, consumerComment, wouldBuyAgain
The company's reply and the back-and-forthcompanyReply, companyReplyAt, companyReplyCount, consumerReplies
Where the consumer is and when they postedcity, state, publishedAt, updatedAt, firstReplyAt

▶️ How to scrape Reclame Aqui complaints

  1. Open Reclame Aqui Scraper and click Try for free.
  2. Put one company per line in Companies.
  3. Set Complaints per company, or 0 for the company row only.
  4. Pick any filters under Complaint status, Resolution and Only complaints the consumer rated.
  5. Click Start, then download the dataset as JSON, CSV or Excel.

Start it with Companies empty and you get one labelled sample row, which is not charged.

💰 How much does it cost to scrape Reclame Aqui complaints?

$9.20 per 1,000 rows on the Free plan. Paid plans pay a little less: $9.10 on Starter, $9.00 on Scale and $8.90 on Business. A company row and a complaint row cost the same, so the reputation card alone is one row. On the free plan, the $5 Apify gives you each month covers about 540 rows.

Not charged: the sample row, every note below, the lookup behind a typed brand name, and a company listed twice, which is read once. If you set a maximum cost for the run, it stops there and says so in its status.

📥 What you give it

{
"companies": ["https://www.reclameaqui.com.br/empresa/nubank/", "magazine-luiza-loja-online", "Casas Bahia"],
"maxComplaintsPerCompany": 50,
"includeCompanyReply": true,
"sortOrder": "newest"
}
FieldIf you leave it outWhat it is
companiesa free sample rowOne per line: a company page link, the short name from it (nubank) or the brand written out (Magazine Luiza).
maxComplaintsPerCompany50Complaints per company. The site lists at most 519 per sort order and filter combination, so a higher number stops there. 0 returns the company row only.
includeCompanyProfileonOne row per company with the reputation figures for every period.
includeCompanyReplyonThe company's reply and the consumer's follow-ups. It reads one more page per complaint, so the run takes longer.
complaintStatusanyANSWERED (the company replied) or PENDING (it has not). The only two Reclame Aqui filters on.
resolutionanysolved or unsolved, as the consumer marked it.
onlyRatedoffOnly complaints the consumer came back and scored.
sortOrdernewestnewest or oldest. Oldest starts at the company's very first complaint.
proxyConfigurationnot usedOnly for servers of your own, which are used as given. Leave it alone otherwise.

The form opens with nubank filled in, as an example.

📤 What you get back

A real company row from a real run, with periods cut to one of its five entries and the social links to two:

{
"ok": true,
"rowType": "company",
"companyId": "88850",
"companyName": "Nubank",
"tradingName": "Nubank",
"shortname": "nubank",
"url": "https://www.reclameaqui.com.br/empresa/nubank/",
"website": "http://www.nubank.com.br",
"description": "Somos uma fintech que nasceu para mudar como você lida com o seu dinheiro. Lutamos contra a burocracia para deixar você sempre no controle.",
"cnpj": "18236120000158",
"segment": "Bancos e Financeiras",
"segmentShortname": "bancos-e-financeiras",
"secondarySegments": ["Bancos Tradicionais e Digitais", "Cartões Private Label de Varejo e Mercados", "Bancos Digitais", "Melhores Emissoras e Bandeiras de Cartão de Crédito"],
"logoUrl": "https://raichu-uploads.s3.amazonaws.com/logo_nubank_S5jVIi.png",
"defaultPeriod": "last6Months",
"reputationScore": 8.7,
"indexStatus": "RA1000",
"indexStatusLabel": "RA1000",
"consumerScore": 7.73,
"answeredPercent": 100,
"resolvedPercent": 93.3,
"wouldBuyAgainPercent": 81.2,
"averageAnswerHours": 98.1,
"complaintsTotalAllTime": 60372,
"complaintsLast30Days": 9090,
"periods": [
{
"period": "last6Months",
"periodRaw": "SIX_MONTHS",
"from": "2026-03-01T00:00:00",
"to": "2026-08-31T23:59:59",
"reputationScore": 8.7,
"indexStatus": "RA1000",
"indexStatusLabel": "RA1000",
"consumerScore": 7.73,
"complaints": 56984,
"complaintsAnswered": 56960,
"complaintsNotAnswered": 8,
"complaintsRated": 24921,
"answeredPercent": 100,
"resolvedPercent": 93.3,
"wouldBuyAgainPercent": 81.2,
"averageAnswerHours": 98.1
}
],
"verifiedCompany": true,
"accountStatus": "ACTIVE",
"city": "SAO PAULO",
"state": "SP",
"profileCreatedAt": "2014-12-12T10:47:00",
"profileUpdatedAt": "2026-09-29T09:16:34",
"socialProfiles": [
{ "type": "facebook", "url": "https://www.facebook.com/nubankbrasil" },
{ "type": "instagram", "url": "https://www.instagram.com/nubank/" }
],
"matchedBy": "shortname",
"inputValue": "nubank",
"otherPagesForThisBrand": [],
"scrapedAt": "2026-09-30T02:31:39.934Z"
}

And a real complaint row, with the company's reply cut short:

{
"ok": true,
"rowType": "complaint",
"complaintId": "s0QQZwQobNrF-S6Q",
"complaintNumber": "259386859",
"companyId": "88850",
"companyName": "Nubank",
"companyShortname": "nubank",
"title": "Solicito remoção de negativação de dívida já quitada",
"text": "Complaint text, cut short here.",
"extraDetails": null,
"status": "ANSWERED",
"answered": true,
"resolved": true,
"rated": true,
"consumerScore": 10,
"consumerComment": "Obrigada",
"wouldBuyAgain": true,
"isCompliment": false,
"companyReply": "Olá! Esperamos que você esteja bem.\n\nSomos da equipe especializada do Nubank e estamos aqui para ajudar a esclarecer qualquer dúvida que você possa ter...",
"companyReplyAt": "2026-09-18T16:12:01",
"companyReplyCount": 1,
"consumerReplies": [{ "text": "Obrigada", "at": "2026-09-18T17:48:51" }],
"resolutionStatus": "SOLVED",
"city": "Taboão da Serra",
"state": "SP",
"publishedAt": "2026-09-18T05:00:22",
"updatedAt": "2026-09-18T17:48:51",
"firstReplyAt": "2026-09-18T16:12:01",
"url": "https://www.reclameaqui.com.br/nubank/solicito-remocao-de-negativacao-de-divida-ja-quitada_s0QQZwQobNrF-S6Q/",
"position": 6,
"scrapedAt": "2026-09-20T02:07:42.375Z"
}
FieldHow to read it
reputationScore, indexStatus, indexStatusLabelThe score out of 10 and the index, such as RA1000, GREAT or REGULAR, exactly as the site publishes them.
answeredPercent, resolvedPercent, wouldBuyAgainPercent, averageAnswerHoursThe site's own figures, carried through, not computed from your rows.
periodsThe same figures for each of the five periods, with their dates and complaint counts.
matchedBy, otherPagesForThisBrandHow the company was found, and the other pages the brand has when a typed name was matched.
status, answeredThe company's side: ANSWERED or PENDING.
resolved, rated, consumerScore, consumerComment, wouldBuyAgainThe consumer's side. resolved only means something once rated is true, so false on a two-day-old complaint means "not yet".
companyReply, companyReplyAt, consumerRepliesThe reply and the back-and-forth, when includeCompanyReply is on.

Null means the site has nothing there: the consumer's score and comment until they rate, the reply until the company answers or when includeCompanyReply is off, cnpj, website or socialProfiles when a company never filled them in, and the score and percentages when a company carries no index. [Editado pelo Reclame Aqui] inside a text is the site's own moderation.

🧾 Reading the output

Real rows have no charged field. Every free row carries charged: false, so dropping those leaves only companies and complaints.

RowHow to spot itCharged
A companyrowType: "company"yes
A complaintrowType: "complaint"yes
The sample_sample: trueno
A note_diagnostic: true, ok: false, with an errorCode, an error and a hintno

The sample row, which a run with no companies returns, carries ok: true and rowType: "complaint" like a real one. Filter on _sample or charged, not on those.

errorCodeWhat it means
COMPANY_NOT_FOUNDNo company page matches what you typed. Copy the short name out of the page's link.
BAD_INPUTNot a Reclame Aqui link, short name or brand.
NO_COMPLAINTSNo complaints for that company with those filters. Try with the filters cleared.
FETCH_FAILED, REFUSEDThe rest of that company could not be read on this run. The rows before the note are complete; run it again for the rest.

💡 What people use it for

  • Working through your own company's unanswered complaints, with complaintStatus set to PENDING.
  • Tracking a company's reputation on a schedule with maxComplaintsPerCompany at 0: one row a run, five periods in it.
  • Comparing answer and resolution rates across the banks or retailers in one sector.
  • Reading a company's record from its first complaint, oldest first.

🚧 What it does not do

  • No consumer names from the site. Reclame Aqui withholds them, and the ones in greetings and sign-offs are masked. A name typed anywhere else can still get through, see above.
  • 519 complaints per company for each order and filter combination. That is the site's own listing limit; oldest first reaches the other end.
  • No private or deleted complaints, and no attachments, images or audio.
  • No group roll-up. Sub-brands are separate companies, so ask for each page.
  • No sentiment scores, categories or summaries. It returns what the site says.
  • No translation. Complaints and replies stay in Portuguese.
  • It is not an official Reclame Aqui tool. Dami's Studio is independent and is not affiliated with or endorsed by Reclame Aqui, or by any other company named on this page.

🧭 Which review scraper do you need?

If you wantUse
Complaints and reputation scores for Brazilian companiesThis one
Reviews of a place on Google MapsGoogle Maps Reviews Scraper
Shop ratings and reviews on ShopeeShopee Shop Reviews & Ratings Scraper
App reviews from Google PlayGoogle Play Reviews Scraper

❓ Questions people ask

Do I need a Reclame Aqui login or an API key?

No. Everything here is what a signed-out visitor can see.

Is the reputation score the same one on the company's page?

Yes, for the same default period the page shows, the last six months. The other periods are in periods, so pick the matching one before you compare.

Can I get the complaints my own company received?

Yes. Put your company's page in companies and set complaintStatus to PENDING for everything still waiting on an answer.

Why did a brand name give me a different company page than I expected?

The brand has several. otherPagesForThisBrand lists the ones not picked; copy the short name you want.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/reclame-aqui-scraper. Either way the run happens on your Apify account at the same price.

The complaints are public, but they are personal data under the LGPD and similar laws, so have a reason for holding them and take care before republishing. Apify's write-up on the legality of web scraping is a good starting point. We are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page and send the input you used and the run ID. The note rows in the dataset usually name the reason already.