The lookup endpoint
GET https://firmatal.dk/api
There is one. It returns a single company. country
is required, and exactly one search parameter must be supplied.
Query parameters
| Parameter | Required | Meaning |
|---|---|---|
| country | yes | dk or no. Which register to search. |
| vat | one of these | Registration number. 8 digits in Denmark, 9 in Norway. |
| name | one of these | Company name. Fuzzy, accent-insensitive. |
| produ | one of these | Production-unit number. |
| phone | one of these | Phone number, 8 digits. |
| ean | one of these | E-invoicing identifier (Peppol / EAN). Resolves to the registered company. |
| address | one of these | Street address. Returns the best-matching company at that address. |
| search | one of these | Any of the above. The type is detected from the value. |
| include | no | Comma-separated: owners, production_units, einvoicing. |
| format | no | json (default) or xml. |
Registration numbers are strings.
A leading zero is significant. 01234567 and
1234567 are different companies. Never store one as an integer.
How search decides
If you pass search instead
of a named parameter, the type is inferred: a number of the register's own length is a registration number,
ten digits in Denmark is a production unit, eight digits is a phone number, and anything else is a name.
When you know what you are looking for, name it — the inference is a convenience, not a contract.
Typed endpoints
Every search type is also its own endpoint, taking the term as
q. Same response,
same country/include/format
parameters, but nothing is ever inferred — /api/name?q=12345678 searches
names, not registration numbers.
GET https://firmatal.dk/api/vat?q=12345678&country=dk
GET https://firmatal.dk/api/name?q=b%C3%B8gh&country=dk
GET https://firmatal.dk/api/produ?q=1234567890&country=dk
GET https://firmatal.dk/api/phone?q=33112233&country=dk
GET https://firmatal.dk/api/ean?q=5798009811578&country=dk
GET https://firmatal.dk/api/address?q=Bredgade+12,+8000+Aarhus&country=dk