Jeden endpoint do wyszukiwania kontaktów biznesowych według branży, miasta lub kraju — Twoje własne słownictwo, a nie parametry niskiego poziomu przekazywane bezpośrednio dalej.
API B2BLeads to pojedynczy endpoint wyszukiwania, przyjazny dla MCP. Adres bazowy:
https://api.b2bleadsapi.comKażda odpowiedź jest w formacie JSON. Nie jest wymagane żadne SDK — zwykłe żądania HTTPS działają z dowolnego języka lub z natywnego wywoływania narzędzi przez agenta AI.
Przekaż swój klucz API jako token bearer. Utwórz klucze w panelu w sekcji Klucze API.
Authorization: Bearer b2bl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxŻądania bez ważnego klucza zwracają 401 Unauthorized. Każdy klucz ma limit zapytań na minutę oraz miesięczną quotę wyszukiwań zależną od planu.
Znajduje firmy pasujące do Twojego własnego słownictwa wyszukiwania — czyste, dedykowane opcje zamiast pól żądania niskiego poziomu. Wymagane jest podanie co najmniej jednego z: q, industry lub city.
| Parametr | Typ | Opis |
|---|---|---|
| q | string | Zapytanie tekstowe, np. "rodzinne piekarnie". Opcjonalne, jeśli ustawiono industry lub city. |
| industry | enum | Jedna z naszych wartości branżowych — pełną listę znajdziesz pod GET /v1/search-leads/industries. |
| city | string | Nazwa miasta lub regionu, np. "Monachium" lub "Austin, TX". Połącz z radius_km, aby ograniczyć zasięg wyszukiwania. |
| radius_km | number | Promień wyszukiwania wokół miasta, w kilometrach (maks. 50). Ignorowany bez city. |
| min_rating | number 0–5 | Zwraca tylko firmy z co najmniej taką oceną, filtrowane po stronie serwera dla dokładnej paginacji. |
| has_website | boolean | true, aby zwracać tylko firmy z podaną stroną internetową. |
| verified_only | boolean | true, aby wykluczyć firmy trwale lub tymczasowo zamknięte. |
| open_now | boolean | true, aby zwracać tylko firmy obecnie otwarte. |
| price_level | enum, comma-separated | Jedna lub więcej wartości: budget, moderate, expensive, luxury. Np. price_level=budget,moderate. |
| rank_by | enum | relevance (domyślnie) lub distance. distance wymaga ustawienia city. |
| limit | number 1–20 | Maksymalna liczba wyników na stronę. Domyślnie 20 (limit na żądanie). |
| page_token | string | Wartość z nextPageToken poprzedniej odpowiedzi, aby pobrać kolejną stronę. Gdy ustawiony, wszystkie inne filtry są ignorowane (są już zakodowane w tokenie). |
| lang | string | Język nazw/adresów w wynikach, np. "pt" lub "pt-BR". Nadpisuje język panelu Twojego konta dla tego żądania; jeśli pominięty, używany jest język konta. |
| list_id | string | Zapisz te wyniki w istniejącej zapisanej liście, której jesteś właścicielem. Dodaje obiekt savedTo do odpowiedzi. |
| list_name | string | Zapisz w liście o tej nazwie, tworząc ją, jeśli jeszcze nie istnieje. Ignorowane, jeśli podano też list_id. |
| save_to_list | boolean | true zapisuje w liście o nazwie "API searches" (tworzonej przy pierwszym użyciu), gdy nie podano ani list_id, ani list_name. |
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..."
}Przekaż nextPageToken z powrotem jako page_token, aby pobrać kolejną stronę. Przyjmuje wartość null, gdy nie ma więcej wyników.
Uwaga dla agentów AI: w planach z Email Finder pole email zapisanego kontaktu może zawierać dosłowny ciąg CFD* zamiast adresu. Oznacza to, że każda próba scrapowania (zwykłe żądanie HTTP, a następnie fallback z przeglądarką headless) została zablokowana przez ochronę Cloudflare docelowej strony — to nie jest pusty wynik ani błąd, a ponowna próba dla tej samej strony się nie powiedzie. Traktuj CFD* jako "brak dostępnego adresu e-mail", a nie jako prawdziwy adres, i nie pokazuj tego użytkownikowi końcowemu jako jego adresu kontaktowego.
Wysyłane bezpośrednio z Twojej przeglądarki do działającego API — liczy się to do Twojej quoty. Twój klucz pozostaje w tej przeglądarce (localStorage) i nigdy nie jest wysyłany nigdzie indziej niż api.b2bleadsapi.com.
Publiczny, nieuwierzytelniony endpoint — zwraca aktualną listę obsługiwanych wartości industry, dzięki czemu klienci i agenci nigdy nie muszą ich sztywno kodować.
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" }
]
}Publiczny endpoint, klucz API nie jest wymagany.
Błędy to zwykły JSON z pojedynczym polem error.
| Parametr | Typ | Opis |
|---|---|---|
| 400 | Bad Request | Brak wszystkich z q/industry/city, nieznana wartość industry/price_level/rank_by, rank_by=distance bez city, lub radius_km/min_rating/limit poza dozwolonym zakresem. |
| 401 | Unauthorized | Brak lub nieprawidłowy klucz API. |
| 402 | Payment Required | Przekroczona miesięczna quota wyszukiwań dla planu tego klucza. |
| 403 | Forbidden | Konto jest zawieszone lub zbanowane. |
| 429 | Too Many Requests | Przekroczony limit zapytań dla klucza — zwolnij tempo i spróbuj ponownie. |
| 502 | Bad Gateway | Błąd dostawcy wyszukiwania po stronie serwera; można bezpiecznie ponowić żądanie. |
| 503 | Service Unavailable | Wyszukiwanie kontaktów jest tymczasowo wyłączone przez flagę funkcji. |
Każdy klucz API ma limit zapytań na minutę oraz miesięczną quotę wyszukiwań, ustalane przez Twój plan. Aktualne zużycie sprawdzisz w dowolnym momencie w panelu, w sekcji Płatności lub przez endpoint GET /v1/billing, jeśli jesteś uwierzytelniony tokenem sesji.
Publikujemy oficjalny serwer MCP, który udostępnia to API jako pięć narzędzi — search_leads, list_industries, list_saved_lists, get_saved_list oraz find_email — dla Claude Desktop, Claude Code, Cursor, ChatGPT, Gemini/Antigravity, Grok Build, GitHub Copilot i dowolnego innego klienta zgodnego z MCP. Bez ręcznej integracji REST.
Dodaj go do konfiguracji swojego klienta MCP z kluczem API z sekcji Klucze API:
{
"mcpServers": {
"b2bleads": {
"command": "npx",
"args": ["-y", "b2bleads-mcp"],
"env": {
"B2BLEADS_API_KEY": "your-api-key-here"
}
}
}
}Wolisz podłączyć się samodzielnie przez zwykły REST? Parametry powyżej odpowiadają bezpośrednio schematowi wejściowemu narzędzia — agent wybiera branżę i miasto w zwykłym języku, a B2BLeads zajmuje się przekształceniem tego w rzeczywiste zapytanie wyszukiwania w tle.
{
"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"
}
}Osobne narzędzie obsługuje wyczerpujące wyszukiwanie w całym mieście — z wyraźnym ostrzeżeniem o podwyższonym koszcie, aby agenci nie wywoływali go domyślnie:
{
"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"
}
}Dodatkowe narzędzia tylko do odczytu uzupełniają API 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 jest dostępny w każdym płatnym planie (od Starter wzwyż) — na tym samym poziomie, który już automatycznie wzbogaca wyniki search_leads o adresy e-mail. Bez aktywnego planu klucz otrzyma zwykły błąd "upgrade required" zamiast wyniku.