EU VAT Number Validator: VIES Check with Company Name avatar

EU VAT Number Validator: VIES Check with Company Name

Pricing

from $3.50 / 1,000 vat numbers

Go to Apify Store
EU VAT Number Validator: VIES Check with Company Name

EU VAT Number Validator: VIES Check with Company Name

Validate EU VAT numbers in bulk against VIES, the European Commission's official service. Returns whether each number is registered and active, the trader name and address where the country publishes them, and a consultation number you can keep as proof of the check.

Pricing

from $3.50 / 1,000 vat numbers

Rating

0.0

(0)

Developer

Michael Yousrie

Michael Yousrie

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Paste a list of EU VAT numbers. Get back, for each one, whether it is registered and active, the trader's name and address where the issuing country publishes them, and a consultation number you can keep as evidence that you checked.

This queries VIES, the European Commission's official VAT Information Exchange System, which forwards each request to the member state that issued the number. A valid result here is the same answer the tax authority would give.

$5 per 1,000 numbers. Numbers that could not be checked because a country's service was down are never charged.


What you get for every number

FieldExampleNotes
statusvalidvalid, invalid, unchecked or unparseable
isValidtrueRegistered and active right now
reasonVIES confirmed this VAT number is registered and activePlain English, safe to show a user
companyNameGOOGLE IRELAND LIMITEDWhere the country publishes it
companyAddress3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4Where the country publishes it
detailsWithheldByCountrytrueValid number, but that country never publishes trader details
consultationNumberWAPIAAAAV1234VIES reference, your proof of the check
countryCode, vatNumber, fullVatNumberDE, 812871812, DE812871812Normalised
requestDate2026-08-09T20:00:00.000ZWhen VIES answered
inputDE 812 871 812Exactly what you supplied, for joining back

Four statuses, and why that matters

Most VAT tools return a boolean. A boolean cannot tell you the difference between "this number is not registered" and "Germany's tax service was offline when we asked", and treating the second as the first is how a supplier gets wrongly flagged in a compliance workflow.

StatusMeaningCharged
validVIES confirms an active registrationYes
invalidVIES has no active registration for that number, or the format is not a valid EU VAT identifierYes
uncheckedThe issuing country's service was unavailable, timed out, or VIES rate limited the requestNo
unparseableNo EU VAT number could be read from that input at allNo

VIES answers HTTP 200 with isValid: false for national outages just as it does for genuinely invalid numbers, distinguishing them only by an error code buried in the response. This reads that code, retries the transient ones, and keeps the two apart.

A run also checks which member states VIES currently reports as down and says so in the log up front, so a batch of unchecked rows has a visible explanation.


Germany and Spain confirm the number but withhold the name

Several member states validate a VAT number without publishing the trader's details. Germany and Spain are the common ones. VIES returns --- in those fields.

Rather than pass that through as a literal string or silently return an empty name, this sets companyName and companyAddress to null and raises detailsWithheldByCountry: true. So an empty name means one of two clearly distinguished things, and you can tell which.


Input formatting is handled for you

Real VAT numbers arrive from invoices and spreadsheets, formatted for humans.

  • DE812871812, DE 812 871 812 and de-812.871.812 are all the same number.
  • Spaces are not treated as separators, because a spaced number is one number, not three. Line breaks, commas and semicolons split entries.
  • Greece files VAT under EL, not its ISO code GR, and GR is translated automatically.
  • Northern Ireland kept an EU VAT prefix after Brexit; GB and UK map to XI.
  • Duplicates are removed after normalising, so the same number written two ways is checked and charged once.
  • Numbers with no prefix work if you set a default country.

Common uses

Onboarding a new supplier or customer. Confirm the VAT number is real and, where published, that the registered name matches the one on the contract. consultationNumber is the record that you performed the check.

Zero-rating cross-border invoices. Charging 0% VAT on an intra-EU B2B sale depends on the customer's VAT number being valid at the time of supply. This is the check that entitlement rests on, and the consultation number is the evidence.

Cleaning a customer database. Registrations get cancelled. Re-running your existing VAT numbers finds the ones that have lapsed since you collected them.

Validating at signup. Check the number before the account is created and reject or flag it there, rather than at invoicing time.

KYB and due diligence. A valid VAT number with a matching published trader name is a cheap, official corroboration of a company's existence.


Pricing

$0.005 per number, so $5 per 1,000. One charge per number that got a real answer from VIES, valid or invalid.

Never charged for unchecked or unparseable rows, and duplicates are removed before anything runs.

Tier discounts apply automatically on paid Apify plans, down to $3.50 per 1,000.


Speed and rate limits

VIES is a free public service shared by all of Europe and it rate limits accordingly. The default of four checks at a time is deliberately conservative: it is what allows a batch of thousands to finish rather than collapse into rate-limit errors. Transient failures are retried once automatically.

Expect roughly one to two seconds per number. A list of 1,000 takes a few minutes.


Honest limits

Only EU VAT numbers, plus Northern Ireland. VIES covers the 27 member states and XI. It cannot validate UK (GB) VAT numbers post-Brexit, or Swiss, Norwegian or any other non-EU registration.

Validity is a point in time. A number valid today can be cancelled tomorrow. Keep the consultationNumber and requestDate; together they are what evidences the check for the date it was made.

Name matching is left to you. Where a country publishes the trader name, this returns it verbatim. It does not fuzzy-match it against a name you supply, because whether "Northwind Ltd" and "NORTHWIND LIMITED" are the same company is a judgment your process should make.


Frequently asked questions

How do I check if an EU VAT number is valid? Paste it in. The answer comes from VIES, the European Commission's official service, so it is the same result you would get from the VIES website, just for a whole list at once and as structured data.

Can I get the company name from a VAT number? Yes, where the issuing member state publishes it. Most do. Germany and Spain do not, and those rows are flagged with detailsWithheldByCountry.

Does this work for UK VAT numbers? No. Since Brexit, GB numbers are outside VIES. Northern Ireland numbers with the XI prefix are covered, and GB input is mapped to XI on the assumption that is what was meant.

What is a consultation number? A reference VIES issues for a validation request. It is the standard evidence that you verified a customer's VAT number on a given date, which matters if an intra-EU zero-rated sale is ever questioned.

Why did I get unchecked instead of a result? A member state's own VAT service was unavailable or rate limited the request. It is not a statement about the number. Re-run those rows later, at no charge for the failed attempt.

Is there a limit on how many I can check? No hard limit here, but VIES is a shared service, so large batches run at a deliberate pace.

Do you store the VAT numbers I check? No. Results go to your dataset in your account.


Works well with


Notes

Queries the official VIES service only. Nothing is sent to the companies themselves.