API Reference
eubase normalizes company data from French (SIRENE), British (Companies House), and EU VAT (VIES) registries into a single JSON schema.
Base URL
https://eubase.dev/api/v1Authentication
All requests require an API key passed in the X-API-Key header. Keys are prefixed with eb_live_ and can be generated from your dashboard.
curl 'https://eubase.dev/api/v1/company/search?name=doctolib&country=FR' \
-H 'X-API-Key: eb_live_your_key_here'Keys are shown only once at creation and stored as a SHA-256 hash. If you lose a key, revoke it and generate a new one.
/v1/company/search
Search by company name within a country registry. Returns the best matches ranked by confidence score. Disambiguation logic filters CSEs, comités d'entreprise, and pure holding companies for French results.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Company name or trade name |
| country | FR | GB | yes | Registry country |
| limit | integer 1–5 | no | Max results (default: 3) |
Example request
curl 'https://eubase.dev/api/v1/company/search?name=doctolib&country=FR' \
-H 'X-API-Key: eb_live_...'Response 200
{
"results": [
{
"id": "FR_794598813",
"confidence": 0.98,
"name": "Doctolib",
"legal_name": "DOCTOLIB",
"country": "FR",
"registry_id": "794598813",
"status": "active",
"incorporation_date": "2013-07-15",
"legal_form": "SAS",
"address": {
"street": "54 QUAI CHARLES PASQUA",
"city": "LEVALLOIS-PERRET",
"postal_code": "92300",
"country": "FR"
},
"industry": { "code": "62.01Z", "label": "Programmation informatique" },
"size": { "category": "ETI", "headcount_range": "1000-1999" },
"financials": {
"2024": { "revenue": 311448000, "net_income": -127499000, "currency": "EUR" }
},
"officers": [
{ "name": "Stanislas Niox-Chateau", "role": "Président de SAS", "type": "individual" }
],
"vat_number": "FR14794598813",
"sources": ["SIRENE", "VIES"],
"cached_at": "2026-05-08T10:00:00Z"
}
],
"meta": { "query": "doctolib", "country": "FR", "total": 1 }
}FR: financials is present for ~50% of companies (SAS confidentiality). null otherwise.
GB: financials is always null (Companies House metadata only). size is absent.
/v1/company/:id
Direct lookup by registry identifier. Faster than search when you already know the SIREN or Companies House number.
Parameters
| Parameter | Type | Description |
|---|---|---|
| id (path) | string | SIREN (9 digits) or CH Number (8 chars) |
| country | FR | GB | Required to disambiguate |
Example requests
# French company by SIREN
curl 'https://eubase.dev/api/v1/company/794598813?country=FR' \
-H 'X-API-Key: eb_live_...'
# British company by Companies House number
curl 'https://eubase.dev/api/v1/company/09346234?country=GB' \
-H 'X-API-Key: eb_live_...'Response schema is identical to a search result but without the confidence field.
/v1/vat/validate
Validate a VAT number against the EU VIES system. Covers all 27 EU member states.
Request body
{ "vat_number": "FR14794598813" }Example
curl -X POST 'https://eubase.dev/api/v1/vat/validate' \
-H 'X-API-Key: eb_live_...' \
-H 'Content-Type: application/json' \
-d '{"vat_number":"FR14794598813"}'Response 200
{
"vat_number": "FR14794598813",
"valid": true,
"country_code": "FR",
"name": "SAS DOCTOLIB",
"address": "54 QUAI CHARLES PASQUA\n92300 LEVALLOIS PERRET",
"checked_at": "2026-05-08T10:00:00Z"
}When valid is false, name and address are absent. Results are cached for 24 hours.
Errors
All errors follow RFC 7807 with Content-Type: application/problem+json.
{
"type": "https://eubase.dev/errors/401",
"title": "Invalid or missing API key",
"status": 401
}Status codes
| Code | Meaning |
|---|---|
| 401 | API key missing or invalid |
| 422 | Invalid parameters — detail in errors[] |
| 429 | Monthly quota exceeded |
| 503 | Upstream registry unavailable (safe to retry) |
Rate Limits
Quotas reset on the first day of each calendar month (UTC). When the quota is exceeded, the response includes:
| Header | Description |
|---|---|
| X-Quota-Limit | Total calls allowed this month |
| X-Quota-Reset | ISO 8601 timestamp of the next reset |
Plans
| Plan | Calls / month | Price | Overage / call |
|---|---|---|---|
| Free | 100 | €0 | — |
| Starter | 5,000 | €49/mo | €0.015 |
| Pro | 30,000 | €149/mo | €0.010 |
| Scale | 150,000 | €499/mo | €0.005 |
Overage is billed automatically at the end of the month via Stripe metered billing. You receive an email alert at 80% and 100% of your quota.
Cache hits count toward your quota. Results are cached for 24 hours — identical queries within that window serve from cache at the same cost as a live call.