VAT Validation API - EU VIES + Norway + Switzerland avatar

VAT Validation API - EU VIES + Norway + Switzerland

Pricing

from $0.70 / 1,000 results

Go to Apify Store
VAT Validation API - EU VIES + Norway + Switzerland

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

Martin Petrov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Features

Limited permissions

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 unavailable with 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 + monitorId returns 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

FieldWhat it does
vatNumbersVAT numbers with country prefix, up to 100
defaultCountryCountry for numbers without a prefix (optional)
requesterVatNumberYour own EU VAT number: returns the VIES consultation number
onlyNew / monitorIdReturn 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.