European Company Registry Search: VAT, LEI & Business Data avatar

European Company Registry Search: VAT, LEI & Business Data

Pricing

from $4.00 / 1,000 company records

Go to Apify Store
European Company Registry Search: VAT, LEI & Business Data

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

Post Atelier

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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.

CountryRegisterSearch by nameLookup by IDExtras
🇫🇷 FranceSirene / RNE via Annuaire des Entreprises✅SIREN, SIRET, FR VATRevenue and net income, headcount band
🇳🇴 NorwayBrønnøysund (Enhetsregisteret + Regnskapsregisteret)✅Organisasjonsnummer, NO…MVAAnnual accounts (company and group), share capital, employees
🇫🇮 FinlandPRH / YTJ✅Y-tunnus, FI VATPrevious names, VAT registration
🇨🇿 CzechiaARES✅IČO, CZ VATAll CZ-NACE activity codes
🇵🇱 PolandKRS (National Court Register)❌KRS numberPKD activities, share capital
🌍 Everywhere elseGLEIF LEI index✅ (LEI holders)LEIGermany, 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:

QueryCompanyCountryRegistry IDLegal formStatusIncorporatedVATLEI
DecathlonDECATHLONFR306138900SE (société européenne)active1977-01-01FR513061389009695007JOO3V2B0GMP47
923609016EQUINOR ASANO923609016Allmennaksjeselskap (ASA)active1972-09-18NO923609016MVAOW6OFBNCKXC4US5C7523
FI01120389Nokia OyjFI0112038-9Public limited companyactive1896-12-19FI01120389549300A0JPRWG1KI7U06
CZ00177041Škoda Auto a.s.CZ00177041Akciová společnost (a.s.)active1990-11-20CZ00177041529900I8XOZDM4ZQSQ21

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:

  1. 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 }
  2. 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.
  3. 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 from https://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

  1. Paste your companies into Companies to look up, one per line. Mix names, registry numbers, VAT numbers and LEIs freely.
  2. Optionally restrict a name to one country with a prefix: FR: Decathlon, NO: Equinor.
  3. Choose which registries to search for names (all by default), and whether to validate VAT numbers.
  4. 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 ApifyClient
client = 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:

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

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.

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.