EU Company Register Lookup - VAT Validation & LEI Data
Pricing
from $20.00 / 1,000 company resolveds
EU Company Register Lookup - VAT Validation & LEI Data
Resolve a company name or registration number against official European business registers, validate its VAT number through VIES, and attach its LEI. One schema for every country, no personal data.
Pricing
from $20.00 / 1,000 company resolveds
Rating
0.0
(0)
Developer
joeri munsterman
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
EU Company Register Lookup — VAT Validation, LEI & Official Registry Data
Two things in one Actor:
- Bulk VAT check for all EU countries. Paste a list of VAT numbers and get valid, invalid or unknown for each, checked against the European Commission's VIES service, with the name VIES has on file.
- Company register lookup. Resolve a company name or registration number against official European business registers, with VIES validation and LEI, in one schema and with no personal data.
Bulk VAT check: without false "invalid" results
If you sell to businesses in other EU countries, you need your customer's VAT number to be valid in VIES to invoice at 0%. Checking a list sounds easy. It is not, because of how VIES behaves:
- VIES says
isValid: falsewhen a member state is merely busy. It answers HTTP 200 with auserErrorsuch asMS_MAX_CONCURRENT_REQorMS_UNAVAILABLE. A script that only readsisValidtells you a healthy customer's number is invalid. When we tested on 21 September 2026, France's VIES server refused 7 of 8 requests this way, even at one request per second, while the VIES status page showed "Available". - Every member state runs its own server, and some refuse as soon as you ask more than one thing at a time.
- Greece is
ELin VIES, notGR, and numbers from Norway, the UK or Switzerland are not in VIES at all.
What this Actor does about it:
| Four outcomes, never guessed | geldig (valid), ongeldig (invalid), onbekend (VIES gave no answer, with the reason), onjuist-formaat or buiten-vies |
| Retries that do not stall your list | Every number is asked once first; only the unknown ones are retried at the end, in rounds with pauses, so an overloaded country can recover |
| Pay only for answers | Only valid or invalid results are billed. Unknown, malformed and non-EU numbers are free |
| Your order kept | Every row has positie, its position in your input; duplicates are checked once |
| Messy input accepted | nl 8104.33941.b01 is read as NL810433941B01; GR becomes EL |
Example row:
{"type": "btw-controle","positie": 1,"invoer": "nl 8104.33941.b01","btwNummer": "NL810433941B01","land": "NL","resultaat": "geldig","naamVolgensVies": "COOLBLUE B.V.","gecontroleerdOp": "2026-09-21T21:30:48.859Z","bron": "VIES (Europese Commissie)"}
An unknown one tells you why, so you can simply run those numbers again later:
{"positie": 3,"btwNummer": "FR14652014051","resultaat": "onbekend","reden": "VIES gaf geen uitsluitsel (MS_MAX_CONCURRENT_REQ). Probeer het later opnieuw."}
Up to 1,000 numbers per run. Expect roughly 1 to 3 numbers per second depending on the countries involved; raise the run timeout for long lists. Results are written in blocks, so if a run does hit its timeout, everything already checked is kept.
Company register lookup
| Countries | United Kingdom (Companies House), France (RNE/SIRENE), Poland (KRS), Norway (Brreg), Finland (PRH/YTJ) |
| No keys needed | UK data comes through the official Companies House API; you do not need your own API key |
| Search by name or number | Company name, or a SIREN, UK company number, Polish KRS number, Norwegian org. number or Finnish business ID. Poland's KRS can only be searched by number |
| One schema | Same field names and ISO dates for every country |
| VAT | Derived where the register omits it, then verified against the European Commission's VIES service |
| LEI | Matched through GLEIF, with the match method included so you can judge confidence |
| Ranked | Every row carries a relevantie score; near-miss names are filtered out, best match first |
| No personal data | Directors, owners, sole traders, phone numbers and e-mail addresses are removed at the source |
Example output
{"land": "NO","naam": "EQUINOR ASA","registerId": "923609016","registerNaam": "Enhetsregisteret (Brreg)","rechtsvormOmschrijving": "Allmennaksjeselskap","status": "actief","opgerichtOp": "1972-09-18","sbiAchtigeCode": "06.100","adres": { "straat": "Forusbeen 50", "postcode": "4035", "plaats": "STAVANGER", "land": "NO" },"aantalMedewerkers": 21272,"btwNummer": "NO923609016MVA","btwGeldig": null,"lei": "OW6OFBNCKXC4US5C7523","leiMatchWijze": "registratienummer","relevantie": 1,"bronUrl": "https://data.brreg.no/enhetsregisteret/api/enheter/923609016"}
Three details that matter
btwGeldig is true, false or null — and null means unknown. VIES answers with HTTP 200 and isValid: false even when the member state is merely busy or offline. Treating that as "invalid" would tell you a healthy VAT number is bad. This Actor only reports false when VIES actually says INVALID, and returns null otherwise. When a number is valid, you also get the name registered with the tax authority in btwNaam.
leiMatchWijze tells you how the LEI was found. registratienummer means GLEIF's own record carries the same national ID — a firm match. naam means the legal name matched exactly, there was exactly one candidate in that jurisdiction, and no conflicting registration number. Two companies sharing a trading name will not be given the same LEI.
Sole traders are excluded by design. A one-person business is a natural person, so its registry entry is personal data under the GDPR. French personne physique entries, Norwegian ENK and Finnish yksityinen elinkeinonharjoittaja are filtered out, along with director lists, e-mail addresses and phone numbers. That makes this output usable for company screening, not for contacting individuals.
Pricing
Pay per event, so you pay for results rather than runtime:
| Event | Price |
|---|---|
vat-validated: one VAT number with a definitive valid or invalid answer from VIES, in the bulk check or the register lookup | $0.005 |
company-resolved: one company found in an official register | $0.02 |
lei-matched: only when a LEI is actually attached | $0.01 |
So checking 1,000 VAT numbers costs at most $5, and less if some come back unknown.
Sources and attribution
All data comes from official, openly reusable sources:
- United Kingdom — Companies House API. Contains public sector information licensed under the Open Government Licence v3.0. Officers are not retrieved.
- Poland — KRS API, Ministry of Justice. Only the company section of the extract is used; the section listing board members and proxies is never read.
- France — recherche-entreprises.api.gouv.fr (INSEE/RNE)
- Norway — Brønnøysundregistrene (NLOD)
- Finland — PRH open data
- VAT — European Commission VIES
- LEI — GLEIF (CC0)
Registry data reflects what the source publishes; this Actor does not correct or supplement it.
Limits
- Name search follows each register's own matching, then re-ranks. Very short or very generic terms return broad results; raise
minimaleRelevantieto tighten them. - Norway and the UK are outside the EU, so VIES cannot validate their VAT numbers. UK VAT numbers are not in Companies House either, so that field stays empty for UK companies.
- Polish VAT numbers are taken from the NIP in the KRS extract and validated through VIES.
- A register can be briefly unavailable. The run continues on the remaining countries and reports which one failed, rather than failing entirely.
Found a wrong field or want another country? Open an issue on the Actor page.