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:
- 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 é.
- APIs oficiais são caras, com limite de requisições e cobrem uma fração do que o Google realmente mostra.
- 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 portitleSource: "headline".websitespreserva links públicos de{url, label}, juntamente com o campowebsiteexistente.experienceAvailabilityusareturnedPositionspara o número de linhas de emprego retornadas,positionsWithTitlepara títulos de origem,positionsWithDerivedTitleseparadamente para títulos derivados do título principal,positionsWithStartDateepositionsWithEndDatepara linhas com anos conhecidos, epositionsWithDescriptionpara descrições. Essas contagens descrevem registros retornados, não histórico completo de trabalho;experienceStatepermanece disponível.refresh: uma verificação rápida de atualização para um perfil por URL. Retorna nome,headlinepúblico eheadlineSourcequando disponíveis, umcurrentTitlesuportado comtitleSource, 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 umemployeeSampleparcial com{name, profileUrl, source: "company_public_page"}. Afiliados incluem páginas de empresa e showcase compageType; não são necessariamente subsidiárias.employees=trueainda adiciona uma amostra de busca separada ememployees. 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 emschema=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(aliaspeople): busca de pessoas. Passekeywordscom um nome (por exemplo, "jane smith"), uma profissãotitle=(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õestitleExclude/companyExclude/locationExclude. Resultados trazem localização, empresa atual, contagens de seguidores e conexões, educação e empresas anteriores. Adicioneenrich=truepara 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/searchcom sua chave emx-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/searchretorna 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):
- O agente chama
POST https://crustapi.com/v1/x402/topup?pack=agentsem chave. - O servidor responde
402 Payment Requiredcom os requisitos do x402 v2 (rede eip155:8453, USDC). - A carteira do agente assina uma autorização USDC sem gás e tenta novamente.
- O servidor liquida on-chain e retorna
{ apiKey, credits }, uma chave real carregada com créditos. O pacoteagentcusta $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=1ignora 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