EU VAT Number Validator (VIES) - Bulk Check avatar

EU VAT Number Validator (VIES) - Bulk Check

Pricing

Pay per usage

Go to Apify Store
EU VAT Number Validator (VIES) - Bulk Check

EU VAT Number Validator (VIES) - Bulk Check

Validate thousands of EU VAT numbers in bulk with the official VIES API. Free offline syntax pre-check, automatic retries when a country is down, company name and address, consultation number for audit trails. CSV, Excel, JSON.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Gufobyte

Gufobyte

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Validate hundreds or thousands of EU VAT numbers in one run against the European Commission's official VIES service. Get back a clean table with the validity status, the registered company name and address (where the member state discloses it), and, optionally, the official VIES consultation number you can keep as proof of due diligence.

Built for e-commerce teams, accountants, finance/ops, marketplaces and CRM clean-up jobs that need a reliable, auditable VAT ID check without writing code.

What does EU VAT Number Validator do?

  • ✅ Bulk VAT validation of all 27 EU member states + Northern Ireland (XI) through the official VIES REST API
  • 🧹 Normalises messy input: de 811-569.869, GR094259216 (mapped to EL), bare Italian partita IVA with a default country
  • 🆓 Free offline syntax pre-check per country (plus the Italian check digit): malformed numbers are flagged instantly and never charged
  • 🔁 Automatic retries with back-off when a national VIES node is busy or down (MS_UNAVAILABLE, MS_MAX_CONCURRENT_REQ...): numbers that still can't be verified are reported, not charged
  • 🧾 Consultation number (requestIdentifier) when you provide your own VAT number - handy for intra-community supply evidence
  • 🧮 Deduplication so you never pay twice for the same number
  • 📤 Export to CSV, Excel, JSON, XML, or pull results via API, Make, Zapier, n8n, Google Sheets

Why use it?

  • Check a supplier or customer list before invoicing (reverse charge needs a valid VAT ID)
  • Clean your CRM/ERP: find dead or mistyped VAT numbers in bulk
  • Monthly compliance re-checks: schedule the Actor and get only the numbers that became invalid
  • Onboarding/KYB in marketplaces: validate sellers' VAT IDs automatically through the API

How much does it cost?

This Actor uses pay-per-event pricing: you pay only for numbers that received a definitive answer from VIES (valid or invalid).

EventPrice
VAT number checked (valid or invalid answer from VIES)$3.00 per 1,000 ($0.003 each)
Syntax error, duplicate, or country service unavailablefree

Example: 2,000 numbers, of which 50 are malformed and 30 can't be reached → you pay for 1,920 checks = $5.76. Set a Maximum cost per run in the run options and the Actor stops cleanly when it is reached.

How to use it

  1. Click Try for free.
  2. Paste your VAT numbers in VAT numbers (one per line), or send them via API.
  3. Optionally set Default country code (for bare numbers) and Your own VAT number (to get consultation numbers).
  4. Click Start and download the results from the Output tab.

Input

{
"vatNumbers": ["IE6388047V", "DE 811 569 869", "00743110157", "FR123"],
"defaultCountryCode": "IT",
"requesterVatNumber": "",
"deduplicate": true,
"includeSyntaxErrors": true,
"maxConcurrency": 3,
"maxRetries": 4
}
FieldDescription
vatNumbersList of VAT numbers, with or without country prefix (required)
defaultCountryCodeCountry applied to numbers without prefix
requesterVatNumberYour own EU VAT number, to receive an official consultation number
deduplicateCheck each normalised number once (default true)
includeSyntaxErrorsOutput a free row for malformed numbers (default true)
maxConcurrencyParallel requests to VIES (1-10, default 3)
maxRetriesRetries when a member state is busy/unavailable (0-8, default 4)

Output

One row per input number. Example:

{
"input": "IE6388047V",
"vatNumber": "IE6388047V",
"countryCode": "IE",
"nationalNumber": "6388047V",
"syntaxValid": true,
"status": "valid",
"valid": true,
"name": "GOOGLE IRELAND LIMITED",
"address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
"consultationNumber": null,
"viesRequestDate": "2026-10-08T03:52:30.511Z",
"errorCode": null,
"attempts": 1,
"checkedAt": "2026-10-08T03:52:30+00:00",
"source": "VIES (European Commission)"
}

status is one of valid, invalid, syntax_error, service_unavailable, error. A run summary (counts per status) is saved in the key-value store under SUMMARY.

The dataset has two views: Overview and Needs attention (invalid, malformed or unverifiable numbers only).

Tips

  • Some countries (e.g. Germany, Spain) do not disclose name/address through VIES: you still get the validity status.
  • VIES national nodes have maintenance windows. If you see service_unavailable, re-run later with just those numbers - they were not charged.
  • Keep maxConcurrency at 3-5: VIES throttles bursts, and higher values usually cause more retries, not more speed.

All data comes from the public VIES service of the European Commission, queried through its official REST API, one request per number, exactly as the public VIES web form does. No scraping, no login, no third-party databases. Names and addresses of sole traders can be personal data under GDPR: process them only for a legitimate purpose (e.g. invoicing and tax compliance).

VIES itself states that a VIES response is not a legal certificate; for disputes, contact the competent national tax authority.

Integrations and API

Run it from the Apify API, the Apify Python/JS clients, or connect it with Make, Zapier, n8n, Google Sheets, Slack and webhooks. Schedule a weekly run to re-validate your customer base.

FAQ and support

  • Can I validate UK (GB) numbers? No, GB left VIES in 2021. Northern Ireland traders (XI) are supported.
  • Something broke? Open an issue in the Issues tab - we usually answer within 24 hours.

Made by Gufobyte - small, honest data tools.