API reference

    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

    GET
    /api/public/v1/search

    Look up a company by name or registration number in its official national register.

    Parameters: q (required), country (required, ISO 3166-1 alpha-2)

    GET
    /api/public/v1/registers

    Every register we can read, with capabilities and current health.

    Parameters: provides (optional), status (optional)

    GET
    /api/public/v1/status

    Uptime of each official register from our scheduled probes.

    Parameters: none

    POST
    /api/public/v1/mcp

    Model 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