Marketplaces and B2B onboardingEU company ids
Check a business customer against the register before you onboard it.
Send a website domain, a VAT number or a national register id. The API answers with the company’s register id, VAT number and LEI, and checks the status live with VIES and the national register.
{
"query": { "mode": "domain", "domain": "equinor.com" },
"found": true,
"count": 1,
"data": [{
"domain": "equinor.com",
"legalName": "EQUINOR ASA",
"country": "NO",
"legalForm": "ASA",
"status": "active",
"statusSource": "no_brreg",
"vat": "NO923609016",
"lei": "OW6OFBNCKXC4US5C7523",
"leiStatus": { "entity": "ACTIVE", "registration": "ISSUED" },
"registryIds": [
{ "type": "no_orgnr", "value": "923609016", "confidence": 0.95,
"sources": ["gleif", "register_no_brreg"],
"observedAt": "2026-10-23T16:04:27Z" },
{ "type": "lei", "value": "OW6OFBNCKXC4US5C7523", "confidence": 0.95,
"sources": ["gleif"], "observedAt": "2026-10-23T00:00:00Z" }
],
"match": { "method": "domain", "confidence": 0.95 }
}]
}- 214,275
- domain-to-id pairs for European companies
- 174,910
- company domains with at least one id
- 26
- countries with 100 or more pairs
What a call returns
- Ids
- National register id (organisasjonsnummer, Y-tunnus, SIREN, IČO, KBO, KvK, Companies House and others), VAT number and LEI. Each id lists the sources that state it and when they last did.
- Domain
- The company’s website domain, in both directions: domain to ids, or an id to the domain, with a confidence for the link.
- Status
GET /v1/companies/verifyasks the national register (Norway, Finland, France and Czechia so far) and VIES at the time of the call. Where we read no register, the answer says so and rests on VIES: VAT-registered today or not.- Register data
- Legal name and legal form as the register publishes them, and the date the status began.
Where it fits
Marketplace trader checks (DSA Art. 30)
Article 30 of the Digital Services Act asks an online marketplace to collect a trader’s trade-register number and to make best efforts to check it against freely accessible official databases. Resolve the trader’s website or the number they typed, compare it with the register and VIES, and keep the answer with its checkedAt time as your record.
B2B sign-up and e-invoicing
E-invoicing networks and tax portals address a company by its VAT number or national id. Fill both from the domain on your sign-up form, and confirm the VAT number is valid before the first invoice goes out.
Supplier and customer records
Add the register id to the domains already in your CRM or ERP, so records join on an official key instead of a company name.
What it does not do
- No people: no directors, shareholders or beneficial owners (UBO), and no identity documents.
- Not a full KYB or AML check: no sanctions or PEP screening, no financial statements, no credit score. Use it as the company-identity step inside your own process.
- Sole traders and other natural persons get a status and nothing else, because their records are personal data.
- Coverage is uneven. It is strongest where the law puts the id on the company website and where the register publishes websites (Germany, Norway, Finland, France, Czechia), thin in southern and eastern Europe. See coverage by country.
Examples
Domain to ids (the response is shown above):
curl -s "https://api.arcadiumdata.io/v1/companies/resolve?domain=equinor.com" \
-H "Authorization: Bearer $ARCADIUM_API_KEY"A VAT number, checked live with the Czech register (ARES) and VIES:
curl -s "https://api.arcadiumdata.io/v1/companies/verify?vat=CZ27082440" \
-H "Authorization: Bearer $ARCADIUM_API_KEY"{
"query": { "id": null, "country": null, "vat": "CZ27082440" },
"status": "active",
"statusBasis": "register",
"country": "CZ",
"registryId": "27082440",
"vatNumber": "CZ27082440",
"legalName": "Alza.cz a.s.",
"register": { "source": "cz_ares", "status": "active", "cached": false, ... },
"vat": { "vatNumber": "CZ27082440", "valid": true, "source": "vies", "cached": false, ... },
"checkedAt": "2026-10-24T09:12:03Z"
}Also ?id=923609016&country=NO for a register id, and ?name= with country= on resolve. Full schema: openapi.json, API docs.
Pricing
Today each resolve or verify call counts as one call of your API plan’s monthly quota. A verify call makes a live request to the register and VIES, so it will get its own per-call price. Plans and prices are on the pricing page.
Try it on your own customers.
The free API key includes 1,000 calls a month and needs no card.
Public sources and official registers, read without logging in. No personal data.