EU Company Registers API (FR, NO, FI, CZ, IE, PL) avatar

EU Company Registers API (FR, NO, FI, CZ, IE, PL)

Pricing

from $2.40 / 1,000 company record returneds

Go to Apify Store
EU Company Registers API (FR, NO, FI, CZ, IE, PL)

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

Your Evenings

Maintained by Community

Actor 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:552032534 or NO: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.

CountryRegisterIDLook upSearchNewly registered
FRRecherche d'entreprises API (Sirene / RNE data)SIREN (9 digits)yesyesno
NOEnhetsregisteret, Brønnøysund Register CentreOrganisation number (9 digits)yesyesyes
FITrade Register / YTJ open data, Finnish Patent and Registration OfficeBusiness ID (1234567-8)yesyesyes
CZARES, Ministry of FinanceIČO (8 digits)yesyesno
IECompanies Registration Office open dataCRO numberyesyesyes
PLKRS open API, Ministry of JusticeKRS number (10 digits)yesnono

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 statusDetail and legalFormCode.
  • Clear answers when nothing is found. An ID that isn't in the register gets a free not_found row, a badly formed ID gets invalid_id, and a search too broad for the register gets too_many_results with the match count, so an empty result is never silent.
  • You choose how much comes back. maxResults caps the whole run and maxResultsPerCountry caps 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_error row 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

  1. Counterparty check. Look up a list of register IDs and get status, legal form, address and VAT number in one table.
  2. 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.
  3. New companies. Companies registered in Norway, Finland or Ireland in the last N days, with their activity codes.
  4. 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:

CountryRegister IDNameLegal formStatusRegisteredCityActivity code
FR552032534DANONESA (board of directors)active1955-01-01PARIS70.10Z
NO923609016EQUINOR ASAAllmennaksjeselskapactive1995-03-12STAVANGER06.100
FI0112038-9Nokia OyjPublic limited companyactive1896-12-19ESPOO70100
CZ00177041Škoda Auto a.s.Akciová společnost (a.s.)active1990-11-20Mladá Boleslav
IE104547RYANAIR DESIGNATED ACTIVITY COMPANYDAC - Designated Activity Company (limited by shares)active1984-11-28SWORDS62.10
PL0000028860ORLEN SPÓŁKA AKCYJNASPÓŁKA AKCYJNAactive2001-07-19PŁOCK19.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

FieldUsed byWhat it does
modealllookup (default), search or newCompanies.
companieslookupUp to 500 entries like FR:552032534, NO 923609016 or FI-0112038-9.
defaultCountrylookupCountry for entries without a prefix.
namesearchCompany name, at least 2 characters. Each register applies its own name matching.
countriessearch, newCompaniesCountries to query. Defaults to every country that supports the mode.
activeOnlysearch, newCompaniesLeave out closed, dissolved or struck-off companies.
registeredWithinDays, registeredSince, registeredUntilnewCompaniesLast N days (default 7, up to 366), or a YYYY-MM-DD range.
maxResultsallMost company rows per run. Default 50; 0 means no limit.
maxResultsPerCountrysearch, newCompaniesMost company rows per country. Default 25; 0 means no limit.
monitorMode, emitBaselineOnFirstRun, stateStoreNameallSee 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 (default true) returns current matches on the first run. Set it to false to remember them silently, without charge, and get only later changes.
  • Use a different stateStoreName for each separate watch list.

Pricing

Pay per event:

EventPrice
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.

CountrySource registerLicence or termsAttribution line (in every row's attribution)
FRSirene (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 updateSource: INSEE (Sirene) and INPI (RNE) via DINUM API Recherche d'entreprises; date of last update in sourceUpdatedAt
NOEnhetsregisteret, Brønnøysund Register Centre (data.brreg.no)NLOD 2.0: use the licence's attribution wordingContains data under the Norwegian licence for Open Government data (NLOD) made available by the Brønnøysund Register Centre
FIYTJ 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 changedSource: Finnish Patent and Registration Office (PRH), YTJ open data
CZARES, 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 itSource: ARES, Ministry of Finance of the Czech Republic
IECompanies Registration Office open data (opendata.cro.ie)CC BY 4.0: credit the source, link the licence, say the data was changedSource: Companies Registration Office Ireland, open data (CC BY 4.0)
PLKrajowy 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 timeSource: 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_results or scan_limit row.
  • Newly registered: Norway, Finland and Ireland only; registeredWithinDays goes 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.