API Documentation
Programmatic access to global business registry data.
Get a trial keyQuick start
Make your first request in seconds. All you need is an API key.
curl -H "X-API-Key: b2t_your_key" \
"https://b2trust.com/api/v1/search?q=CD+Projekt"Authentication
Authenticate every request by including your API key in the X-API-Key header.
X-API-Key: b2t_your_keyAPI keys are prefixed with b2t_. Keep your key secret and never expose it in client-side code.
Endpoints
/api/v1/searchSearch for companies across all registries by name, tax ID, VAT number, or registry number.
| Parameter | Type | Description |
|---|---|---|
| q | string | Required. Company name, tax ID, VAT number, or registry number. |
| mode | enum | name (default) or taxid. Hints the confidence scorer; with taxid, default status becomes all. |
| country | string | ISO 3166-1 alpha-2 country code, comma-separated for multiple (e.g. PL,DE). Note UK is GB. |
| status | enum | active (default for mode=name), suspended, dissolved, inactive, or all. |
| legal_form | string | Filter by legal form, comma-separated. Case-insensitive partial match. |
| city | string | Filter by registered-address city. Case-insensitive partial match. |
| date_from | ISO date | Earliest registration date, format YYYY-MM-DD. |
| date_to | ISO date | Latest registration date, format YYYY-MM-DD. |
| sort | enum | relevance (default), newest, oldest, name_asc, name_desc, country, confidence. |
| page | number | Page number, default 1. |
| limit | number | Results per page. Default 50, max 500. |
| locale | string | Response locale hint (e.g. en, pl). Default en. |
Every result includes registry_count — the number of independent sources that confirm the company. This is B2Trust's consensus signal: we report how many sources agree, not which registries they are.
Country codes are ISO 3166-1 alpha-2. The United Kingdom is GB (never UK); other common codes include PL, CZ, DE, NO, FR, US, AU, NZ, BR, FI, SK.
/api/v1/company/{country_code}-{national_id}Retrieve a full company profile by its unique identifier (cache + live enrichment + BII + VIES cross-check).
curl -H "X-API-Key: b2t_your_key" \
"https://b2trust.com/api/v1/company/PL-7342867148"The path identifier is {country_code}-{national_id}. UK companies use GB (e.g. GB-12345678).
/api/v1/company/{country_code}-{national_id}/verify-bankVerify whether a bank account is registered against this company on the Polish VAT Whitelist (Biała Lista). Poland only. Never returns account numbers — only a boolean result.
| Body field | Type | Description |
|---|---|---|
| account | string (JSON) | Required. Bank account to check. Accepts a 26-digit NRB or a PL-prefixed IBAN (PL + 26 digits). Spaces, dashes, dots and slashes are ignored. |
Send the account in a JSON request body:
curl -X POST \
-H "X-API-Key: b2t_your_key" \
-H "Content-Type: application/json" \
-d '{"account": "PL61109010140000071219812874"}' \
"https://b2trust.com/api/v1/company/PL-7342867148/verify-bank"Response:
{
"status": "ok",
"data": {
"verified": true,
"company_name": "CD PROJEKT S.A.",
"account_count": 2,
"checked_at": "2026-06-30T15:00:00.000Z"
}
}Response schema
All responses follow a consistent envelope format. /search returns an array; /company/{id} returns a single object.
Search response
{
"status": "ok",
"query": "CD Projekt",
"mode": "name",
"data": [
{
"country_code": "PL",
"national_id": "7342867148",
"registry_number": "0000317499",
"company_name": "CD Projekt S.A.",
"legal_form": "Spółka Akcyjna",
"status": "active",
"registered_address": {
"street": "ul. Jagiellońska 74",
"city": "Warszawa",
"postal_code": "03-301",
"country": "PL"
},
"registration_date": "2002-02-01",
"registry_count": 3,
"vat_number": "PL7342867148",
"fetched_at": "2026-04-30T00:23:02.602Z",
"confidence": {
"score": 92,
"label": "High",
"color": "green",
"factors": ["Exact name match", "Verified by 3 registries"]
},
"first_indexed_at": "2025-11-10T08:14:00.000Z",
"vies_status": "valid",
"vies_note": null
}
],
"meta": {
"total": 1,
"page": 1,
"limit": 50,
"total_pages": 1,
"query_time_ms": 412,
"cache_hit": true,
"countries": ["PL"],
"country_counts": { "PL": 1 },
"legal_forms": ["Spółka Akcyjna"]
}
}Company response
The profile returns company identity plus B2Trust Identity Consensus metadata — how many independent sources confirm the entity (registry_count, source_breakdown by type, confirmation_count), EU VAT cross-check, and time-in-index. We expose how many sources confirm a record, never which registries. Natural-person data (directors, beneficial owners, shareholders) and raw bank account numbers are not exposed.
{
"status": "ok",
"data": {
"country_code": "PL",
"national_id": "7342867148",
"vat_number": "PL7342867148",
"secondary_id": "0000317499",
"registry_number": "0000317499",
"company_name": "CD Projekt S.A.",
"legal_form": "Spółka Akcyjna",
"registered_address": {
"street": "ul. Jagiellońska 74",
"city": "Warszawa",
"postal_code": "03-301",
"country": "PL"
},
"registration_date": "2002-02-01",
"status": "active",
"activity_codes": [
{ "code": "62.01.Z", "system": "PKD", "description": "Software development" }
],
"registry_count": 3,
"bank_accounts_count": 2,
"verified_at": "2026-04-30T00:23:02.602Z",
"first_indexed_at": "2025-11-10T08:14:00.000Z",
"vies_cross_check_status": "valid_match",
"vies_name": "CD PROJEKT SPÓŁKA AKCYJNA",
"vies_match_score": 0.94,
"vies_checked_at": "2026-04-30T00:23:01.000Z",
"vies_vat_id": "PL7342867148",
"confirmation_count": 5,
"source_breakdown": { "registry": 3, "search": 1, "node_scan": 0, "opc": 0, "bulk_import": 1 },
"first_seen": "2025-11-10T08:14:00.000Z",
"last_confirmed": "2026-04-30T00:23:02.602Z"
},
"meta": {
"cached": true,
"enriched": false,
"source_count": 3,
"fetched_at": "2026-04-30T00:23:02.602Z",
"expires_at": "2026-05-07T00:23:02.602Z"
}
}Notes on meta.country_counts
When country= is supplied, country_counts reflects only the filtered country (post-filter counts). Without country=, it reports counts across every country present in the result set. meta.countries follows the same source — it is always Object.keys(country_counts).
Rate limits
| Plan | Per minute | Per day | Validity |
|---|---|---|---|
Trial (b2t_trial_*) | 20 | 200 | 14 days |
Limits are enforced per API key. Exceeding either limit returns a 429 status with a Retry-After header. Higher tiers are issued on request — contact contact@b2trust.com.
Error codes
| Code | Status | Description |
|---|---|---|
| 400 | Bad Request | Missing or invalid query parameters |
| 401 | Unauthorized | Missing or invalid API key |
| 404 | Not Found | Company or resource not found |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Unexpected server error |
Code examples
Python
import requests
response = requests.get(
"https://b2trust.com/api/v1/search",
params={"q": "CD Projekt"},
headers={"X-API-Key": "b2t_your_key"}
)
data = response.json()
for company in data["data"]:
print(company["company_name"], company["country_code"])JavaScript
const response = await fetch(
"https://b2trust.com/api/v1/search?q=CD+Projekt",
{
headers: { "X-API-Key": "b2t_your_key" }
}
);
const { data } = await response.json();
data.forEach(company => {
console.log(company.company_name, company.country_code);
});curl
curl -H "X-API-Key: b2t_your_key" \
"https://b2trust.com/api/v1/search?q=CD+Projekt&country=PL&limit=5"