Company registry API
One endpoint, 6 official registers, no key. Every field carries the register it came from and the second it was read.
Quickstart
curl "https://lemreveal.com/api/public/v1/search?q=Novo%20Nordisk&country=DK"
That is the whole integration. Base URL is https://lemreveal.com; every endpoint is CORS-open, so browser code works too.
Authentication
None. There are no keys to request, rotate or leak. If a future endpoint writes data (creating a monitoring watch, for example) it will be authenticated and clearly marked as such — the read endpoints documented here will stay open.
Endpoints
/api/public/v1/searchLook up a company by name or registration number in its official national register.
Parameters: q (required), country (required, ISO 3166-1 alpha-2)
/api/public/v1/registersEvery register we can read, with capabilities and current health.
Parameters: provides (optional), status (optional)
/api/public/v1/statusUptime of each official register from our scheduled probes.
Parameters: none
/api/public/v1/mcpModel Context Protocol server exposing the same tools to AI clients.
Parameters: JSON-RPC 2.0 body
Response schema
{
"apiVersion": "1.0.0",
"query": "Novo Nordisk",
"country": "DK",
"countryName": "Denmark",
"register": {
"name": "Det Centrale Virksomhedsregister",
"short": "CVR",
"officialUrl": "https://datacvr.virk.dk/",
"status": "live",
"provides": { "officers": true, "filings": false, "monitoring": true }
},
"resolved": true,
"count": 1,
"results": [
{
"name": "Novo Nordisk A/S",
"registrationNumber": "24256790",
"country": "DK",
"status": "Aktiv",
"legalForm": "Aktieselskab",
"address": "Novo Alle 1, 2880 Bagsvaerd",
"city": "Bagsvaerd",
"incorporationDate": "1931-12-31",
"source": {
"register": "Det Centrale Virksomhedsregister",
"url": "https://datacvr.virk.dk/enhed/virksomhed/24256790",
"official": true,
"kind": "native_official",
"retrievedAt": "2026-09-19T09:14:02.118Z"
}
}
],
"attribution": "Data from official national company registers via LemReveal..."
}source.official — true only when the record came from the national register itself, not a mirror or fallback dataset.
source.retrievedAt — when we read it. Register data ages; a record without a timestamp is an opinion.
register.status — live, degraded or paused. Anything other than live means read the warning field before trusting the result.
resolved — false means we could not match the query to an entry. That is an answer too, and often the important one.
Rate limits
120 requests per hour per IP address, across all endpoints. Every response carriesX-RateLimit-Remaining and X-RateLimit-Reset. Over the limit returns 429 with a JSON body.
Need more? Tell us what you are building — if it is not hammering a government service, we will almost certainly say yes.
Errors
400 missing_parameter — q or country was absent.
400 invalid_query — the query was too short, too long or not a name.
404 country_not_covered — no connector for that country code.
429 rate_limited — hourly limit reached; the body names the reset time.
502 upstream_error — the register itself did not answer.
Questions
Is the company data API really free?
Yes. The lookup, register list and status endpoints are free and need no API key or account. The limit is 120 requests per hour per IP address, which exists to protect the government registers we read rather than to upsell you.
Do I need an API key?
No. There is no authentication of any kind on the public endpoints. Send a plain GET request.
Which countries does the company data API cover?
Lookups run against official national registers. Registers that are currently live and answering include United Kingdom (Companies House), Australia (ABR), Canada (Corporations Canada), France (Annuaire des Entreprises), Denmark (CVR), Norway (Brreg). Call /api/public/v1/registers for the authoritative live list — it is generated from the same table our own product uses, so it cannot overstate coverage.
Can I use the data commercially?
Yes, with attribution to lemreveal.com. The underlying records are public register data. You are responsible for complying with the individual register's own reuse terms, which we link on every response.
Does the API do KYC or sanctions screening?
No. It returns company registration data only — legal name, identifier, status, legal form, address, and officers where the register publishes them. It does not screen against sanctions lists, PEP lists or adverse media. Anyone telling you register data alone satisfies AML obligations is selling you something.
What happens if a register is down?
The response still returns, with register.status set to degraded or paused and a warning field explaining that any result came from a fallback dataset rather than a live read. We never present a cached or third-party record as a live official read.
Next
- Connect the MCP server to use the same lookups from an AI assistant.
- Monitor a register record and get emailed when a published field changes.
- Per-register access guides for what each official register offers directly.