Um único endpoint para encontrar contactos empresariais por setor, cidade ou país — o seu próprio vocabulário, não parâmetros de baixo nível.
A API da B2BLeads é um único endpoint de descoberta compatível com MCP. URL base:
https://api.b2bleadsapi.comTodas as respostas são em JSON. Não é necessário nenhum SDK — pedidos HTTPS simples funcionam a partir de qualquer linguagem ou da chamada de ferramentas nativa de um agente de IA.
Transmita a sua chave de API como token de portador (bearer token). Crie chaves a partir do painel, em Chaves de API.
Authorization: Bearer b2bl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxOs pedidos sem uma chave válida devolvem 401 Unauthorized. Cada chave tem um limite de taxa por minuto e está limitada pela quota de pesquisa mensal do seu plano.
Encontra empresas que correspondam ao seu próprio vocabulário de pesquisa — opções claras e criadas para o efeito, em vez de campos de pedido de baixo nível. É necessário pelo menos um de q, industry ou city.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| q | string | Consulta em texto livre, por ex. "padarias familiares". Opcional se industry ou city estiver definido. |
| industry | enum | Um dos nossos próprios valores de setor — consulte GET /v1/search-leads/industries para a lista completa. |
| city | string | Nome de cidade ou região, por ex. "Munique" ou "Austin, TX". Combine com radius_km para uma pesquisa delimitada. |
| radius_km | number | Raio de pesquisa à volta da cidade, em quilómetros (máx. 50). Ignorado sem city. |
| min_rating | number 0–5 | Devolve apenas empresas com, pelo menos, esta classificação, filtradas no servidor para uma paginação precisa. |
| has_website | boolean | true para devolver apenas empresas com um website indicado. |
| verified_only | boolean | true para excluir empresas encerradas permanente ou temporariamente. |
| open_now | boolean | true para devolver apenas empresas atualmente abertas. |
| price_level | enum, comma-separated | Um ou mais de: budget, moderate, expensive, luxury. Ex. price_level=budget,moderate. |
| rank_by | enum | relevance (predefinição) ou distance. distance requer que city esteja definido. |
| limit | number 1–20 | Número máximo de resultados por página. Predefinição de 20 (limite por pedido). |
| page_token | string | Valor do nextPageToken de uma resposta anterior, para obter a página seguinte. Quando definido, todos os outros filtros são ignorados (já incorporados no token). |
| lang | string | Idioma dos nomes/moradas dos resultados, por ex. "pt" ou "pt-BR". Substitui o idioma do painel da sua conta para este pedido; recorre a ele quando omitido. |
| list_id | string | Guarda estes resultados numa lista guardada existente que possui. Adiciona um objeto savedTo à resposta. |
| list_name | string | Guarda numa lista com este nome, criando-a caso ainda não exista. Ignorado se list_id também estiver definido. |
| save_to_list | boolean | true guarda numa lista com o nome "API searches" (criada na primeira utilização) quando nem list_id nem list_name são indicados. |
curl "https://api.b2bleadsapi.com/v1/search-leads?industry=construction&city=Munich&radius_km=25&min_rating=4&has_website=true&open_now=true&rank_by=distance" \
-H "Authorization: Bearer b2bl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"{
"results": [
{
"id": "ChIJ...",
"name": "Bauunion GmbH",
"address": "Landsberger Str. 12, 80339 München",
"phone": "+49 89 1234567",
"website": "https://bauunion.de",
"rating": 4.7,
"ratingCount": 128,
"status": "OPERATIONAL",
"priceLevel": null,
"openNow": true
}
],
"nextPageToken": "AY1v..."
}Envie de volta nextPageToken como page_token para obter a página seguinte. É null quando já não há mais resultados.
Nota para agentes de IA: em planos com Email Finder, o campo email de um contacto guardado pode ser devolvido como a cadeia literal CFD* em vez de um endereço. Isto significa que todas as tentativas de extração (um pedido HTTP simples, seguido de um recurso a navegador headless) foram bloqueadas pela proteção anti-bot da Cloudflare do site de destino — não se trata de um resultado vazio nem de um erro, e repetir no mesmo site não terá sucesso. Trate CFD* como "sem e-mail disponível" e não como um endereço real, e não o comunique ao utilizador final como sendo o seu e-mail de contacto.
Enviado diretamente do seu navegador para a API em tempo real — isto conta para a sua quota. A sua chave permanece neste navegador (localStorage), nunca é enviada para outro lugar além de api.b2bleadsapi.com.
Endpoint público, sem autenticação — devolve a lista atual de valores industry suportados, para que os clientes e agentes nunca precisem de os codificar de forma fixa.
curl "https://api.b2bleadsapi.com/v1/search-leads/industries"{
"industries": [
{ "value": "construction", "label": "Construction" },
{ "value": "restaurants", "label": "Restaurants" },
{ "value": "retail", "label": "Retail" },
{ "value": "manufacturing", "label": "Manufacturing" },
{ "value": "logistics", "label": "Logistics & Freight" },
{ "value": "it_services", "label": "IT Services" },
{ "value": "healthcare", "label": "Healthcare" },
{ "value": "real_estate", "label": "Real Estate" },
{ "value": "hospitality", "label": "Hospitality" },
{ "value": "professional_services", "label": "Professional Services" }
]
}Endpoint público, sem necessidade de chave de API.
Os erros são JSON simples com um único campo error.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| 400 | Bad Request | Falta de q/industry/city, valor industry/price_level/rank_by desconhecido, rank_by=distance sem city, ou radius_km/min_rating/limit fora do intervalo. |
| 401 | Unauthorized | Chave de API em falta ou inválida. |
| 402 | Payment Required | Quota de pesquisa mensal excedida para o plano desta chave. |
| 403 | Forbidden | A conta está suspensa ou banida. |
| 429 | Too Many Requests | Limite de taxa por chave excedido — aguarde e tente novamente. |
| 502 | Bad Gateway | Falha no fornecedor de descoberta a montante; pode tentar novamente com segurança. |
| 503 | Service Unavailable | A pesquisa de contactos está temporariamente desativada através de um feature flag. |
Cada chave de API tem um limite de taxa por minuto e uma quota de pesquisa mensal, ambos definidos pelo seu plano. Consulte a utilização atual a qualquer momento na página Faturação do painel, ou através do endpoint GET /v1/billing se estiver autenticado com um token de sessão.
Disponibilizamos um servidor MCP oficial que encapsula esta API em cinco ferramentas — search_leads, list_industries, list_saved_lists, get_saved_list e find_email — para Claude Desktop, Claude Code, Cursor, ChatGPT, Gemini/Antigravity, Grok Build, GitHub Copilot e qualquer outro cliente compatível com MCP. Não é necessária nenhuma integração REST manual.
Adicione-o à configuração do seu cliente MCP com uma chave de API a partir do Chaves de API:
{
"mcpServers": {
"b2bleads": {
"command": "npx",
"args": ["-y", "b2bleads-mcp"],
"env": {
"B2BLEADS_API_KEY": "your-api-key-here"
}
}
}
}Prefere configurá-lo você mesmo através de REST simples? Os parâmetros acima correspondem diretamente ao esquema de entrada da ferramenta — o agente escolhe um setor e uma cidade em linguagem natural, e a B2BLeads trata de traduzir isso numa consulta de descoberta em tempo real nos bastidores.
{
"name": "search_leads",
"description": "Find companies by industry, city and radius",
"parameters": {
"q": "string, optional free-text query",
"industry": "enum, see /v1/search-leads/industries",
"city": "string",
"radius_km": "number, max 50",
"min_rating": "number 0-5",
"has_website": "boolean",
"verified_only": "boolean",
"open_now": "boolean",
"price_level": "enum, comma-separated: budget, moderate, expensive, luxury",
"rank_by": "enum: relevance, distance (requires city)",
"limit": "number 1-20",
"page_token": "string, from a previous response's nextPageToken"
}
}Uma ferramenta separada trata de pesquisas exaustivas a uma cidade inteira — mas com um aviso explícito de custo elevado para que os agentes não a chamem por predefinição:
{
"name": "search_leads_advanced",
"description": "⚠️ Elevated cost: 9x the quota of a single search_leads call. Tiles a city into a 3x3 grid of sub-searches to return up to ~180 deduplicated businesses in one city, beyond search_leads' normal ~20-60 result ceiling. Only use when more results are explicitly needed for one city — never as a default. Does not support pagination.",
"parameters": {
"q": "string, optional free-text query",
"industry": "enum, see /v1/search-leads/industries",
"city": "string, required — ONLY the city name, e.g. \"Lyon\" (not the full search query)",
"min_rating": "number 0-5",
"has_website": "boolean",
"verified_only": "boolean",
"open_now": "boolean",
"price_level": "enum, comma-separated: budget, moderate, expensive, luxury"
}
}Mais ferramentas só de leitura completam a superfície MCP:
{
"name": "list_industries",
"description": "List the industry values accepted by search_leads",
"parameters": {}
}
{
"name": "list_saved_lists",
"description": "List this account's saved lead lists",
"parameters": {}
}
{
"name": "get_saved_list",
"description": "Get the leads saved in a specific list",
"parameters": {
"list_id": "string, required — from list_saved_lists"
}
}
{
"name": "find_email",
"description": "Look up a best-effort contact email for a single business website",
"parameters": {
"website": "string, required, e.g. https://example.com"
}
}find_email está disponível em qualquer plano pago (a partir do Starter) — o mesmo nível que já enriquece automaticamente os resultados de search_leads com e-mails. Sem um plano ativo, a chave recebe simplesmente um erro de "atualização necessária" em vez de um resultado.