European Company Registry Search: VAT, LEI & Business Data
Pricing
from $4.00 / 1,000 company records
European Company Registry Search: VAT, LEI & Business Data
Company search in official European business registers: France (Sirene), Norway, Finland, Czechia, Poland (KRS), plus LEI lookup and EU VAT (VIES) validation. Search by company name, registry number, VAT number or LEI. Normalised JSON, open licences.
Pricing
from $4.00 / 1,000 company records
Rating
0.0
(0)
Developer
Post Atelier
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
What does European Company Registry Search do?
It's a company registry search and EU VAT validation tool for the official government business registers of France, Norway, Finland, Czechia and Poland, with LEI lookup for the rest of the world. It returns one clean, normalised record per company. You get the legal name, registry number, legal form, status, incorporation date, registered address, activity codes, VAT number, LEI and, where the register publishes them, revenue and net income.
Data comes straight from the public APIs of the registers. There's no scraping of third-party aggregators, so results don't break when someone redesigns a website, and every record says which register it came from and under which open licence.
| Country | Register | Search by name | Lookup by ID | Extras |
|---|---|---|---|---|
| 🇫🇷 France | Sirene / RNE via Annuaire des Entreprises | ✅ | SIREN, SIRET, FR VAT | Revenue and net income, headcount band |
| 🇳🇴 Norway | Brønnøysund (Enhetsregisteret + Regnskapsregisteret) | ✅ | Organisasjonsnummer, NO…MVA | Annual accounts (company and group), share capital, employees |
| 🇫🇮 Finland | PRH / YTJ | ✅ | Y-tunnus, FI VAT | Previous names, VAT registration |
| 🇨🇿 Czechia | ARES | ✅ | IČO, CZ VAT | All CZ-NACE activity codes |
| 🇵🇱 Poland | KRS (National Court Register) | ❌ | KRS number | PKD activities, share capital |
| 🌍 Everywhere else | GLEIF LEI index | ✅ (LEI holders) | LEI | Germany, Netherlands, Italy, Spain… for companies with an LEI (for the UK, use UK Companies House) |
Optional: EU VAT validation against the European Commission's VIES service.
What you get
A real run with four mixed queries (a name, a Norwegian org number and two VAT numbers), first match shown for each:
| Query | Company | Country | Registry ID | Legal form | Status | Incorporated | VAT | LEI |
|---|---|---|---|---|---|---|---|---|
| Decathlon | DECATHLON | FR | 306138900 | SE (société européenne) | active | 1977-01-01 | FR51306138900 | 9695007JOO3V2B0GMP47 |
| 923609016 | EQUINOR ASA | NO | 923609016 | Allmennaksjeselskap (ASA) | active | 1972-09-18 | NO923609016MVA | OW6OFBNCKXC4US5C7523 |
| FI01120389 | Nokia Oyj | FI | 0112038-9 | Public limited company | active | 1896-12-19 | FI01120389 | 549300A0JPRWG1KI7U06 |
| CZ00177041 | Škoda Auto a.s. | CZ | 00177041 | Akciová společnost (a.s.) | active | 1990-11-20 | CZ00177041 | 529900I8XOZDM4ZQSQ21 |
Each row is a full JSON record with the registered address, activity codes, source link and licence (see the output example below). Download as JSON, CSV or Excel, or send it to Sheets or your CRM.
Run it on a schedule: Slack, e-mail, Google Sheets or a webhook
Set it up once and get a re-check of your supplier or customer list automatically:
- Save a task. Fill in the input (or paste the JSON below in the JSON editor) and click Save as a new task.
{ "queries": ["FR51306138900", "923609016", "CZ00177041"], "checkVat": true, "onlyActive": false }
- Schedule it weekly or monthly. Open Schedules in the left menu of the Apify Console, create a schedule, pick the time and add your task. Each run re-checks every company, so a supplier that is struck off or loses its VAT registration shows up with its new status.
- Send the results somewhere. In the task's Integrations tab:
- Slack: "Send notification via Slack" when a run succeeds.
- E-mail or Google Drive: "Send results email via Gmail" attaches the rows; "Upload results to GDrive" saves them as a file.
- Google Sheets, CRM, n8n: connect the task through Make, Zapier or n8n (listed under Automation platforms) and add a row per result.
- Webhook: add an HTTP webhook for the event Run succeeded with your URL. The payload includes
resource.defaultDatasetId; fetch the rows fromhttps://api.apify.com/v2/datasets/<defaultDatasetId>/items.
Why use it?
- KYB and onboarding. Confirm that a supplier or customer exists, is active and has the VAT number they gave you.
- CRM enrichment. Turn a list of company names or VAT numbers into registry IDs, addresses, NACE codes and LEIs.
- Compliance. LEI cross-reference plus VIES validation in one call, with a source link for your audit trail.
- AI agents. One tool call answers "is this a real, active company, and where is it registered?" It works through the Apify MCP server.
How to use it
- Paste your companies into Companies to look up, one per line. Mix names, registry numbers, VAT numbers and LEIs freely.
- Optionally restrict a name to one country with a prefix:
FR: Decathlon,NO: Equinor. - Choose which registries to search for names (all by default), and whether to validate VAT numbers.
- Run it, then download the results as JSON, CSV or Excel, or fetch them through the API.
Input example
{"queries": ["Decathlon", "923609016", "CZ00177041", "KRS 0000019193", "FI01120389", "Siemens Aktiengesellschaft"],"maxResultsPerQuery": 3,"includeLei": true,"checkVat": true}
The Actor recognises the input type automatically. It validates check digits for SIREN, Norwegian org numbers, Y-tunnus, IČO and LEI, so a 9-digit number goes to the right country.
Output example
{"query": "923609016","matchedBy": "id","country": "NO","registryId": "923609016","registryIdType": "Organisasjonsnummer","name": "EQUINOR ASA","previousNames": ["STATOIL ASA", "STATOILHYDRO ASA"],"legalForm": "Allmennaksjeselskap (ASA)","status": "active","incorporationDate": "1972-09-18","address": { "street": "Forusbeen 50", "postalCode": "4035", "city": "STAVANGER", "country": "NO", "full": "Forusbeen 50, 4035 STAVANGER, Norge" },"activities": [{ "code": "06.100", "scheme": "SN2007 (NACE Rev. 2)", "description": "Utvinning av råolje", "primary": true }],"employees": "21231","website": "https://www.equinor.com","vatNumber": "NO923609016MVA","lei": "OW6OFBNCKXC4US5C7523","shareCapital": { "amount": 5976872600, "currency": "NOK" },"financials": [{ "year": 2025, "scope": "group", "revenue": 106462000000, "netIncome": 5058000000, "currency": "USD" }],"source": {"registry": "Brønnøysund Register Centre","url": "https://data.brreg.no/enhetsregisteret/oppslag/enheter/923609016","licence": "Norwegian Licence for Open Government Data (NLOD) 2.0","attribution": "Contains data under the Norwegian licence for Open Government data (NLOD) made available by the Brønnøysund Register Centre"},"retrievedAt": "2026-10-15T08:46:16.897Z"}
With Validate VAT number on, each record also gets a vatCheck object: { "valid": true, "name": "...", "address": "...", "checkedAt": "..." }. When a member state's VIES service is down or busy, valid is null and error says why. We never report a VAT number as invalid just because VIES didn't answer.
The run's key-value store has a SUMMARY record listing queries that weren't found or aren't supported, so you can see what's missing without diffing.
Use it from code, Make, Zapier or an AI agent
Run it with one HTTP call and get the results back as JSON:
curl -X POST "https://api.apify.com/v2/acts/postatelier~eu-company-registry/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{ "queries": ["Decathlon", "923609016", "CZ00177041"], "checkVat": true }'
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("postatelier/eu-company-registry").call(run_input={ "queries": ["Decathlon", "923609016", "CZ00177041"], "checkVat": true })for item in client.dataset(run.default_dataset_id).iterate_items():print(item)
It also works from Make, Zapier, n8n and Google Sheets through Apify's integrations. AI agents can call it as a tool through the Apify MCP server, with the Actor name postatelier/eu-company-registry.
Pricing
Pay per event, no subscription:
| Event | Price |
|---|---|
| Company record returned | $0.004 ($4 per 1,000 companies) |
| VIES VAT check (only when enabled) | $0.001 |
LEI matching, retries, "not found" queries and VIES checks that VIES couldn't answer cost nothing.
Examples: 1,000 company records cost $4, or $5 with VIES validation on every record. A 250-row list of VAT or registry numbers costs $1; name searches can return up to 3 matches each (maxResultsPerQuery). Apify's free plan includes $5 of monthly credit, which covers about 1,000 company records. Set a maximum cost per run in the run options and the Actor stops cleanly when it's reached.
Data sources and licences
Every record carries source.licence and source.attribution. Keep the attribution when you republish the data.
- France: Annuaire des Entreprises API (DINUM; data from INSEE Sirene and INPI RNE). Licence Ouverte 2.0 (Etalab).
- Norway: Brønnøysund Register Centre open API. NLOD 2.0.
- Finland: PRH / YTJ open data API. CC BY 4.0.
- Czechia: ARES, Ministry of Finance of the Czech Republic. Published as open data under Act No. 106/1999 Coll. and Government Regulation 425/2016 Coll. (conditions).
- Poland: KRS open API, Ministry of Justice. Public information re-used under the 2021 Open Data Act.
- LEI: GLEIF, CC0. This product is not endorsed by GLEIF.
- VAT: VIES, European Commission. Results are for validating your own trading partners.
Privacy: company data only
This Actor returns legal entities only:
- Sole traders and other natural persons are filtered out (French entrepreneurs individuels, Norwegian ENK, Czech natural-person forms, Finnish records without a company form, GLEIF sole proprietors).
- No directors, board members, shareholders or beneficial owners are collected or returned.
- French records whose owners opted out of public diffusion are skipped.
Limits and good to know
- Poland: the KRS API has no name or NIP search, so look companies up by KRS number. Polish VAT numbers are reported as unsupported in
SUMMARY. - Germany, the Netherlands, Spain, Italy and others are covered only for companies that hold an LEI. Those registers have no free official API.
- Activity descriptions: France and Czechia return codes without descriptions. Norway, Finland and Poland include them.
- Speed: the Actor respects each register's rate limits (for example, at most about 1 GLEIF request per second). Expect roughly 1–3 seconds per company with LEI matching on. Turn LEI matching off for faster bulk runs.
Related Actors
- UK Companies House: UK company profiles, SIC codes, filings and daily new incorporations.
- Secretary of State Business Entity Search: US companies from nine state registries.
- Public Tenders & Procurement: EU, UK and US government tenders and contract awards.
FAQ
Where does the data come from? Every source is an official open-data API published for re-use, under the licences listed above. The Actor doesn't log in anywhere, solve CAPTCHAs or scrape third-party sites.
How fresh is the data? It's queried live from each register at run time (retrievedAt).
Can you add country X? Open an issue. Countries with an official open API (Belgium, Estonia, Denmark) are on the roadmap. For the UK, use our UK Companies House Actor.
What if a register is down? The other registers keep working. A query whose register is unavailable returns a free record with status: "source_unavailable", so you can retry just that one. Filter on status before importing results into a spreadsheet or CRM.
Something looks wrong. Open an issue with the query. A health check runs against every source daily, and we aim to fix breakages within a day.