EU VAT Validator (VIES) - Bulk Check & Company Data
Pricing
$5.00 / 1,000 vat number checkeds
EU VAT Validator (VIES) - Bulk Check & Company Data
Validate EU VAT numbers in bulk against the official VIES service. Get validity and company details when supplied by VIES. Pay $5 per 1,000 unique completed checks; duplicates, invalid formats and unavailable responses are not charged. Platform usage included.
Pricing
$5.00 / 1,000 vat number checkeds
Rating
0.0
(0)
Developer
Andrea Bonati
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
EU VAT Number Validator (VIES) — Bulk Check & Company Data
Validate EU VAT numbers in bulk against VIES, the official VAT Information Exchange System of the European Commission. Paste a list, upload a CSV or pass an array: you get back validity, the registered company name and address, and the official consultation number when supplied by VIES, which you can retain as a reference for the check.
No API key, no account with a third-party data vendor. Data comes straight from the official source.
What you get for every row
| Field | Description |
|---|---|
countryCode / vatNumber | Normalised, country prefix separated |
status | VALID, INVALID, INVALID_FORMAT, UNVERIFIED, REJECTED, NOT_PROCESSED |
valid | true, false or null when the registry could not answer |
name | Registered company name as returned by the national registry |
address | Registered address (also split into addressLines) |
consultationNumber | Official VIES request identifier (see below) |
reference | Your own record ID, copied through so you can join results back |
errorCode / errorMessage | Why a row could not be confirmed |
checkedAt | Timestamp of the check |
charged | Whether this row generated one confirmed paid event; always false for duplicates and non-monetized runs |
Why this Actor instead of a raw VIES call
It does not charge you for numbers that cannot possibly be valid. Every input is first checked offline against the official national syntax rules — and, for Italian numbers, against the check digit. A malformed number is rejected locally, instantly, for free.
It deduplicates. The same VAT number repeated 40 times in your export is checked once and charged once.
It survives VIES. The service is public and has no SLA: national registries go down, refuse concurrent requests, and time out. Every temporary failure is retried with exponential backoff, and permanent errors are reported with a clear reason instead of a stack trace. A row that could not be confirmed is marked UNVERIFIED, never silently reported as invalid.
It gives you the consultation number. VIES issues an official request identifier only when the requester identifies itself. Fill in requesterMemberStateCode and requesterNumber with your own VAT details and every result carries the identifier you need to keep on file.
Input
Three interchangeable ways to pass data:
{"inputText": "IT00743110157\nDE811569869\nNL810462783B01"}
{"vatNumbers": [{ "countryCode": "IT", "vatNumber": "00743110157", "reference": "customer-42" },"DE811569869"]}
{"inputCsvUrl": "https://example.com/customers.csv","csvColumn": "vat_number"}
Numbers may be written as IT01234567890, it-0123 4567 890 or without a prefix if you set defaultCountryCode. GR is accepted and mapped to EL.
Coverage
All 27 EU member states, plus XI (Northern Ireland) and EU (OSS numbers of non-EU providers). GB is not covered: VIES stopped validating United Kingdom numbers on 1 January 2021.
Pricing
Price: $5.00 per 1,000 completed unique VAT checks ($0.005 each), with platform usage included. The current price is also displayed in the Apify Store pricing tab.
The custom event vat-number-checked is charged once per unique VAT number, only after VIES returns VALID or INVALID. Locally rejected rows, duplicate rows, timeouts, service errors, rejected requests and malformed responses do not trigger this event. Internal retries do not generate extra events.
Only this custom event may have a positive price: disable paid Actor-start and default-dataset-item events in Apify. Keep platform usage included when configuring the intended all-inclusive price. The Actor validates the event configuration before processing. Configuration in this repository does not activate monetization or set prices in Apify.
The budget is checked before querying VIES and again before charging. In paid mode requests are sequential, even when a higher concurrency is requested, so concurrent calls cannot spend the same final budget slot. Unstarted rows are marked NOT_PROCESSED; the last successfully charged result is kept. SUMMARY.uniqueChecked counts unique VIES checks, and SUMMARY.chargedCount counts confirmed paid events.
An uncertain billing error fails the run without automatically retrying the charge. Automatic replay of an already-started paid run (including migration/resurrection) is blocked to prevent billing its input again. Inspect saved results and the Apify billing log before manually starting another paid run. Charges and dataset writes are separate platform operations: after an interrupted write, reconcile the run before retrying.
Billing verification
Run npm test to test validation plus billing with simulated VIES responses and the real Apify SDK in local pay-per-event test mode. These tests do not charge real money. Production billing still needs a controlled verification after monetization is explicitly configured.
Good to know
A VALID answer confirms that the number exists and is active in the national registry at the moment of the check. It is one element of evidence, not a complete substitute for the checks required by your own tax obligations. Company name and address are only returned when the member state chooses to disclose them; several countries return them empty by design.
This Actor calls the official public VIES REST API. It does not scrape any website and stores no data beyond your own run.