EU VAT Validation API
A free, production-ready REST wrapper around the official EU VIES service. Validate any EU VAT number with a single HTTP call — JSON responses, edge caching, sane rate limits, and GDPR-compliant audit logs.
Official VIES source
Backed by ec.europa.eu/taxation_customs/vies — the authoritative EU registry. 24h transparent edge cache reduces latency without staleness.
JSON, not SOAP
VIES exposes SOAP; we wrap it in clean REST + JSON so you can integrate in minutes rather than wrestling with WSDLs.
Rate limited & anonymous
Anonymous tier: 3 lookups/IP/day. Verify your email for 5 verifications/IP/day. Higher tiers available for partners.
GDPR compliant
IP addresses are hashed (SHA-256) before logging. No persistent PII in the anonymous flow.
Battle-tested
Powers the customer-facing /tools/eu-business-lookup tool in production. Same code path, same uptime guarantees.
Zero signup for trial
Hit the public endpoint directly to evaluate. Need higher limits or webhooks? Contact us for the partner tier.
Endpoints
All endpoints accept JSON and return JSON. Errors follow RFC 7807 (problem+json).
https://atlas.apivom.com| Method | Path | Description |
|---|---|---|
| POST | /eu-vat/lookup | Validate a country + VAT number. Returns masked company data on the anonymous tier. |
| POST | /eu-vat/verify | Confirm an email token from the double opt-in flow. Unlocks the full unmasked record. |
| POST | /eu-vat/resend | Resend the confirmation email if the user lost it. Subject to the same daily IP cap. |
Quick start
Three steps from zero to your first validated VAT number.
1 · Open the Postman collection
One-click fork into your workspace. All endpoints, sample bodies, and example responses included.
2 · Send a lookup request
POST country_code + vat_number to /eu-vat/lookup. Get masked result + a lookup ID instantly.
3 · Verify email to unmask
Optional double opt-in: capture user email, send confirmation, then call /eu-vat/verify with the token to reveal full company data.
curl -X POST 'https://atlas.apivom.com/eu-vat/lookup' \
-H 'Content-Type: application/json' \
-d '{ "country_code": "IE", "vat_number": "3515583EH" }'const res = await fetch('https://atlas.apivom.com/eu-vat/lookup', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ country_code: 'IE', vat_number: '3515583EH' }),
});
const data = await res.json();
console.log(data);import requests
resp = requests.post(
'https://atlas.apivom.com/eu-vat/lookup',
json={'country_code': 'IE', 'vat_number': '3515583EH'},
timeout=10,
)
print(resp.json())FAQ
Is this really free?
Yes — the anonymous tier is free for casual use (3 lookups per IP per day). For higher volumes, partner endpoints with API keys are available on request.
How fresh is the data?
VIES is queried in real time; successful responses are cached at the edge for 24 hours to protect both your app and the upstream service.
Do you store the VAT numbers I check?
We store the validated lookups (country code, VAT number, validity, timestamp) for audit purposes. IPs are hashed before logging. We do NOT store personal data for anonymous calls.
Why is the company name masked?
To prevent automated scraping of the registry, anonymous responses partially mask the name and address. Verify your email to receive the full record.
What happens if VIES is down?
You receive a 503 with a clear error. We do not fabricate data when the upstream is unreachable.
Can I get a partner key?
Yes. Reach out via the contact page and tell us your expected volume + integration use case.
Start validating in 60 seconds
Fork the Postman collection and send your first request — no signup, no credit card, no API key required.