CrustAPI

Obtenha dados do LinkedIn e do Google em segundos. Pague apenas pelos resultados

Documentação

CrustAPI

Obtenha dados do LinkedIn e do Google em segundos. Pague apenas pelos resultados

Encontre empresas, pesquise pessoas e companhias, ou traga resultados de busca para seu aplicativo, planilha ou agente de IA. Use a API ou o painel. Experimente gratuitamente. Sem cartão de crédito. Site: https://crustapi.com · Documentação: https://crustapi.com/docs · Preços: https://crustapi.com/pricing

A promessa

Obtenha os dados que você precisa através da API ou do painel. Comece com a cota gratuita e adicione créditos quando precisar de mais uso. O uso comprado nunca expira. Veja https://crustapi.com/pricing para a cota gratuita e as taxas dos endpoints.

O problema que resolve

Extrair dados do Google geralmente falha por um de três motivos:

  1. Fazer scraping manualmente significa proxies, CAPTCHAs e parsers que quebram silenciosamente toda vez que o Google muda seu markup. Os dados são gratuitos; seu tempo de engenharia não é.
  2. APIs oficiais são caras, com limite de requisições e cobrem uma fração do que o Google realmente mostra.
  3. Um pipeline de dados precisa de custos claros e respostas úteis. A CrustAPI não cobra por resultados vazios, e o uso comprado nunca expira.

A CrustAPI é a versão simples que simplesmente funciona: uma API hospedada com um endpoint para todo o menu do Google, cobrada apenas em caso de sucesso. Quando o Google quebra algo, esse é nosso problema, não seu.

Para quem é

  • Desenvolvedores que precisam de dados ao vivo do Google em um aplicativo, pipeline ou produto, sem manter infraestrutura de scraping.
  • Profissionais de marketing e equipes de geração de leads que querem listas de empresas com telefones, sites, avaliações e contagens de avaliações, como tabela ou CSV, sem precisar de código.
  • Agentes e assistentes de IA: um servidor MCP de primeira linha, um CLI, uma especificação OpenAPI e pagamentos x402 para que um agente possa comprar seus próprios créditos sem intervenção humana.

A API

Um endpoint, um parâmetro seleciona a superfície:

GET https://crustapi.com/v1/search?type=<surface>&q=<query>
Header: x-api-key: key_live_xxxx

Superfícies (type=): web, maps, places, news, shopping, images, videos, scholar, patents, autocomplete, webpage, reviews, lens.

lens é a busca reversa de imagens: passe url=<image url> em vez de q e obtenha as páginas onde essa imagem aparece.

Parâmetros comuns: q (consulta), gl (país, ex.: us), hl (idioma, ex.: en), location (para mapas/locais, ex.: "Miami, FL"), limit (apenas mapas: empresas a retornar, padrão 20, máximo 100), num (apenas avaliações: por página, máximo 50), page.

A estrutura JSON é estável e corresponde ao formato que a maioria das integrações SERP existentes já analisa, então a migração geralmente é apenas uma mudança de URL base. Especificação legível por máquina: https://crustapi.com/v1/openapi.json

Dados públicos do LinkedIn

Um segundo endpoint retorna dados públicos do LinkedIn, o tipo que qualquer pessoa pode ver sem fazer login, como JSON estruturado:

GET https://crustapi.com/v1/linkedin?type=<surface>&url=<profile-or-company-url>
Header: x-api-key: key_live_xxxx

Superfícies (type=):

  • profile: um perfil público de pessoa por URL. Nome, título, localização, sobre e emprego, educação e habilidades publicamente disponíveis. A cobertura de campos depende do que a pessoa torna público; um histórico completo de trabalho não é garantido. Títulos e datas indisponíveis permanecem vazios. Um título derivado de um título público explícito com um empregador correspondente é identificado por titleSource: "headline". websites preserva links públicos de {url, label}, juntamente com o campo website existente. experienceAvailability usa returnedPositions para o número de linhas de emprego retornadas, positionsWithTitle para títulos de origem, positionsWithDerivedTitle separadamente para títulos derivados do título principal, positionsWithStartDate e positionsWithEndDate para linhas com anos conhecidos, e positionsWithDescription para descrições. Essas contagens descrevem registros retornados, não histórico completo de trabalho; experienceState permanece disponível.
  • refresh: uma verificação rápida de atualização para um perfil por URL. Retorna nome, headline público e headlineSource quando disponíveis, um currentTitle suportado com titleSource, empresa e escola atuais (com IDs numéricos), e se o perfil está acessível. Projetado para manter um banco de dados de candidatos ou contatos atualizado em escala, e não é cobrado quando o perfil não está acessível.
  • company: uma página de empresa por URL. Nome, setor, porte, contagem de funcionários no LinkedIn, sede, site, fundação, especialidades, todos os endereços de escritórios visíveis na página buscada, páginas similares e afiliadas nomeadas pela origem, e um employeeSample parcial com {name, profileUrl, source: "company_public_page"}. Afiliados incluem páginas de empresa e showcase com pageType; não são necessariamente subsidiárias. employees=true ainda adiciona uma amostra de busca separada em employees. Seções públicas de perfil como certificações, cursos, voluntariado, organizações, publicações, projetos, recomendações, honrarias e sites também são mantidas em schema=scrapin. Campos existentes compatíveis de emprego/educação permanecem disponíveis, com rótulos de origem, descrições de educação e logotipos quando fornecidos. Seções ausentes não implicam que o histórico está completo.

O campo memorializado de um perfil é verdadeiro apenas quando o próprio rótulo público de memória e banner do LinkedIn identificam esse perfil. Nulo significa que isso não foi estabelecido; não significa que a conta está ativa ou que o proprietário está vivo. memorializedSource identifica a evidência. Verificações de atualização apenas verificam uma página de perfil já buscada para seu trabalho existente, então uma resposta apenas com selo mantém esses campos nulos. Nenhuma solicitação extra é feita para este marcador. A memorialização não altera profileState e não distingue contas fechadas de contas hibernadas.

Os featuredProducts da empresa contêm os cartões de produto exibidos na página pública dessa empresa, com o link do produto publicado, categoria, descrição e imagens quando presentes. É uma seleção exibida, não um catálogo completo ou evidência de assinatura Premium.

Empregos podem nomear um empregador sem vincular a uma página de empresa no LinkedIn. Nesse caso, o nome da empresa é retornado e companyUrl permanece nulo. Quando um recrutador é publicado, jobPoster contém nome, título e URL; resultados indexados também mantêm seus aliases compactos. A página pública completa do emprego pode fornecer datePosted, validThrough, educationRequirements, experienceRequirements, jobLocation e sourceJobIdentifier. Esses campos opcionais são retornados apenas quando a resposta já buscada contém metadados JobPosting correspondentes, identificados por jobMetadataSource. Nenhuma solicitação adicional é feita para obtê-los. O fragmento de convidado mais rápido e resultados indexados podem omiti-los. validThrough é a data de validade publicada pela origem, não uma data de fechamento confirmada. sourceJobIdentifier é preservado separadamente do jobPostingId do LinkedIn.

O publishedContacts da empresa contém detalhes de contato atualmente publicados, evidências e URLs de origem, não contatos primários verificados. Rótulos de escritório addressLines, directionsUrl e isPrimary explícitos mantêm informações de endereço publicadas sem adivinhar coordenadas. employeeCount é distinto da faixa companySize. employeeSearchCompanyIds descreve o escopo organizacional do link de busca de funcionários da página, não identidades alternativas para a empresa; jobSearchUrl é o link de empregos publicado, não uma contagem de empregos.

profileState descreve legibilidade pública e status da URL do perfil. accessible significa dados públicos retornados; exists_not_public significa evidência de perfil reconhecida sem dados públicos; not_resolvable significa que esta URL não resolveu; unknown significa evidência insuficiente. Configurações exatas da conta e exclusão permanente não podem ser inferidas. Mantenha registros existentes quando o estado é desconhecido, e não trate um empregador ausente como prova de mudança de emprego. Atualização member=true retorna um ID de membro numérico vinculado à origem quando disponível. resolvedUrl opcional identifica um destino de redirecionamento atual apenas quando a identidade do perfil retornado concorda; campos de URL solicitados permanecem inalterados. Descoberta automática de URLs de perfil renomeados não está incluída. Resultados indisponíveis de Profile/Refresh não são cobrados.

  • posts: publicações públicas recentes para um perfil ou empresa.
  • jobs: uma vaga de emprego por URL, ou uma busca de empregos. Título, empresa, localização, salário quando exibido, data de publicação e se é candidatura fácil.
  • search (alias people): busca de pessoas. Passe keywords com um nome (por exemplo, "jane smith"), uma profissão title= (por exemplo, title=accountants), ou qualquer combinação de filtros: location (qualquer cidade, estado ou país), company, school, industry, companySize, pastCompany, e faixas de seguidores/conexões/contagem de experiência (followersMin/followersMax, connectionsMin/connectionsMax, expCountMin/expCountMax), além de exclusões titleExclude/companyExclude/locationExclude. Resultados trazem localização, empresa atual, contagens de seguidores e conexões, educação e empresas anteriores. Adicione enrich=true para retornar o perfil completo de cada pessoa na mesma chamada.

A cobrança depende da operação. Resultados vazios são gratuitos. Veja https://crustapi.com/pricing e https://crustapi.com/docs para taxas e cobrança de solicitações.

Exemplo:

curl "https://crustapi.com/v1/linkedin?type=profile&url=https://www.linkedin.com/in/williamhgates" \
  -H "x-api-key: key_live_xxxx"

Exemplo:

curl "https://crustapi.com/v1/search?type=web&q=best coffee in austin" \
  -H "x-api-key: key_live_xxxx"

Listas em lote e webhooks

Envie uma lista inteira de URLs do LinkedIn em uma única solicitação em vez de uma por vez. O lote funciona para os tipos refresh, person (também conhecido como profile), company e posts — use URLs /in/ para pessoa, atualização e publicações, e URLs /company/ para empresa:

POST https://crustapi.com/v1/linkedin/batch
body: {"type": "company", "urls": ["...", "..."]}

Até 100 URLs retornam em uma única viagem de ida e volta, resultados na mesma ordem em que você os enviou. Cada linha carrega ou dados ou seu próprio erro, então uma linha com problema nunca falha o restante, e um bloqueio temporário é repetido automaticamente. Linhas que retornam como não acessíveis são gratuitas.

Para até 10.000 URLs, adicione uma URL de "webhook" ao corpo. A API responde imediatamente com um jobId (HTTP 202), executa o lote em segundo plano e faz POST dos resultados completos para seu webhook quando terminar (o cabeçalho X-Crustapi-Job carrega o jobId). Verifique o progresso a qualquer momento:

GET https://crustapi.com/v1/linkedin/batch?id=<jobId>

A chamada de status retorna apenas contagens. Os resultados são entregues ao seu webhook e não são retidos.

Preços e saldo

  • Toda conta elegível recebe $6 de uso gratuito mensal. Fundos pagos nunca expiram.
  • Depósitos começam em $10. Cada depósito se qualifica separadamente e mantém suas taxas até ser gasto.
  • Fundos gratuitos são gastos primeiro, depois os fundos pagos aplicáveis mais baratos, os mais antigos primeiro em caso de empate.
  • Preços de lista por 1.000 unidades de cobrança: Google Search $1,00; Google Maps $1,96; perfis do LinkedIn $4,00 (busca de e-mail de trabalho incluída); empresas $3,00; publicações $6,00; LinkedIn People, Jobs e Refresh $1,96.
  • Maps cobra por empresa, Refresh por perfil acessível, e People enriquecido por perfil completo na taxa de leitura do LinkedIn. Outras chamadas cobram por solicitação bem-sucedida. Chamadas vazias e com falha custam zero; e-mail de trabalho está incluído.
  • Tabela completa de depósitos: https://crustapi.com/pricing. O depósito de $149 dá $0,76 Search, $1,49 Maps/Search/Refresh e $3,00 perfis, $2,50 empresas e $4,50 publicações por 1.000. O maior depósito dá $0,20, $0,40 e $1,50 respectivamente.
  • Use billing.chargedUsd e wallet.availableUsd para contabilidade em USD. Campos numéricos de compatibilidade de crédito permanecem como contagens.
  • Uso comprado existente é protegido. Contas que ainda mostram créditos e o caminho separado do agente x402 mantêm seus termos atuais até a conversão.

Servidor MCP (para assistentes de IA)

Dê ao Claude Desktop, Cursor, Cline ou qualquer cliente MCP dados ao vivo do Google e do LinkedIn público. Pacote: crustapi-mcp no npm.

{
  "mcpServers": {
    "crustapi": {
      "command": "npx",
      "args": ["-y", "crustapi-mcp"],
      "env": { "CRUSTAPI_API_KEY": "key_live_xxxx" }
    }
  }
}

Quatro ferramentas: search (todas as superfícies do Google em uma ferramenta), scrape_webpage (qualquer URL como texto limpo para RAG), get_reviews (avaliações do Google para uma empresa) e linkedin (perfis públicos do LinkedIn, empresas, publicações, empregos e busca de pessoas em uma ferramenta).

Integrações

A CrustAPI é um único endpoint HTTP, então ela se encaixa em qualquer ferramenta que possa chamar uma URL. Configuração para as comuns está em https://crustapi.com/docs#integrations.

  • Clay: adicione uma coluna de enriquecimento via API HTTP apontando para /v1/search com sua chave em x-api-key, e então mapeie campos como website, phone e reviewsCount para sua tabela.
  • n8n, Make, Zapier, Retool: uma requisição GET para /v1/search retorna JSON limpo para mapear em campos; nenhum SDK é necessário.
  • Frameworks de agentes de IA: use a API HTTP, o pacote LangChain ou o servidor MCP por meio de um cliente compatível. Os requisitos de configuração dependem do framework.

CLI

npm install -g crustapi-cli
export CRUSTAPI_API_KEY=key_live_xxxx
crust "dentists in miami"
crust search coffee --type maps --location "Austin, TX" --limit 20
crust search plumbers --type maps --csv > leads.csv
crust linkedin https://www.linkedin.com/in/williamhgates
crust linkedin "head of growth fintech" --enrich

JSON para stdout (faz pipe limpo com jq), linha de status para stderr, --csv para CSV.

Pagamentos de agentes (x402)

Um agente de IA pode comprar seus próprios créditos sem cadastro, cartão ou humano. A CrustAPI implementa o protocolo x402 na Base (USDC, EIP-3009 sem gás):

  1. O agente chama POST https://crustapi.com/v1/x402/topup?pack=agent sem chave.
  2. O servidor responde 402 Payment Required com os requisitos do x402 v2 (rede eip155:8453, USDC).
  3. A carteira do agente assina uma autorização USDC sem gás e tenta novamente.
  4. O servidor liquida on-chain e retorna { apiKey, credits }, uma chave real carregada com créditos. O pacote agent custa $5 por 2.500 créditos.

O que torna diferente

  • Você só paga por resultados que retornam. Pesquisas vazias são gratuitas, sempre.
  • Fundos pagos nunca expiram.
  • Todo o menu do Google por trás de um único endpoint e um único esquema, não um produto separado por superfície.
  • A pesquisa de imagens pode retornar várias imagens em uma única resposta; a disponibilidade depende da consulta.
  • Feito para ambas as metades de uma equipe: uma API e CLI para desenvolvedores, e um painel onde um não desenvolvedor pode digitar uma consulta, obter uma tabela e baixar o CSV.
  • Nativo para agentes desde o primeiro dia: servidor MCP, especificação OpenAPI e x402 para que o software possa descobrir, chamar e pagar por conta própria.

O que não é

  • Não é um provedor de proxy ou um framework de scraping que você hospeda. Não há nada para executar, corrigir ou manter.
  • Não é uma assinatura. Não há taxa mensal; você adiciona fundos quando precisar.
  • A atualização depende da operação. Leituras de perfil do LinkedIn e URL da empresa buscam páginas de origem ao vivo. Alguns metadados de empresa são unidos a partir de registros observados anteriormente. A Pesquisa Google pode reutilizar resultados idênticos por até 60 segundos; fresh=1 ignora esse cache de pesquisa. Pesquisas de Pessoas e Empregos podem usar índices atualizados periodicamente. Uma solicitação nova não garante que uma pessoa atualizou todos os campos.

Suporte

Envie um e-mail para support@crustapi.com e um humano responde. Jurídico: https://crustapi.com/terms · https://crustapi.com/privacy