
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape ReclameAqui (Brazil) consumer complaints with the full company reply thread, plus company reputation: score, RA1000 status, response and resolution rates, segment ranking, top problems, CNPJ and contacts. By company, URL or keyword search.
Get Brazil's consumer complaints from ReclameAqui as clean data: the full complaint text, the whole conversation with the company (every company answer, consumer reply and final evaluation), status, score and taxonomy, plus each company's reputation scorecard with RA1000 status, response and resolution rates, segment ranking, top problems, CNPJ and contacts. Search by company, URL or keyword. No login, no browser, and 10 complaints with their reply threads arrive in about 15 seconds.
interactions[], the ordered conversation with company answers (author: company) and consumer replies and the final evaluation (author: consumer), as HTML and plain text with timestamps. companyAnswer holds the first company answer.analysis adds hasCompanyReply, firstReplyDelayDays, resolutionDelayDays, isOverdue and a riskLevel; companies get scoreTrend and complaintVolumeTrend.nubank, a name like Magazine Luiza, or a company URL), and/or search complaints with keywords like atraso entrega.| Field | What it does |
|---|---|
companies | Slugs (nubank), names (Magazine Luiza) or company URLs |
searchQueries | Free-text complaint search across every company |
startUrls | Complaint pages, filtered company list pages or search pages from reclameaqui.com.br |
maxComplaintsPerCompany | Complaints per company or search query (default 20, 0 = all the site lists) |
maxItems | Cap on all saved results (0 = no cap) |
statusFilter | LATEST, NOT_ANSWERED, ANSWERED, EVALUATED, SOLVED, NOT_SOLVED |
dateFrom, dateTo | Only complaints created in this window (YYYY-MM-DD) |
companyKeyword | Only complaints that mention a word or phrase, inside each company |
includeCompanyProfile | One reputation record per company (on by default) |
scrapeComplaints | Save complaints (on by default) |
includeInteractions | Open each complaint for full text and the reply thread (on by default) |
extractContacts | Pull emails, phones, links and social profiles out of the texts |
{
"companies": ["nubank", "Magazine Luiza"],
"searchQueries": ["cobrança indevida"],
"maxComplaintsPerCompany": 20,
"statusFilter": ["LATEST"],
"includeCompanyProfile": true,
"includeInteractions": true
}
Each row is a complaint (recordType: "complaint") or a company (recordType: "company"). The Complaints and Companies table views split them.
| Complaint field | Meaning |
|---|---|
id, legacyId, url, title | Complaint identity |
description, descriptionHtml, descriptionMarkdown, snippet | Full text in several formats |
status, statusLabel, solved, evaluated, score, dealAgain | Outcome and the consumer's rating |
created, userCity, userState | When and where |
category, problemType, productType | {id, name} taxonomy |
interactions[], interactionsCount, companyAnswer | The conversation |
analysis | Reply and resolution delays, overdue flag, risk level |
companyId, companySlug, companyName | The company |
extractedEmails, extractedPhones, extractedUrls, socialProfiles | Contacts found in the texts |
| Company field | Meaning |
|---|---|
name, shortname, companyUrl, website, documents (CNPJ) | Identity |
finalScore, consumerScore, reputationLabel, raStatus, isRA1000 | Reputation |
responseRate, resolutionRate, recommendationRate, avgResponseTimeHuman | Service rates |
complaintsTotal, complaints30Days, complaints6Months, complaints12Months | Volumes |
segmentRankingPosition, segmentRankingName, mainSegment, mainProblems[] | Ranking and top problems |
reputationHistory, scoreTrend, complaintVolumeTrend | History and trends |
phones, emails, address, socialNetworks | Contacts |
Sample complaint (fictional people, real shape):
{
"recordType": "complaint",
"id": "ExAmPlE1234abcd",
"legacyId": 261900000,
"companyId": "29266",
"companySlug": "magazine-luiza-loja-online",
"companyName": "Magazine Luiza - Loja Online",
"title": "Pedido não entregue e sem resposta da transportadora",
"description": "Comprei uma geladeira no dia 02/10 e o pedido consta como saiu para entrega há uma semana...",
"url": "https://www.reclameaqui.com.br/magazine-luiza-loja-online/pedido-nao-entregue_ExAmPlE1234abcd/",
"status": "ANSWERED",
"statusLabel": "Resolvido",
"solved": true,
"evaluated": true,
"score": 9,
"dealAgain": true,
"created": "2026-10-12T09:41:22",
"userCity": "Campinas",
"userState": "SP",
"category": {"id": "0000000000000275", "name": "Marketplace"},
"problemType": {"id": "0000000000001454", "name": "Produto não recebido"},
"productType": {"id": null, "name": "Geladeira"},
"interactionsCount": 2,
"interactions": [
{"id": "aBcD1234", "type": "ANSWER", "author": "company", "created": "2026-10-13T14:02:10", "message": "Olá, Ana! Sentimos muito pelo transtorno...", "messageText": "Olá, Ana! Sentimos muito pelo transtorno..."},
{"id": "eFgH5678", "type": "FINAL_ANSWER", "author": "consumer", "created": "2026-10-15T08:30:45", "message": "Recebi o produto, obrigada.", "messageText": "Recebi o produto, obrigada."}
],
"companyAnswer": "Olá, Ana! Sentimos muito pelo transtorno...",
"analysis": {"hasCompanyReply": true, "firstReplyDelayDays": 1, "resolutionDelayDays": 3, "isOverdue": false, "riskLevel": "low"},
"detailFetched": true,
"scrapedAt": "2026-10-21T02:15:00.000Z"
}
Sample company record (trimmed, values from a test run on 2026-10-21):
{
"recordType": "company",
"companyId": "88850",
"shortname": "nubank",
"name": "Nubank",
"companyUrl": "https://www.reclameaqui.com.br/empresa/nubank/",
"website": "http://www.nubank.com.br",
"finalScore": 8.7,
"consumerScore": 7.76,
"reputationLabel": "Ótimo",
"raStatus": "RA1000",
"isRA1000": true,
"segmentRankingPosition": 1,
"segmentRankingName": "Melhores Emissoras e Bandeiras de Cartão de Crédito",
"complaintsTotal": 60372,
"complaints30Days": 8932,
"complaints6Months": 56622,
"complaints12Months": 115123,
"responseRate": 99.9,
"resolutionRate": 93.1,
"recommendationRate": 81.2,
"avgResponseTimeHuman": "3 dias, 22 horas",
"documents": ["18236120000158"],
"phones": ["0800 591 2117"],
"mainProblems": [{"id": "0000000000000003", "name": "Cartões de Crédito", "count": 123616, "recurrencePct": 35.64}],
"scoreTrend": {"sixMonths": 8.7, "twelveMonths": 8.7, "delta": 0.0, "direction": "flat"}
}
You pay per saved result:
Example: one company record plus 100 complaints costs $2.04 in result fees. Platform usage (compute and proxy traffic) is billed on top and is small: well under $0.05 for that job in our tests. Companies that cannot be found and complaints left out by your filters are not charged.
Is it legal to scrape ReclameAqui? The scraper only reads pages anyone can open without an account. Complaints can include names and other personal data that consumers chose to publish, so check that your use follows the LGPD and ReclameAqui's terms.
Do I need a ReclameAqui account or a proxy? No account. The managed proxy is on by default with Brazilian residential exits, because ReclameAqui challenges datacenter traffic. Traffic is light: about 40 MB per 1,000 complaints with reply threads in our tests.
How many complaints can I get?
Up to about 258 per list (the site's own limit) for searches and filtered lists. For a company with "Latest" and the limit set high or to 0, the scraper also walks the company's complaints by category, product and problem type to reach thousands, without duplicates.
Why is a field empty?
Fields are null when ReclameAqui does not show them, for example score before the consumer evaluates, or category when the consumer did not pick one. With Full text and reply thread off, texts come from the list as the site shows them (personal data masked) and interactions stays empty.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it daily or weekly, and read new results through the API or the integrations.
NOT_ANSWERED and ANSWERED on the site; the evaluated, solved and not-solved buckets are applied to those ~258 newest matches.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
companiesarrayOptionalCompanies
Companies to scrape. Each entry can be a ReclameAqui slug (nubank), a company page URL (https://www.reclameaqui.com.br/empresa/nubank/) or a company name (Magazine Luiza). Names are matched with ReclameAqui's company search.
searchQueriesarrayOptionalSearch complaints
Free-text complaint searches across every company on ReclameAqui, for example "atraso entrega" or "cobrança indevida". Returns the newest matching complaints (the site shows up to about 258 per query).
startUrlsarrayOptionalReclameAqui URLs
Complaint pages (https://www.reclameaqui.com.br/nubank/titulo-da-reclamacao_ID/), company complaint lists with their filters (https://www.reclameaqui.com.br/empresa/nubank/lista-reclamacoes/?status=avaliadas) or search pages (https://www.reclameaqui.com.br/busca/?q=...). The type is detected automatically.
maxComplaintsPerCompanyintegerOptionaldefault 20Max complaints per company or search
Complaints to save for each company, company URL or search query. 0 = as many as the site lists (large companies are walked category by category to go past the site's ~258-per-list limit).
maxItemsintegerOptionaldefault 0Max results in total
Hard cap on saved results (company records plus complaints) across the whole run. 0 = no cap.
statusFilterarrayOptionaldefault ["LATEST"]Complaint status
Which complaints to pull. Latest = all recent complaints. Pick one or more of the other buckets to narrow it down.
dateFromstringOptionalComplaints from
Only complaints created on or after this date (YYYY-MM-DD), or a relative value such as "30 days".
dateTostringOptionalComplaints until
Only complaints created on or before this date (YYYY-MM-DD).
companyKeywordstringOptionalKeyword inside each company
Only complaints of the chosen companies that mention this word or phrase, for example "cartão" or "reembolso".
includeCompanyProfilebooleanOptionaldefault trueCompany reputation record
Save one record per company: reputation score, RA1000 status, response, resolution and recommendation rates, complaint counts (30 days, 6 and 12 months), segment ranking, top problem categories, CNPJ, phones, address and social links.
scrapeComplaintsbooleanOptionaldefault trueComplaints
Save the companies' complaints. Turn off for reputation records only.
includeInteractionsbooleanOptionaldefault trueFull text and reply thread
Open every complaint for its full text and the whole conversation: company answers, consumer replies and the final evaluation, plus category, problem and product names. Off: faster and lighter, with the text as the list shows it (personal data masked) and no thread.
extractContactsbooleanOptionaldefault trueExtract emails, phones and links
Find emails, phone numbers, URLs and social profiles in complaint texts, replies and company info.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Brazilian residential exits by default: ReclameAqui challenges datacenter traffic, and the run uses very little traffic (about 40 MB per 1,000 complaints with reply threads). With datacenter selected, any request type the site challenges moves to Brazilian residential exits on its own.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| recordType | any | Type |
| companyName | any | Company |
| name | any | Company |
| title | any | Title |
| statusLabel | any | Status |
| finalScore | any | Reputation score |
| reputationLabel | any | Reputation |
| created | any | Created |
| userState | any | State |
| interactionsCount | any | Replies |
| url | any | URL |
| companyUrl | any | URL |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Company reputation record | One company record with reputation score, rates, ranking, top problems and contacts. | $0.04 |
| Complaint | One complaint saved, with the full text and company reply thread when that option is on. | $0.02 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/reclameaqui-scraper').call({
"companies": [
"nubank"
],
"maxComplaintsPerCompany": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "BR"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/reclameaqui-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/reclameaqui-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.