API Reference
Call the API in one line
A read-only REST API over EU private-company registries. Every response is JSON; every error follows RFC 7807. No keys, no OAuth, no SDK to install — just HTTP.
No authentication required (preview)
The public read endpoints are open during preview. Metered API keys arrive with billing. Build now; nothing you write today will break when keys land.
Base URL
https://api.privatefinancials.euQuickstart
List the registries we cover, then drill into a company and its filings:
# 1 — what's covered?
curl -s https://api.privatefinancials.eu/v1/registries | jq '.[].registry'
# 2 — look up a company (NEOXX a.s., Slovakia)
curl -s https://api.privatefinancials.eu/v1/companies/SK/00603783 | jq
# 3 — its filing history (with download URLs)
curl -s "https://api.privatefinancials.eu/v1/companies/SK/00603783/filings?limit=5" | jq '.items[].document_url'Endpoints
/v1/registriesList registries
The catalog of covered EU company registries, each with live company and filing counts. Start here — it tells you which jurisdictions are populated.
curl -s https://api.privatefinancials.eu/v1/registriesResponse
[
{
"country_code": "BE",
"registry": "be_kbo",
"companies_count": 1000,
"filings_count": 183,
"last_observed_at": "2026-05-29T07:09:38Z"
},
{
"country_code": "GB",
"registry": "uk_ch",
"companies_count": 16,
"filings_count": 96,
"last_observed_at": "2026-05-29T08:00:02Z"
}
// … one entry per registry
]/v1/companies/{country}/{company_number}Get a company
A single company by ISO-3166 alpha-2 country code and its registry company number. Country code is case-insensitive. Optional fields are null when the source registry didn't supply them.
curl -s https://api.privatefinancials.eu/v1/companies/SK/00603783Response
{
"country_code": "SK",
"registry": "sk_orsr",
"company_number": "00603783",
"name": "NEOXX a. s.",
"status": null,
"status_normalized": null,
"company_type": null,
"incorporated_on": null,
"registered_address": null,
"filings_count": 60,
"latest_filed_at": "2025-09-25T00:00:00Z",
"external_ids": []
}/v1/companies/{country}/{company_number}/filingsList a company's filings
Paginated statutory-filing history for one company, newest first. Use ?limit=N and pass the opaque next_cursor back as ?cursor= to page. Documents are returned as short-lived presigned URLs in document_url (null = metadata-only filing).
curl -s "https://api.privatefinancials.eu/v1/companies/SK/00603783/filings?limit=2"Response
{
"items": [
{
"registry": "sk_orsr",
"source_filing_id": "11583216",
"company_number": "00603783",
"filing_type": "Regulatory News",
"filed_at": "2025-09-25T00:00:00Z",
"description": "…",
"document_url": "https://pf-artifacts…s3.amazonaws.com/…?Signature=…",
"document_content_type": "application/pdf"
}
],
"next_cursor": "WyIyMDI1LTA5LTI1VDAw…"
}/v1/filings/{registry}/{source_filing_id}Get a single filing
One filing by its registry slug and source filing id. document_url, when present, is a freshly-signed download link (~5 min TTL) — fetch it server-side or follow it promptly.
curl -s https://api.privatefinancials.eu/v1/filings/sk_orsr/11583216Response
{
"registry": "sk_orsr",
"source_filing_id": "11583216",
"country_code": "SK",
"company_number": "00603783",
"filing_type": "Regulatory News",
"filed_at": "2025-09-25T00:00:00Z",
"document_url": "https://pf-artifacts…s3.amazonaws.com/…?Signature=…",
"document_content_type": "application/pdf"
}/v1/healthHealth check
Liveness + database reachability. Returns 200 with db status.
curl -s https://api.privatefinancials.eu/v1/healthResponse
{ "status": "ok", "db": "ok", "time": "2026-05-29T07:33:38Z" }Errors
Errors return the appropriate 4xx/5xx status with an application/problem+json body:
{
"type": "about:blank",
"title": "company_not_found",
"status": 404,
"detail": "No company for (GB, 99999999).",
"instance": "/v1/companies/GB/99999999"
}Coverage
Coverage is expanding registry by registry. Call /v1/registries for the authoritative, live list and per-registry counts — that endpoint is always the source of truth, not this page.