VAT Validation API - EU VIES + Norway + Switzerland
Pricing
from $0.70 / 1,000 results
VAT Validation API - EU VIES + Norway + Switzerland
No API key, no login. Validate up to 100 VAT numbers per call on official registers: EU VIES (27 countries + XI), Norway and Switzerland. Name, address, VIES consultation number for audits. A register outage says unavailable, never a false invalid.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Martin Petrov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Features
Share
Problem: you sell B2B in Europe and must check your customer's VAT number before you invoice without VAT (reverse charge). The VIES website checks one number at a time, member-state databases go down often, and many VAT APIs then answer "invalid" for a valid number.
This API: up to 100 VAT numbers per call, answered from the official registers in about 0.3-0.5 s per batch:
- EU VIES (European Commission): 27 EU countries + XI (Northern Ireland)
- Norway: Bronnoysund Register Centre (company in the MVA register)
- Switzerland: Federal UID register (CHE... MWST/TVA/IVA)
For each number: status (valid / invalid / unavailable / invalid_format), company name, address, source, checked_at, and with your own VAT number the official VIES consultation number (consultation_number), which you keep as proof of the check for a tax audit.
Why it is different
- An outage is never a false "invalid". If a country's database is down, we retry 3 times; if it is still down, the row says
unavailablewith the reason. You never block a good customer because of a VIES outage. - Wrong format = instant answer (checked locally, no upstream call).
- 3 registers in one call: EU + Norway + Switzerland. Any input style:
DE 811 569 869,de811569869,GR...(mapped to EL),CHE-116.281.710 MWST,NO 923 609 016 MVA. - Supplier monitoring:
onlyNew: true+monitorIdreturns only numbers whose status, name or address changed since the last run. Schedule it daily. - Official public data only, no scraping, no personal data.
Example (API)
curl -X POST "https://api.apify.com/v2/acts/martin10291~eu-vat-number-validation/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"vatNumbers": ["IE6388047V", "DE811569869", "NO923609016MVA", "CHE-116.281.710 MWST"], "requesterVatNumber": ""}'
Output row:
{"input": "IE6388047V", "country_code": "IE", "country": "Ireland", "full_vat_number": "IE6388047V","status": "valid", "valid": true, "name": "GOOGLE IRELAND LIMITED","address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4", "consultation_number": null,"source": "EU VIES (European Commission)", "checked_at": "2026-11-11T16:05:13Z", "response_ms": 280}
Use from AI agents (MCP)
Add the Apify MCP server (https://mcp.apify.com?tools=martin10291/eu-vat-number-validation) to Claude, Cursor or any MCP client and ask: "Check these VAT numbers before I invoice: ...".
Input
| Field | What it does |
|---|---|
vatNumbers | VAT numbers with country prefix, up to 100 |
defaultCountry | Country for numbers without a prefix (optional) |
requesterVatNumber | Your own EU VAT number: returns the VIES consultation number |
onlyNew / monitorId | Return only changes since the last run (supplier monitoring) |
FAQ
Germany shows no name? German authorities do not share name/address through VIES; the number itself is still verified (see note). Some other countries do the same.
UK numbers? HMRC's API needs an OAuth application, so GB numbers are not covered; Northern Ireland (XI) is covered through VIES.
Pricing? $1 per 1,000 result rows (one row per VAT number).
Limits? The Swiss register allows about 20 checks per minute; VIES limits parallel requests per country, so we keep 6 in flight.