// docs

Reclame AQUI PLP — Busca de empresas

Busca empresas no Reclame AQUI por URL ou palavra-chave e retorna identidade, localização, verificação, segmentos e um resumo de reputação. Custo: 1 crédito por request.

Nota importante: alguns campos podem retornar null em produção, dependendo da página de origem. Nesta documentação, os exemplos de output são preenchidos intencionalmente com valores não nulos para facilitar integração.

Quando a entidade consultada não existe na origem, o extract e a tool MCP retornam 200 com data: null e notFound: true. Esse caso é tratado como resposta concluída, não como erro de servidor.

Chamada HTTP

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "target": "reclameaqui.com.br",
  "type": "plp",
  "keyword": "nubank",
  "state": "SP",
  "city": "São Paulo",
  "pageSize": 10
}'

Chamada MCP

A mesma seam também aparece no MCP hospedado como uma tool dedicada. Os argumentos reaproveitam os campos do extract, mas target e type já ficam fixos pela tool.

Ver guia completo do MCP

Endpoint

POST /v1/mcp

Tool name

reclameaqui_com_br_plp

Auth

Bearer ou X-API-Key

reclameaqui_com_br_plp tools/call
{
  "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"
    }
  }
}

Possibilidades de input

Campos suportados nesta API do POST /v1/extract, com regras específicas de obrigatoriedade e condicionais.

Campo Tipo Status Regra Default Exemplo
url
URL alvo da extração. Para alguns PLPs pode ser omitida quando a API monta a URL a partir de outros campos.
string (URL) Condicional Envie uma URL pública /busca/?q=... ou informe keyword. Não envie os dois campos. - https://www.mercadolivre.com.br/p/MLB123456
keyword
Palavra-chave para buscas PLP. Em Google Search ela representa a query enviada ao Google; em Booking PLP é obrigatória; em outros PLPs pode substituir a URL.
string Condicional Nome ou termo usado para buscar empresas. Obrigatório quando url não for enviada. - iphone 15 pro max
pageSize
Quantidade de itens por pagina. No Reclame AQUI PLP aceita de 1 a 50; no ILP o default da fonte e 5.
integer Opcional Quantidade máxima de empresas retornadas, entre 1 e 50. 50 10
city
Cidade usada em buscas estruturadas de imóveis e veículos e opcionalmente em Catho PLP. Em VivaReal, requer state.
string Opcional Nome da cidade para restringir a busca dentro da UF. - Sao Paulo
state
UF usada em buscas estruturadas de imóveis e veículos e opcionalmente em Catho PLP.
string (UF 2 letras) Opcional UF com duas letras para restringir a busca, por exemplo SP. - SP
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatório e deve ser reclameaqui.com.br. - mercadolivre.com.br
type
Tipo da extração: pdp, idp, plp, ilp, quote, review ou places.
enum Obrigatório Sempre obrigatório e deve ser plp. - pdp

Exemplos de request

Busca por palavra-chave

Informe keyword e, opcionalmente, pageSize, state e city. O backend monta a URL pública de busca.

Busca por palavra-chave
{
  "target": "reclameaqui.com.br",
  "type": "plp",
  "keyword": "nubank",
  "state": "SP",
  "city": "São Paulo",
  "pageSize": 10
}

Busca por URL

Também é possível enviar diretamente uma URL /busca/ do Reclame AQUI.

Busca por URL
{
  "target": "reclameaqui.com.br",
  "type": "plp",
  "url": "https://www.reclameaqui.com.br/busca/?q=nubank",
  "pageSize": 10
}

Schema de response (leaf paths)

Mapa de paths de saída com tipo esperado para esta API.

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "data.source": "string",
  "data.type": "string",
  "data.parser": "string",
  "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"
}

Exemplo de response

responseExample
{
  "requestId": "req_01K0RASEARCHNUBANK000000001",
  "executionId": "exe_01K0RASEARCHNUBANK000000002",
  "data": {
    "source": "reclameaqui.com.br",
    "type": "plp",
    "parser": "company_search_api",
    "url": "https://www.reclameaqui.com.br/busca/?q=nubank&state=SP&city=S%C3%A3o+Paulo",
    "requestUrl": "https://api.reclameaqui.com.br/search-service/api/search-with-generic-analysis/company?query=nubank&size=10&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"
      }
    ]
  }
}

Referência completa de campos

Path Tipo Descrição Exemplo
data.appliedFilters.city string | null Filtro de cidade reconhecido pela fonte, quando houver. São Paulo
data.appliedFilters.state string | null Filtro de UF reconhecido pela fonte, quando houver. SP
data.companies[].createdAt string (ISO datetime) | null Data de criação/cadastro da empresa na fonte. 2014-12-12T10:47:00
data.companies[].documents[] string Documentos empresariais públicos associados ao perfil, como CNPJ. 18236120000158
data.companies[].id string Identificador textual da empresa na fonte. 88850
data.companies[].location.city string | null Cidade associada ao perfil. SAO PAULO
data.companies[].location.state string | null UF associada ao perfil. SP
data.companies[].logoUrl string (URL) | null URL do logotipo público da empresa. https://raichu-uploads.s3.amazonaws.com/logo_nubank_ePbSGr.png
data.companies[].name string | null Nome público da empresa. Nubank
data.companies[].profileUrl string (URL) | null URL canônica do perfil da empresa. https://www.reclameaqui.com.br/empresa/nubank/
data.companies[].reputation.complaintsCount integer | null Volume de reclamações considerado no resumo. 57922
data.companies[].reputation.score number | null Nota agregada de reputação. 8.7
data.companies[].reputation.solvedPercent number | null Percentual de reclamações solucionadas. 92.9
data.companies[].reputation.status string | null Faixa ou selo textual de reputação. RA1000
data.companies[].segments.main.name string | null Nome do segmento principal. Bancos e Financeiras
data.companies[].segments.main.shortname string | null Slug do segmento principal. bancos-e-financeiras
data.companies[].segments.secondary.name string | null Nome do segmento secundário quando disponível. Bancos Tradicionais e Digitais
data.companies[].segments.secondary.shortname string | null Slug do segmento secundário quando disponível. bancos-tradicionais-e-digitais
data.companies[].shortname string | null Slug público usado nas URLs da empresa. nubank
data.companies[].verificationStatus string | null Status textual da verificação. SHOW_VERIFIED
data.companies[].verified boolean Indica se a empresa está verificada na plataforma. true
data.companies[].website string (URL) | null Site institucional informado no Reclame AQUI. http://www.nubank.com.br
data.count integer Quantidade de empresas retornadas no array companies. 1
data.extractedAt string (ISO datetime) Timestamp UTC da extração. 2026-07-12T12:30:00.000Z
data.limit integer Limite aplicado, entre 1 e 50. 10
data.parser string Estratégia usada para normalizar a busca de empresas. company_search_api
data.query string Termo normalizado usado na busca. nubank
data.requestUrl string (URL) URL upstream efetivamente consultada pelo worker. https://api.reclameaqui.com.br/search-service/api/search-with-generic-analysis/company?query=nubank&size=10&state=SP&city=S%C3%A3o+Paulo
data.source string Fonte fixa da extração. reclameaqui.com.br
data.type string Tipo fixo da extração. plp
data.url string (URL) URL pública canônica da busca no Reclame AQUI. https://www.reclameaqui.com.br/busca/?q=nubank&state=SP&city=S%C3%A3o+Paulo
executionId string (uuid) ID interno da execução processada pelo worker. exe_01K0RASEARCHNUBANK000000002
requestId string (uuid) ID da requisição HTTP na GeckoAPI. req_01K0RASEARCHNUBANK000000001

Erros comuns

Respostas com notFound: true não entram nesta tabela, porque retornam sucesso HTTP 200.

Status errorCode Quando acontece
400 INVALID_PAYLOAD JSON inválido ou violação das regras de validação do payload.
401 UNAUTHORIZED Header Authorization ausente ou token/chave inválida.
402 INSUFFICIENT_CREDITS Saldo de créditos insuficiente para a API solicitada.
403 FORBIDDEN Usuário sem acesso ou API temporariamente desabilitada.
409 EXECUTION_CONFLICT executionId conflita com uma execução em estado incompatível.
429 RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS Limite de taxa ou limite de requisições em voo excedido.
5xx UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente.