Один ендпоінт для пошуку бізнес-контактів за галуззю, містом чи країною — наша власна зрозуміла термінологія, а не низькорівневі параметри для прямої передачі.
API B2BLeads — це єдиний ендпоінт для пошуку, зручний для MCP. Базовий URL:
https://api.b2bleadsapi.comКожна відповідь у форматі JSON. SDK не потрібен — прості HTTPS-запити працюють з будь-якої мови програмування або через нативний виклик інструментів AI-агентом.
Передавайте свій API-ключ як bearer-токен. Створюйте ключі в панелі керування в розділі API-ключі.
Authorization: Bearer b2bl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxЗапити без дійсного ключа повертають 401 Unauthorized. Кожен ключ має обмеження за кількістю запитів на хвилину та обмежений місячною квотою пошуків згідно з вашим тарифом.
Знаходить компанії за вашою власною зрозумілою термінологією пошуку — чіткі, цілеспрямовані параметри замість низькорівневих полів запиту. Потрібен хоча б один із параметрів q, industry або city.
| Параметр | Тип | Опис |
|---|---|---|
| q | string | Довільний текстовий запит, напр. "сімейні пекарні". Необов'язковий, якщо задано industry або city. |
| industry | enum | Одне зі значень нашого власного переліку галузей — повний список див. у GET /v1/search-leads/industries. |
| city | string | Назва міста або регіону, напр. "Мюнхен" або "Остін, Техас". Поєднуйте з radius_km для обмеженого пошуку. |
| radius_km | number | Радіус пошуку навколо міста, в кілометрах (максимум 50). Ігнорується без city. |
| min_rating | number 0–5 | Повертати лише компанії з рейтингом не нижче зазначеного, фільтрація виконується на сервері для коректної пагінації. |
| has_website | boolean | true — повертати лише компанії з вказаним веб-сайтом. |
| verified_only | boolean | true — виключити компанії, які постійно або тимчасово закриті. |
| open_now | boolean | true — повертати лише компанії, які зараз відкриті. |
| price_level | enum, comma-separated | Одне або кілька значень: budget, moderate, expensive, luxury. Напр. price_level=budget,moderate. |
| rank_by | enum | relevance (за замовчуванням) або distance. Для distance обов'язково має бути задано city. |
| limit | number 1–20 | Максимальна кількість результатів на сторінку. За замовчуванням 20 (максимум на один запит). |
| page_token | string | Значення nextPageToken з попередньої відповіді для отримання наступної сторінки. Якщо задано, усі інші фільтри ігноруються (вони вже закладені в токен). |
| lang | string | Мова для назв/адрес результатів, напр. "pt" або "pt-BR". Перевизначає мову панелі керування вашого акаунта для цього запиту; якщо не вказано, використовується мова акаунта. |
| list_id | string | Зберегти ці результати в наявний список, яким ви володієте. У відповідь додається об'єкт savedTo. |
| list_name | string | Зберегти в список із такою назвою, створивши його, якщо він ще не існує. Ігнорується, якщо також задано list_id. |
| save_to_list | boolean | true — зберігає в список із назвою "API searches" (створюється при першому використанні), якщо не задано ні list_id, ні 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..."
}Передайте nextPageToken назад як page_token, щоб отримати наступну сторінку. Він стає null, коли результатів більше немає.
Примітка для AI-агентів: на тарифах із Email Finder поле email збереженого контакту може повернутися як буквальний рядок CFD* замість адреси. Це означає, що кожна спроба збору даних (звичайний HTTP-запит, потім резервний варіант через headless-браузер) була заблокована захистом від ботів Cloudflare на цільовому сайті — це не порожній результат і не помилка, і повторна спроба на тому самому сайті не буде успішною. Сприймайте CFD* як "електронна адреса недоступна", а не як реальну адресу, і не показуйте це кінцевому користувачеві як його контактну електронну пошту.
Запит надсилається прямо з вашого браузера до реального API — це враховується у вашій квоті. Ваш ключ залишається в цьому браузері (localStorage) і ніколи не надсилається нікуди, крім api.b2bleadsapi.com.
Публічний ендпоінт без автентифікації — повертає поточний перелік підтримуваних значень industry, щоб клієнтам і агентам ніколи не доводилося прописувати їх у коді.
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" }
]
}Публічний ендпоінт, API-ключ не потрібен.
Помилки повертаються у вигляді простого JSON з одним полем error.
| Параметр | Тип | Опис |
|---|---|---|
| 400 | Bad Request | Відсутні всі з q/industry/city, невідоме значення industry/price_level/rank_by, rank_by=distance без city, або radius_km/min_rating/limit поза допустимим діапазоном. |
| 401 | Unauthorized | Відсутній або недійсний API-ключ. |
| 402 | Payment Required | Перевищено місячну квоту пошуків для тарифу цього ключа. |
| 403 | Forbidden | Акаунт призупинено або заблоковано. |
| 429 | Too Many Requests | Перевищено ліміт запитів для ключа — зменшіть частоту запитів і повторіть спробу. |
| 502 | Bad Gateway | Помилка постачальника пошуку даних; можна безпечно повторити запит. |
| 503 | Service Unavailable | Пошук контактів тимчасово вимкнено через feature flag. |
Кожен API-ключ має ліміт запитів на хвилину та місячну квоту пошуків, обидва визначаються вашим тарифом. Перевірити поточне використання можна в будь-який момент у розділі панелі керування Оплата або через ендпоінт GET /v1/billing, якщо ви автентифіковані токеном сесії.
Ми публікуємо офіційний MCP-сервер, який обгортає цей API у п'ять інструментів — search_leads, list_industries, list_saved_lists, get_saved_list і find_email — для Claude Desktop, Claude Code, Cursor, ChatGPT, Gemini/Antigravity, Grok Build, GitHub Copilot та будь-якого іншого MCP-сумісного клієнта. Ручна інтеграція через REST не потрібна.
Додайте його до конфігурації вашого MCP-клієнта з API-ключем зі сторінки API-ключі:
{
"mcpServers": {
"b2bleads": {
"command": "npx",
"args": ["-y", "b2bleads-mcp"],
"env": {
"B2BLEADS_API_KEY": "your-api-key-here"
}
}
}
}Хочете підключити самостійно через звичайний REST? Наведені вище параметри напряму відповідають вхідній схемі інструмента — агент обирає галузь і місто звичайною мовою, а B2BLeads сам перетворює це на реальний пошуковий запит.
{
"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"
}
}Окремий інструмент виконує вичерпний пошук по всьому місту — але з явним попередженням про підвищену вартість, щоб агенти не викликали його за замовчуванням:
{
"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"
}
}Додаткові інструменти лише для читання доповнюють 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 доступний на будь-якому платному тарифі (починаючи зі Starter) — на тому самому рівні, на якому search_leads вже автоматично збагачує результати електронними адресами. Без активного тарифу ключ отримає просту помилку "потрібне підвищення тарифу" замість результату.