Keyword search
Enter keyword and, optionally, pageSize, state and city. The backend mounts the public search URL.
{
"target": "reclameaqui.com.br",
"type": "plp",
"keyword": "nubank",
"state": "SP",
"city": "São Paulo",
"pageSize": 10
} // docs
Searches companies in Reclame AQUI by URL or keyword and returns identity, location, verification, segments, and a reputation summary. Cost: 1 credit per request.
reclameaqui.com.br:plp · 1 credit per request
Standard credit cost. Your account pricing is shown in the sandbox.
Try this operation in the sandboxcurl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "reclameaqui.com.br",
"type": "plp",
"keyword": "nubank",
"state": "SP",
"city": "São Paulo",
"pageSize": 10
}' Keep your API key on your server. See the quickstart for authentication and response handling.
The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.
POST /v1/mcp · Bearer or X-API-Key authentication
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "reclameaqui_com_br_plp",
"arguments": {
"keyword": "nubank",
"state": "SP",
"city": "São Paulo",
"pageSize": 10,
"executionId": "exec_example_123"
}
}
} Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.
| Field | Type | Requirement | Rule | Default | Example |
|---|---|---|---|---|---|
| url URL extraction target. For some PLPs it can be omitted when API assembles URL from other fields. | string (URL) | Conditional | Send a public URL /busca/?q=... or enter keyword. Do not send both fields. | - | https://www.reclameaqui.com.br/busca/?q=nubank |
| keyword Keyword for PLP searches. In Google Search it represents the query sent to Google; in Booking PLP is mandatory; in other PLPs it can replace URL. | string | Conditional | Name or term used to search for companies. Mandatory when url is not sent. | - | nubank |
| pageSize Number of items per page. In Reclame AQUI PLP accepts from 1 to 50; in ILP the default font is e 5. | integer | Optional | Maximum number of companies returned, between 1 and 50. | 50 | 10 |
| city City used in structured searches for properties and vehicles and optionally in Catho PLP. In VivaReal, it requires state. | string | Optional | City name to restrict the search within UF. | - | São Paulo |
| state UF used in structured searches for properties and vehicles and optionally in Catho PLP. | string (UF 2 letters) | Optional | UF with two letters to narrow the search, for example SP. | - | SP |
| target Target source for extraction. | enum | Required | Always required and must be reclameaqui.com.br. | - | reclameaqui.com.br |
| type Extraction type: pdp, idp, plp, ilp, quote, review or places. | enum | Required | Always required and must be plp. | - | plp |
Enter keyword and, optionally, pageSize, state and city. The backend mounts the public search URL.
{
"target": "reclameaqui.com.br",
"type": "plp",
"keyword": "nubank",
"state": "SP",
"city": "São Paulo",
"pageSize": 10
} You can also directly send a URL /busca/ from Reclame AQUI.
{
"target": "reclameaqui.com.br",
"type": "plp",
"url": "https://www.reclameaqui.com.br/busca/?q=nubank",
"pageSize": 10
} Leaf paths and expected types. Field names and enum values are part of the API contract.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"data.source": "string",
"data.type": "string",
"data.parser": "\"1.0.0\"",
"data.url": "string (URL)",
"data.requestUrl": "string (URL)",
"data.extractedAt": "string (ISO datetime)",
"data.query": "string",
"data.limit": "integer",
"data.appliedFilters.state": "string | null",
"data.appliedFilters.city": "string | null",
"data.count": "integer",
"data.companies[].id": "string",
"data.companies[].name": "string | null",
"data.companies[].shortname": "string | null",
"data.companies[].profileUrl": "string (URL) | null",
"data.companies[].website": "string (URL) | null",
"data.companies[].logoUrl": "string (URL) | null",
"data.companies[].documents[]": "string",
"data.companies[].verified": "boolean",
"data.companies[].verificationStatus": "string | null",
"data.companies[].reputation.status": "string | null",
"data.companies[].reputation.score": "number | null",
"data.companies[].reputation.complaintsCount": "integer | null",
"data.companies[].reputation.solvedPercent": "number | null",
"data.companies[].segments.main.name": "string | null",
"data.companies[].segments.main.shortname": "string | null",
"data.companies[].segments.secondary.name": "string | null",
"data.companies[].segments.secondary.shortname": "string | null",
"data.companies[].location.city": "string | null",
"data.companies[].location.state": "string | null",
"data.companies[].createdAt": "string (ISO datetime) | null"
} Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.
{
"requestId": "req_01K0RASEARCHNUBANK000000001",
"executionId": "exe_01K0RASEARCHNUBANK000000002",
"data": {
"source": "reclameaqui.com.br",
"type": "plp",
"parser": "1.0.0",
"url": "https://www.reclameaqui.com.br/busca/?q=nubank&state=SP&city=S%C3%A3o+Paulo",
"requestUrl": "https://www.reclameaqui.com.br/busca/?q=nubank&state=SP&city=S%C3%A3o+Paulo",
"extractedAt": "2026-07-12T12:30:00.000Z",
"query": "nubank",
"limit": 10,
"appliedFilters": {
"state": "SP",
"city": "São Paulo"
},
"count": 1,
"companies": [
{
"id": "88850",
"name": "Nubank",
"shortname": "nubank",
"profileUrl": "https://www.reclameaqui.com.br/empresa/nubank/",
"website": "http://www.nubank.com.br",
"logoUrl": "https://raichu-uploads.s3.amazonaws.com/logo_nubank_ePbSGr.png",
"documents": [
"18236120000158"
],
"verified": true,
"verificationStatus": "SHOW_VERIFIED",
"reputation": {
"status": "RA1000",
"score": 8.7,
"complaintsCount": 57922,
"solvedPercent": 92.9
},
"segments": {
"main": {
"name": "Bancos e Financeiras",
"shortname": "bancos-e-financeiras"
},
"secondary": {
"name": "Bancos Tradicionais e Digitais",
"shortname": "bancos-tradicionais-e-digitais"
}
},
"location": {
"city": "SAO PAULO",
"state": "SP"
},
"createdAt": "2014-12-12T10:47:00"
}
]
}
} | Path | Type | Description | Example |
|---|---|---|---|
| data.appliedFilters.city | string | null | City filter recognized by the source, if applicable. | São Paulo |
| data.appliedFilters.state | string | null | UF filter recognized by the source, if any. | SP |
| data.companies[].createdAt | string (ISO datetime) | null | Date of creation/registration of the company in the source. | 2014-12-12T10:47:00 |
| data.companies[].documents[] | string | Public business documents associated with the profile, such as CNPJ. | 18236120000158 |
| data.companies[].id | string | Textual identifier of the company in the source. | 88850 |
| data.companies[].location.city | string | null | City associated with the profile. | SAO PAULO |
| data.companies[].location.state | string | null | UF associated with the profile. | SP |
| data.companies[].logoUrl | string (URL) | null | URL from the company's public logo. | https://raichu-uploads.s3.amazonaws.com/logo_nubank_ePbSGr.png |
| data.companies[].name | string | null | Public company name. | Nubank |
| data.companies[].profileUrl | string (URL) | null | URL canonical company profile. | https://www.reclameaqui.com.br/empresa/nubank/ |
| data.companies[].reputation.complaintsCount | integer | null | Volume of complaints considered in the summary. | 57922 |
| data.companies[].reputation.score | number | null | Aggregated reputation score. | 8.7 |
| data.companies[].reputation.solvedPercent | number | null | Percentage of complaints resolved. | 92.9 |
| data.companies[].reputation.status | string | null | Textual banner or seal of reputation. | RA1000 |
| data.companies[].segments.main.name | string | null | Name of the main thread. | Bancos e Financeiras |
| data.companies[].segments.main.shortname | string | null | Main thread slug. | bancos-e-financeiras |
| data.companies[].segments.secondary.name | string | null | Secondary segment name when available. | Bancos Tradicionais e Digitais |
| data.companies[].segments.secondary.shortname | string | null | Secondary segment slug when available. | bancos-tradicionais-e-digitais |
| data.companies[].shortname | string | null | Public slug used in company URLs. | nubank |
| data.companies[].verificationStatus | string | null | Verbatim status of the check. | SHOW_VERIFIED |
| data.companies[].verified | boolean | Indicates whether the company is verified on the platform. | true |
| data.companies[].website | string (URL) | null | Institutional website reported in Reclame AQUI. | http://www.nubank.com.br |
| data.count | integer | Number of companies returned in array companies. | 1 |
| data.extractedAt | string (ISO datetime) | Extraction Timestamp UTC. | 2026-07-12T12:30:00.000Z |
| data.limit | integer | Limit applied, between 1 and 50. | 10 |
| data.parser | "1.0.0" | Stable version of the API response format. | 1.0.0 |
| data.query | string | Standard term used in the search. | nubank |
| data.requestUrl | string (URL) | Same value as `data.url`; never exposes the queried internal endpoint. | https://www.reclameaqui.com.br/busca/?q=nubank&state=SP&city=S%C3%A3o+Paulo |
| data.source | string | Fixed extraction source. | reclameaqui.com.br |
| data.type | string | Fixed extraction type. | plp |
| data.url | string (URL) | URL canonical public search on Reclame AQUI. | https://www.reclameaqui.com.br/busca/?q=nubank&state=SP&city=S%C3%A3o+Paulo |
| executionId | string (uuid) | ID internal to the execution processed by the worker. | exe_01K0RASEARCHNUBANK000000002 |
| requestId | string (uuid) | ID from request HTTP to GeckoAPI. | req_01K0RASEARCHNUBANK000000001 |
When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.
| HTTP status | Error code | Meaning |
|---|---|---|
| 400 | INVALID_PAYLOAD | Invalid JSON or a request that violates the documented validation rules. |
| 401 | UNAUTHORIZED | Missing authorization or an invalid API key or token. |
| 402 | INSUFFICIENT_CREDITS | The account has insufficient credits for this operation. |
| 403 | FORBIDDEN | The account does not have access, or the API is temporarily disabled. |
| 409 | EXECUTION_CONFLICT | The execution identifier conflicts with an incompatible execution state. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | A rate limit or simultaneous request limit was exceeded. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERROR | An upstream, worker or gateway failure. Failed requests follow the platform refund policy. |