EU VAT Validator (VIES): Bulk VAT Checker
Pricing
$5.00 / 1,000 vat checkeds
EU VAT Validator (VIES): Bulk VAT Checker
Validate EU VAT numbers in bulk via the official VIES service. Returns validity, registered company name & address for all 27 states + XI. No API key, no SOAP. For finance, tax, KYB & invoicing. Works in Claude, ChatGPT & any MCP agent.
Pricing
$5.00 / 1,000 vat checkeds
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
๐ช๐บ EU VAT Validator (VIES): Bulk Checks with Company Details
Overview
EU VAT Validator turns the official VIES (VAT Information Exchange System) service into a clean, structured, bulk API. Pass a list of EU VAT numbers with country prefixes, get back one record per number with validity, status, and, for most member states, the registered company name and address.
It is built for finance, compliance, tax, and KYB (Know Your Business) teams that need to verify counterparties, validate invoices for reverse charge, or clean a customer master file. The actor covers all 27 EU member states plus Northern Ireland (XI) and paces requests to stay within VIES limits. You are charged only for definitive answers.
โ No login required | โ No API key, no SOAP | โ All 27 EU states + XI | โ MCP-ready for AI agents
Features
Bulk validation of EU VAT numbers against the official VIES service.
Company name and address returned for most member states.
Honest result handling: unavailable and invalid_format are never charged.
Structured JSON output ready for a spreadsheet, ERP, or ledger.
Zero charge on empty runs, first 10 checks free for life.
How it works
VIES is the European Commission's official VAT validation service, but it ships as a one at a time web form and a fiddly SOAP endpoint. This actor wraps VIES in a bulk friendly interface, paces requests to stay within the service limits, and normalizes the response.
For each VAT ID you submit, the actor strips spaces and punctuation, splits the 2 letter country prefix from the number, calls VIES, and writes one dataset record with validity, status, and any company details returned. If a member state's registry is temporarily down, the record is marked unavailable and not charged, so retries stay cheap.
๐งพ Input configuration
{"vatIds": ["IE6388047V","FR40303265045","DE811569869","NL000099998B57"]}
VAT IDs must include the 2 letter country prefix. Spaces and punctuation are ignored. Greece is accepted as EL or GR.
๐ค Output format
{"vat_id": "IE6388047V","country_code": "IE","vat_number": "6388047V","valid": true,"status": "valid","name": "GOOGLE IRELAND LIMITED","address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4","request_date": "2026-06-11+02:00","checked_at": "2026-06-11T13:10:00.000Z"}
Every VAT check record contains these fields:
| Field | Description |
|---|---|
๐ vat_id | Full VAT ID as submitted, normalized |
๐ country_code | 2 letter EU country prefix (or XI, EL) |
๐ข vat_number | Numeric portion of the VAT ID (no prefix) |
โ
valid | Boolean: whether the number is currently valid |
๐ถ status | valid, invalid, unavailable, or invalid_format |
๐ข name | Registered company name (null for member states that hide it) |
๐ address | Registered address (null for member states that hide it) |
๐๏ธ request_date | Date VIES processed the request |
โฑ๏ธ checked_at | ISO timestamp when the record was written |
status legend: valid and invalid are definitive answers and count against your usage. unavailable means the member state registry was down and is never charged. invalid_format means the VAT ID could not be parsed and is never charged.
๐ผ Common use cases
Invoice and reverse charge compliance
Verify every EU customer's VAT number before applying zero rated, reverse charge invoicing. Keep the request_date on file as evidence of good faith.
KYB and vendor onboarding Confirm a business counterparty exists and capture its registered name and address. Cheaper and faster than a paid data vendor.
Customer master cleanup Batch validate a CRM or ERP export and flag invalid or dormant VAT numbers. Route the flagged rows to your finance team.
Marketplace and platform compliance Validate seller VAT numbers at scale during onboarding, and schedule monthly re checks on your active seller base.
๐ Getting started
- Open the actor and paste your list of VAT IDs into
vatIds. Include the 2 letter country prefix on every entry. - Click Start. The actor paces requests to stay within VIES rate limits.
- Watch results stream into the dataset as each country registry responds.
- Export the dataset as JSON, CSV, or Excel, or pull it via the Apify API.
- Review the final summary record (
_type: summary) for counts of valid, invalid, and unavailable results.
FAQ
Do I need an API key? No. VIES is a free, official European Commission service, and this actor wraps it in a bulk friendly interface without any account setup.
Why is name or address sometimes empty?
Some member states (notably Germany) return only a valid or invalid flag, not the company details. The actor returns null for those fields. The validation is still authoritative.
What does unavailable mean?
VIES depends on each member state's own tax registry. When one is temporarily down, VIES returns a service error. The actor records unavailable and does not charge you, since there is no definitive answer.
Is this legally sufficient proof of validation?
VIES is the official EU validation service. Many tax authorities accept a VIES check (with date) as evidence of good faith. This actor records the request_date returned by VIES on every check.
Does it cover Northern Ireland?
Yes. Use the XI prefix.
Use in Claude, ChatGPT & any MCP agent
https://mcp.apify.com/?tools=themineworks/eu-vat-vies-validator
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/eu-vat-vies-validator').call({vatIds: ['IE6388047V', 'FR40303265045', 'DE811569869'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((i) => !i._type));
๐ ๏ธ Complete your KYB pipeline
Pair this validator with the rest of the themineworks compliance suite:
- Company Identity Resolver: resolve a company name to GLEIF LEI, legal name, and SEC EDGAR CIK.
- Crunchbase Scraper: company funding, investors, and firmographics.
- B2B Leads Finder: find named decision makers at target companies.
Typical flow: company-identity-resolver locks down legal identity, eu-vat-vies-validator confirms tax registration, and b2b-leads-finder attaches the humans to contact.
Found a bug or have a feature request? Open an issue on the actor's Apify Console page or reach out through the Apify profile.