DEV Community

ambolt
ambolt

Posted on Originally published at ambolt.dev

Resolve a company to its official record with one call

A company name in a form field is not an identity. "Equinor" could be the listed group, a subsidiary or a toastmasters club that shares the address. Before an agent enriches, scores or onboards anything, it needs the legal entity from the official register.

One request

curl "https://api.ambolt.dev/v1/entity-resolve?query=Equinor%20ASA&country=NO&free=1"
Enter fullscreen mode Exit fullscreen mode

The answer is the best match plus candidates, each with the register it came from:

{
  "matched": true,
  "bestMatch": {
    "country": "NO",
    "registry": "Brønnøysundregistrene (Enhetsregisteret)",
    "registryId": "923609016",
    "name": "EQUINOR ASA",
    "legalForm": "Allmennaksjeselskap",
    "status": "active",
    "incorporationDate": "1972-09-18",
    "lei": "OW6OFBNCKXC4US5C7523",
    "sourceUrl": "https://data.brreg.no/enhetsregisteret/api/enheter/923609016",
    "licence": "NLOD 2.0",
    "matchScore": 100,
    "matchReason": "exact normalised name"
  }
}
Enter fullscreen mode Exit fullscreen mode

Recorded 2026-10-03; fields trimmed. The record carries sourceUrl and licence, so you can show where a fact came from and under which terms it may be reused.

What goes in

A company name, a website domain, a registry number, an LEI or a VAT number. The tool works out which one it got.

Where it looks

The official registers of Norway, Finland, Czechia, Slovakia, France and the United Kingdom, Poland by KRS number, and any company with an LEI worldwide through GLEIF. Each register is queried directly; each record names its licence.

What it does not do

  • It returns companies only: no officers, directors or owners, and no sole traders (their names are personal data).
  • Scores under 90 are suggestions. Check the linked source record before acting on them.
  • It does not replace an official extract or your own KYB process.

Using it

  • As an MCP tool: add https://api.ambolt.dev/mcp to your agent and call entity_resolve (free, 30 requests a minute).
  • As an HTTP endpoint: a price in the 402 answer, paid in USDC with an x402 client. Add free=1 for one free call per tool and IP address per day.
  • As an Apify Actor with batches of up to 100.

See the EntityResolve page for inputs, sources and prices.

Top comments (1)

Collapse
 
arhancanli profile image
Arhan Canli •

Returning the source register and the licence with every match is the right design, and "scores under 90 are suggestions" is a sensible line to draw.

For anyone who needs the US side, which only reaches this through LEIs: I resolve US filers against the SEC's records in canli-fundamentals-mcp, and two cases from there might be worth handling here too.

  • Identifiers get reused. The SEC's ticker XOM currently points to ExxonMobil Holdings Corp (CIK 2115436), a new holding company, while the filer most people mean is Exxon Mobil Corporation (CIK 34088). A resolver that trusts the ticker silently returns the wrong entity, so ours reads the covered filer with the same name and says so in the response.
  • Names should only resolve when one company is clearly meant. "Alphabet" matches Alphabet Inc. and an unrelated Alphabet Holding Company, so we only take a name when it's the single match, or the only one with a current ticker; otherwise the response lists the candidates with their CIKs instead of guessing. That seems close to your matchScore threshold, just with the candidates spelled out.

Repo if useful: github.com/arhancanli/canli-fundam... (its find_company tool).