EU company register APIs: how to look up and search companies in six official registers
Several European countries publish their national business register as a free official API or open dataset, and most of them need no API key. The catch is that each one has its own ID format, field names, status wording and licence, so checking a supplier in France and one in Norway means learning two systems.
The six registers at a glance
| Country | Register | Company ID | Look up | Search by name | Newly registered |
|---|---|---|---|---|---|
| France | Recherche d'entreprises API (Sirene and RNE data), recherche-entreprises.api.gouv.fr | SIREN (9 digits) | yes | yes | no |
| Norway | Enhetsregisteret, Brønnøysund Register Centre, data.brreg.no | Organisation number (9 digits) | yes | yes | yes |
| Finland | YTJ open data, Finnish Patent and Registration Office, avoindata.prh.fi | Business ID (1234567-8) | yes | yes | yes |
| Czechia | ARES, Ministry of Finance, ares.gov.cz | IČO (8 digits) | yes | yes | no |
| Ireland | Companies Registration Office open data, opendata.cro.ie | CRO number | yes | yes | yes |
| Poland | KRS open API, Ministry of Justice, api-krs.ms.gov.pl | KRS number (10 digits) | yes | no (KRS number only) | no |
A lookup in Python (Norway)
Norway's register is the easiest place to start: one GET per organisation number, JSON back, no key.
import json, urllib.request
UA = {"User-Agent": "my-company-check/1.0 (you@example.com)"}
def norway(org_number):
url = f"https://data.brreg.no/enhetsregisteret/api/enheter/{org_number}"
with urllib.request.urlopen(urllib.request.Request(url, headers=UA)) as r:
d = json.load(r)
return {
"name": d["navn"],
"legal_form": d["organisasjonsform"]["beskrivelse"],
"registered": d.get("registreringsdatoEnhetsregisteret"),
"bankrupt": d.get("konkurs"),
"in_liquidation": d.get("underAvvikling"),
"city": (d.get("forretningsadresse") or {}).get("poststed"),
}
print(norway("923609016"))
Run on 30 October 2026, it printed EQUINOR ASA, a public limited company (Allmennaksjeselskap) registered on 12 March 1995 in Stavanger, not bankrupt and not in liquidation. Identify your script in the User-Agent and space your requests out.
What trips people up
- Every register speaks its own language. Field names are in French, Norwegian, Finnish, Czech or Polish, and "active" is expressed differently in each. Map each register's status to a small set of your own values (for example active, inactive, in liquidation, bankrupt) and keep the original wording beside it.
- IDs come in different shapes. A Finnish Business ID has a hyphen, a Polish KRS number has leading zeros, and a French SIREN is 9 digits. Store the country with the ID (
FI:0112038-9,PL:0000028860) so they never collide. - Name search has limits. Each register applies its own name matching and its own paging limit: ARES (Czechia) returns at most 1,000 matches, and France, Norway and Ireland page to at most 10,000. Narrow broad names before you search. Poland's KRS API looks companies up by KRS number.
- Freshness varies. Most of these APIs answer from the live register, but Ireland's open dataset is refreshed on the register's own schedule, so a recent change can show on the CRO website first.
- Keep to company records. Some registers also list sole traders, who are individuals, and some APIs return named officers. If you only need companies, filter on legal form and read only the company fields.
- French marketing opt-outs. French records can carry a flag saying the owner has opted out of commercial prospecting. Respect it if you use the data for marketing.
Licences and attribution
All six allow reuse, and most ask you to name the source:
- France: Licence Ouverte / Open Licence 2.0. Name the source and the date of last update.
- Norway: Norwegian Licence for Open Government Data (NLOD) 2.0, with its own attribution wording.
- Finland and Ireland: CC BY 4.0. Credit the source, link the licence and say if you changed the data.
- Czechia: ARES conditions of use allow free reuse. Say when the data has been modified.
- Poland: KRS open API data is public sector information for free reuse. Name the source.
If you normalise field names or statuses, you have changed the data, so say so where the licence asks.
We built this
Disclosure: Your Evenings Ltd built and sells this. It's independent and isn't affiliated with or endorsed by any of the registers above. European Company Registry API: France, Norway, Finland +3 on the Apify Store reads these six official registers and gives you:
- One schema for six countries: register ID, legal name, legal form, status (active, inactive, in liquidation or bankrupt), registration and closure dates, registered address, main activity code, website and tax ID where the register publishes them, with the register's own wording kept alongside.
- Three modes: look up to 500 companies by ID, search by name in France, Norway, Finland, Czechia and Ireland, or list companies newly registered in Norway, Finland and Ireland.
- Monitor mode: schedule it on a watch list and get only companies that are new or have changed, with the fields that changed and their previous values.
- Licence and attribution in every row, plus a link to the source record.
- Clear status rows (
not_found,invalid_id,too_many_results) instead of silent empty results. Status rows are free.
Pricing: $0.003 per company record, and $0.01 per monitor run that finds something new (base prices; higher Apify plans pay less), plus Apify's $0.00005 start event.
FAQ
Which EU company registers have a free API? France, Norway, Finland, Czechia, Ireland and Poland all publish their register as an official API or open dataset that you can use without paying. None of the six needs a paid plan.
What does checking a supplier list cost with the Actor?
Looking up 200 companies costs 200 × $0.003 = $0.60, plus Apify's start event. An ID that isn't in the register gets a free not_found row.
Can I watch companies for changes without paying for the first run?
Yes. Turn on monitor mode and set emitBaselineOnFirstRun to false: the first run remembers your list without charge, and later runs return only companies that changed, at $0.003 each plus $0.01 for a run that finds any.
Do I have to credit the registers? Mostly yes. France, Norway, Finland, Ireland and Poland ask you to name the source, and the CC BY 4.0 registers also ask you to link the licence and say if you changed the data.
Product names and logos belong to their owners. Your Evenings Ltd is not affiliated with or endorsed by them. Company data from official national registers in France, Norway, Finland, Czechia, Ireland and Poland. Your Evenings Ltd is not affiliated with or endorsed by any of them.
