EU Company Registers API (FR, NO, FI, CZ, IE, PL)
Pricing
from $2.40 / 1,000 company record returneds
EU Company Registers API (FR, NO, FI, CZ, IE, PL)
European company registry API for six official registers: Ireland, Norway, Finland, France, Czechia and Poland. Lookup, search and new companies. No API key.
Pricing
from $2.40 / 1,000 company record returneds
Rating
0.0
(0)
Developer
Your Evenings
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
EU Company Registers API returns company records from six official national business registers as clean JSON rows in one schema, with no API key needed. Each row has the register ID, legal name, legal form, status (active, inactive, in liquidation or bankrupt), registration and closure dates, registered address, main activity code, website and VAT number where the register publishes them, plus the licence and a link to the source record. Use it as a company register API for KYB and company verification checks, bulk lookups of European company data and new company registrations. Three modes:
- Look up companies: up to 500 companies by country and register ID, for example
FR:552032534orNO:923609016. - Search by name: in France, Norway, Finland, Czechia and Ireland.
- Newly registered: companies registered in a date range in Norway, Finland and Ireland.
Turn on monitor mode and schedule the Actor to get only companies that are new or have changed since the last run, with the fields that changed and their previous values.
One European company registry API in place of six: the Irish company register (CRO), the Norway company register (Brønnøysund), the Finland company register (PRH / YTJ), the Polish company register (KRS), France's Sirene / RNE data and Czechia's ARES, with rows you can export as CSV, JSON or Excel.
| Country | Register | ID | Look up | Search | Newly registered |
|---|---|---|---|---|---|
| FR | Recherche d'entreprises API (Sirene / RNE data) | SIREN (9 digits) | yes | yes | no |
| NO | Enhetsregisteret, Brønnøysund Register Centre | Organisation number (9 digits) | yes | yes | yes |
| FI | Trade Register / YTJ open data, Finnish Patent and Registration Office | Business ID (1234567-8) | yes | yes | yes |
| CZ | ARES, Ministry of Finance | IČO (8 digits) | yes | yes | no |
| IE | Companies Registration Office open data | CRO number | yes | yes | yes |
| PL | KRS open API, Ministry of Justice | KRS number (10 digits) | yes | no | no |
Not affiliated with any register. This Actor is independent and is not affiliated with, endorsed by or sponsored by any of the registers or government bodies above. It reads their official public APIs and open-data feeds. Each row carries the source's licence and attribution (see Data sources, licences and attribution).
Why this one
- Official sources only. Every row comes from a register's own public API or open-data feed, not from scraped web pages, so a website redesign doesn't break it.
- One schema for six countries. The same field names, status values and address shape for every country, with the register's own wording kept in
statusDetailandlegalFormCode. - Clear answers when nothing is found. An ID that isn't in the register gets a free
not_foundrow, a badly formed ID getsinvalid_id, and a search too broad for the register getstoo_many_resultswith the match count, so an empty result is never silent. - You choose how much comes back.
maxResultscaps the whole run andmaxResultsPerCountrycaps each country, and the Actor stops before your run's maximum cost. - One country's outage doesn't fail the run. Requests are retried after rate-limit or server errors; if a register is still down, that country gets a free
source_errorrow and the others carry on. - Company-level data only. Sole traders and natural persons are skipped and never charged. Officers, phone numbers and email addresses are never put in rows.
- Polite to the sources. Requests to each register are paced and identify the Actor.
Quick start
Press Start with the prefilled input, or paste this into the JSON view of the Input tab. It looks up one company in each country.
{"mode": "lookup","companies": ["FR:552032534", "NO:923609016", "FI:0112038-9", "CZ:00177041", "IE:104547", "PL:0000028860"]}
In our test run on 30 October 2026 it returned 6 rows: DANONE (FR), EQUINOR ASA (NO), Nokia Oyj (FI), Škoda Auto a.s. (CZ), RYANAIR DESIGNATED ACTIVITY COMPANY (IE) and ORLEN SPÓŁKA AKCYJNA (PL), all active.
Companies named "ryanair" in Ireland and France, active only:
{"mode": "search","name": "ryanair","countries": ["IE", "FR"],"activeOnly": true,"maxResultsPerCountry": 10}
Companies registered in the last 7 days in Norway, Finland and Ireland:
{"mode": "newCompanies","countries": ["NO", "FI", "IE"],"registeredWithinDays": 7,"maxResultsPerCountry": 100,"maxResults": 300}
Who it's for
- KYC, onboarding and credit teams checking that a European counterparty exists, is active and is registered at the address it gave.
- Data and CRM teams enriching company lists with legal names, legal forms, activity codes and VAT numbers from the official source.
- B2B sales and market researchers following newly registered companies in a country.
Use cases
- Counterparty check. Look up a list of register IDs and get status, legal form, address and VAT number in one table.
- Change watch. Monitor a watch list daily and get a row only when a company's name, status, address, activity or website changes, for example when it enters liquidation.
- New companies. Companies registered in Norway, Finland or Ireland in the last N days, with their activity codes.
- Name check. Find registered companies matching a name across five countries at once.
Output sample
The rows from the Quick start input (run on 30 October 2026), shortened:
| Country | Register ID | Name | Legal form | Status | Registered | City | Activity code |
|---|---|---|---|---|---|---|---|
| FR | 552032534 | DANONE | SA (board of directors) | active | 1955-01-01 | PARIS | 70.10Z |
| NO | 923609016 | EQUINOR ASA | Allmennaksjeselskap | active | 1995-03-12 | STAVANGER | 06.100 |
| FI | 0112038-9 | Nokia Oyj | Public limited company | active | 1896-12-19 | ESPOO | 70100 |
| CZ | 00177041 | Škoda Auto a.s. | Akciová společnost (a.s.) | active | 1990-11-20 | Mladá Boleslav | |
| IE | 104547 | RYANAIR DESIGNATED ACTIVITY COMPANY | DAC - Designated Activity Company (limited by shares) | active | 1984-11-28 | SWORDS | 62.10 |
| PL | 0000028860 | ORLEN SPÓŁKA AKCYJNA | SPÓŁKA AKCYJNA | active | 2001-07-19 | PŁOCK | 19.20.Z |
One row as JSON, from a run on 30 October 2026 (build 0.1.3). Some fields are left out to keep it short; the full list is under Output.
{"rowType": "company","country": "NO","registerName": "Enhetsregisteret (Brønnøysund Register Centre)","idType": "organisasjonsnummer","registerId": "923609016","name": "EQUINOR ASA","legalForm": "Allmennaksjeselskap","legalFormCode": "ASA","status": "active","registeredDate": "1995-03-12","address": {"street": "Forusbeen 50","postalCode": "4035","city": "STAVANGER","region": "STAVANGER","country": "Norge","full": "Forusbeen 50, 4035 STAVANGER, Norge"},"activityCode": "06.100","activityDescription": "Utvinning av råolje","activityScheme": "SN (Norwegian NACE)","website": "www.equinor.com","vatId": "NO923609016MVA","extra": {"employees": 21231,"foundedDate": "1972-09-18","inBusinessRegister": true,"lastAnnualAccountsYear": "2025"},"recordUrl": "https://virksomhet.brreg.no/nb/oppslag/enheter/923609016","sourceUrl": "https://data.brreg.no/enhetsregisteret/api/enheter/923609016","licence": "Norwegian Licence for Open Government Data (NLOD) 2.0","licenceUrl": "https://data.norge.no/nlod/en/2.0","attribution": "Contains data under the Norwegian licence for Open Government data (NLOD) made available by the Brønnøysund Register Centre"}
Input examples
Paste any of these into the JSON view of the Input tab. Each one is the input of a ready-made example task.
Look up one company in each of the six registers
{"mode": "lookup","companies": ["FR:552032534", "NO:923609016", "FI:0112038-9", "CZ:00177041", "IE:104547", "PL:0000028860"],"maxResults": 50,"maxResultsPerCountry": 25}
New companies in Norway, Finland and Ireland (last 7 days)
{"mode": "newCompanies","countries": ["NO", "FI", "IE"],"registeredWithinDays": 7,"maxResults": 75,"maxResultsPerCountry": 25}
Company name search in five registers
{"mode": "search","name": "aurora","countries": ["FR", "NO", "FI", "CZ", "IE"],"activeOnly": true,"maxResults": 50,"maxResultsPerCountry": 10}
Input
| Field | Used by | What it does |
|---|---|---|
mode | all | lookup (default), search or newCompanies. |
companies | lookup | Up to 500 entries like FR:552032534, NO 923609016 or FI-0112038-9. |
defaultCountry | lookup | Country for entries without a prefix. |
name | search | Company name, at least 2 characters. Each register applies its own name matching. |
countries | search, newCompanies | Countries to query. Defaults to every country that supports the mode. |
activeOnly | search, newCompanies | Leave out closed, dissolved or struck-off companies. |
registeredWithinDays, registeredSince, registeredUntil | newCompanies | Last N days (default 7, up to 366), or a YYYY-MM-DD range. |
maxResults | all | Most company rows per run. Default 50; 0 means no limit. |
maxResultsPerCountry | search, newCompanies | Most company rows per country. Default 25; 0 means no limit. |
monitorMode, emitBaselineOnFirstRun, stateStoreName | all | See Monitor mode below. |
Output
Every row has rowType. A company row (company) has country, registerName, idType, registerId, name, legalForm, legalFormCode, status, statusDetail, registeredDate, closedDate, address (street, postalCode, city, region, country, full), activityCode, activityDescription, activityScheme, website, vatId, otherIds, extra (country-specific fields such as employee counts or share capital), sourceUpdatedAt, recordUrl, sourceUrl, licence, licenceUrl, attribution and retrievedAt. Fields a register doesn't publish are null. Values shortened:
{"rowType": "company","country": "NO","registerName": "Enhetsregisteret (Brønnøysund Register Centre)","idType": "organisasjonsnummer","registerId": "923609016","name": "EQUINOR ASA","legalForm": "Allmennaksjeselskap","legalFormCode": "ASA","status": "active","registeredDate": "1995-03-12","address": { "street": "Forusbeen 50", "postalCode": "4035", "city": "STAVANGER", "country": "Norge" },"activityCode": "06.100","activityScheme": "SN (Norwegian NACE)","website": "www.equinor.com","vatId": "NO923609016MVA","licence": "Norwegian Licence for Open Government Data (NLOD) 2.0"}
Status rows (status, free): invalid_input, invalid_id, not_found, removed, not_supported, too_many_results, no_matches, scan_limit, skipped_individual, skipped_other_form, skipped_restricted, skipped_inactive, source_error or budget_reached, each with a plain-English message.
The SUMMARY record in the default key-value store lists the input, rows per country, skipped records, status counts, request counts and each source's licence. The dataset has views for Overview, Changes and Status rows.
Monitor mode: only new or changed companies
Set monitorMode to true and schedule a saved task. The Actor remembers each company's name, legal form, status, closure date, address, activity code, website and VAT number in the named key-value store stateStoreName, and returns only companies it hasn't returned before (changeType: "new") or where one of those fields changed (changeType: "updated", with changedFields and previousValues).
emitBaselineOnFirstRun(defaulttrue) returns current matches on the first run. Set it tofalseto remember them silently, without charge, and get only later changes.- Use a different
stateStoreNamefor each separate watch list.
Pricing
Pay per event:
| Event | Price |
|---|---|
| Company record returned | $0.003 |
| Alert run with new or updated companies (monitor mode only, once per run that returns at least one) | $0.01 |
| Actor start | $0.00005 |
Higher Apify plans get lower prices (shown on the Pricing tab). Status rows, skipped records, the SUMMARY record and monitor runs with nothing new are free of record and alert charges. Set Maximum cost per run in the run options: the Actor stops before going over it and adds a free budget_reached row.
Data sources, licences and attribution
Every company row carries its source's licence, licenceUrl and attribution, so you can keep the attribution when you reuse the data. Rows are normalised by this Actor (field names, status values and address shape), so they are modified from the original records.
| Country | Source register | Licence or terms | Attribution line (in every row's attribution) |
|---|---|---|---|
| FR | Sirene (INSEE) and RNE (INPI), via recherche-entreprises.api.gouv.fr (DINUM) | Licence Ouverte / Open Licence 2.0: name the source and the date of last update | Source: INSEE (Sirene) and INPI (RNE) via DINUM API Recherche d'entreprises; date of last update in sourceUpdatedAt |
| NO | Enhetsregisteret, Brønnøysund Register Centre (data.brreg.no) | NLOD 2.0: use the licence's attribution wording | Contains data under the Norwegian licence for Open Government data (NLOD) made available by the Brønnøysund Register Centre |
| FI | YTJ open data, Finnish Patent and Registration Office (avoindata.prh.fi) | CC BY 4.0, PRH terms: credit the source, link the licence, say the data was changed | Source: Finnish Patent and Registration Office (PRH), YTJ open data |
| CZ | ARES, Ministry of Finance of the Czech Republic (ares.gov.cz) | ARES conditions of use: free reuse; say when data has been modified. The Ministry is not the creator of the data and accepts no liability for it | Source: ARES, Ministry of Finance of the Czech Republic |
| IE | Companies Registration Office open data (opendata.cro.ie) | CC BY 4.0: credit the source, link the licence, say the data was changed | Source: Companies Registration Office Ireland, open data (CC BY 4.0) |
| PL | Krajowy Rejestr Sądowy (KRS) open API, Ministry of Justice (api-krs.ms.gov.pl) | KRS open API, public sector information for free reuse: name the source; retrievedAt gives the retrieval time | Source: Krajowy Rejestr Sądowy, Ministry of Justice of the Republic of Poland |
French records whose owner has opted out of commercial prospecting have extra.optedOutOfCommercialProspecting: true; respect it if you use the data for marketing.
Company-level data only
This Actor returns company-level data only. Sole traders and natural persons are skipped and never charged. Directors, officers, owners, board members, phone numbers and email addresses are never put in rows: the French officer data is never requested, the Norwegian roles endpoint is not used, and the Polish board sections and email addresses are never copied.
Limits
- Look up: up to 500 companies per run.
- Search: Poland has no name search (the KRS API looks up by KRS number only). Each register applies its own name matching and its own paging limit: ARES (CZ) returns at most 1,000 matches, and France, Norway and Ireland page to at most 10,000. A search that is too broad gets a free
too_many_resultsorscan_limitrow. - Newly registered: Norway, Finland and Ireland only;
registeredWithinDaysgoes up to 366. - Records read per country: outside monitor mode, at most 500 records beyond your per-country limit are read to fill it (skipped records count towards this); in monitor mode, at most 5,000 records per country per run.
- Pacing: requests to each register are spaced out (at most 4 a second for France, about 3 a second for Czechia and 1 to 2.5 a second for the others), so large runs take time.
- Freshness: each run reads the registers at that moment, but Ireland's open dataset is refreshed on the register's own schedule, so recent changes can appear later than on its website.
Use it from code, spreadsheets or an AI agent
Run it with the Apify API or client libraries, schedule it, or connect it to Make, Zapier, Google Sheets or webhooks through Apify integrations. AI agents can call it through Apify's MCP server.
FAQ
Why are some companies missing from a search? Sole traders and natural persons are skipped and not charged, and the run says how many. French records with restricted publication are skipped too. Each register also applies its own name matching and its own limit on how deep a search can page; narrow the name if you get too_many_results or scan_limit.
Why is there no name search for Poland? The official KRS API looks up one company by KRS number only.
Why are directors and owners not included? This Actor returns company-level data only.
How current is the data? Each run reads the registers at that moment. Ireland's rows come from the register's open dataset, which the register refreshes on its own schedule, so the newest changes can appear there later than on its website.
Can I search the Irish company register? Yes. Look up by CRO number (IE:104547), search by name, or list companies newly registered in a date range. Rows come from the Companies Registration Office's open data.
How do I look up a company in the Polish company register? Use its 10-digit KRS number, for example PL:0000028860. Rows come from the official KRS open API.
Feedback
Found a problem or need a country? Open an issue on the Issues tab.