Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Reclame Aqui Scraper icon

Reclame Aqui Scraper

Scrape Reclame Aqui complaints and company reputation: score, complaint text, company reply, status, city and date. No complainant names, no contact data.

42 runs on Apify $0.0092 per row ($9.2 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust companies, maxComplaintsPerCompany, includeCompanyProfile (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0092 per row = $9.2 per 1,000

You are charged forWhenPrice
Row returnedOne complaint or company profile row returned in the dataset. Diagnostic rows and the labelled sample row are not charged.$0.0092

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
companiesOne company per line. A Reclame Aqui page URL (https://www.reclameaqui.com.br/empresa/nubank/), the short name from that URL (nubank), or the brand written out (Magazine Luiza). Written-out names are looked up and the best match is used — big retailers are split into several pages (loja online, loja física, marketplace), so paste the exact URL when you care which one you get.array
maxComplaintsPerCompanyHow many complaints to pull for each company, newest first. Set 0 to get the company profile only. Reclame Aqui's own listing stops at 5100 complaints per filter combination, so that is the ceiling here too.integer
includeCompanyProfileWrites one row per company with the reputation score, the index status (RA1000, Otimo, Bom, Regular, Nao Recomendada), and the answer, resolution and would-buy-again rates for every period Reclame Aqui publishes.boolean
includeCompanyReplyReads each complaint's own page to get what the company actually wrote back, plus the consumer's follow-ups. This is one extra request per complaint, so a run with it on takes roughly twice as long. Turn it off if you only need titles, status and ratings.boolean
complaintStatusReclame Aqui only filters on these two. "Answered" means the company has replied at least once; "Waiting for a reply" means it has not.string
resolutionOnly complaints the consumer marked as resolved, or only the ones they marked unresolved. Both of these imply the consumer came back and rated the outcome.string
onlyRatedKeeps the complaints that have a 0-10 score and a closing comment from the consumer. Most recent complaints do not yet.boolean
sortOrderNewest first is what the site shows. Oldest first starts at the company's very first complaint, which is the way to read a company's history from the beginning.string

What you get

A structured dataset — each result includes fields like:

rowTypecompanyNamereputationScoretitlestatusresolvedconsumerScorecompanyReplycitystatepublishedAturl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Reclame Aqui Scraper: Brazilian consumer complaints, company replies and 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. Big retailers are split into several pages with separate scores, so a typed brand name picks one of them, and one listing stops at 5,100 complaints.

InputCompanies, as a Reclame Aqui link, a short name or a brand name
OutputOne row per company and one row per complaint
Ceiling5,100 complaints per company for each combination of filters
Account neededNone
Price$9.20 per 1,000 rows, flat on every plan

🔍 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 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).
maxComplaintsPerCompany500 to 5,100 complaints per company. 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 your own servers. Addresses you list here 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": "Gostaria de solicitar a remoção da negativação de uma dívida já quitada com a financeira de vocês está impactando muito em não conseguir crédito com outras financeiras quitei a dívida e ela segue como vencida no Bacen desde já agradeço",
  "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"
}
FieldWhat it is
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.
city, state, publishedAt, urlWhere the consumer is, when they posted, and the public page.

Null means the site has nothing there: the consumer's score and comment until they rate, the reply until the company answers, 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, REFUSEDReclame Aqui stopped answering for that company. The rows before the note are complete; run it again for the rest.

▶️ How to run it

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.

💰 How much does it cost?

$9.20 per 1,000 rows, flat on every Apify plan. A company row and a complaint row cost the same, so the reputation card alone is one row.

Not charged: the sample row, every note above, 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 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.

  • 5,100 complaints per company for each combination of filters. That is the site's own listing

limit. A different status, resolution or rating filter, or oldest first, opens another slice.

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

🧭 Which review scraper do you need?

If you wantUse
Brazilian consumer complaints and company reputationThis one
Trustpilot reviews for any companyTrustpilot Scraper
Google Maps reviews for a placeGoogle Maps Reviews Scraper
Software reviews on G2G2 Reviews Scraper
Software reviews on Capterra, with five scores eachCapterra 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 score the same one on the company's page? Yes, for the same default period the page shows.

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 is companyReply null on some rows? The company has not replied yet, or includeCompanyReply was off.

Why did a brand name give me a different page than I expected? The brand has several. otherPagesForThisBrand lists the ones not picked; copy the short name you want.

Is this legal? 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.