VIES EU VAT Number Scraper
Pricing
Pay per event
VIES EU VAT Number Scraper
Validate EU VAT IDs in bulk via the official VIES API. Export validity, company name, address, status, request ID, and row errors.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Validate EU VAT IDs in bulk with the official European Commission VIES REST API.
What does VIES EU VAT Number Scraper do?
This actor checks VAT numbers against the EU VIES service and returns structured validation records.
It is designed for batch workflows where a spreadsheet, CRM export, billing list, or KYB queue contains many EU VAT IDs.
Each output item contains the normalized VAT ID, validity flag, VIES status, business name, address, request date, request identifier, approximate match details, and per-row error information.
Who is it for?
- 💼 B2B sales teams qualifying EU prospects.
- 🧾 Finance teams validating VAT IDs before invoicing.
- 🛒 Ecommerce operators checking B2B tax-exempt orders.
- 🧪 Data teams cleaning CRM and ERP company records.
- 🛡️ KYB and compliance teams enriching counterparty profiles.
Why use this actor?
The VIES website is useful for manual checks, but operational teams often need repeatable bulk validation.
This actor turns the official VIES response into export-ready Apify dataset rows.
It captures both successful validation fields and failed-row diagnostics, so bad inputs do not stop the whole run.
Official data source
The actor calls the official European Commission VIES REST endpoint.
Example source URL pattern:
https://ec.europa.eu/taxation_customs/vies/rest-api/ms/DE/vat/123456789
Data you can extract
| Field | Description |
|---|---|
input | Original submitted VAT input. |
label | Optional user label copied from object input. |
countryCode | Two-letter member-state code used for the check. |
vatNumber | VAT number returned or normalized for the request. |
normalizedVatId | Country code plus VAT number. |
isValid | VIES validity result when available. |
userError | VIES status such as INVALID or input error. |
name | Company name returned by VIES when available. |
address | Registered address returned by VIES when available. |
requestDate | VIES request timestamp. |
requestIdentifier | VIES request identifier when returned. |
originalVatNumber | Original VAT number in the VIES response. |
approximate | Approximate-match object from VIES. |
statusCode | HTTP status returned by VIES. |
errorMessage | Row-level error message if validation failed technically. |
sourceUrl | VIES REST URL used for the request. |
checkedAt | Actor timestamp for the validation. |
How much does it cost to validate EU VAT numbers?
Pricing uses Apify pay-per-event billing.
There is a $0.005 start event for each run and a tiered per-result event for every VAT validation row saved to the dataset.
Current per-result prices are: FREE $0.00017441, BRONZE $0.00015166, SILVER $0.00011829, GOLD $0.000090996, PLATINUM $0.000060664, and DIAMOND $0.000042465.
Exact live pricing is also shown on the Apify actor page before you start a run.
Input options
The main input is vatNumbers.
You can provide simple strings:
["DE123456789", "IE6388047V", "FR40303265045"]
You can also provide objects:
[{ "countryCode": "DE", "vatNumber": "123456789", "label": "Supplier A" },{ "countryCode": "FR", "vatNumber": "40303265045", "label": "Customer B" }]
Input parameters
vatNumbers— array of VAT strings or VAT objects.countryCode— fallback country code for numbers without a prefix.maxItems— maximum VAT IDs to process from the input array.delayMs— delay between VIES requests.
Output example
{"input": "DE123456789","countryCode": "DE","vatNumber": "123456789","normalizedVatId": "DE123456789","isValid": false,"userError": "INVALID","name": null,"address": null,"requestDate": "2026-06-30T03:18:59.799Z","requestIdentifier": "","statusCode": 200,"errorMessage": null}
How to run it
- Open the actor on Apify.
- Paste your VAT IDs into the
vatNumbersfield. - Set
maxItemsif you want to test only part of a list. - Keep the default delay for normal batches.
- Start the run.
- Export the dataset as JSON, CSV, Excel, XML, or via API.
Tips for better results
Use country prefixes whenever possible.
Remove spaces and punctuation if your source system stores formatted VAT IDs.
Use object input with label when you need to map results back to internal customer IDs.
Keep a modest delay for large batches because VIES is an official public service.
Error handling
Bad rows are returned as dataset items with userError and errorMessage.
A missing country code does not crash the run.
A temporary VIES response issue is captured on the affected row.
This makes the actor suitable for batch cleaning jobs where some source records are incomplete.
Integrations
Use the actor in Make, Zapier, n8n, Apify API, Google Sheets automation, CRM enrichment pipelines, or data warehouse ingestion jobs.
Common workflows include validating leads before sales routing, checking VAT IDs before invoice creation, and refreshing supplier master data.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/vies-eu-vat-number-scraper').call({vatNumbers: ['DE123456789', 'IE6388047V'],});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/vies-eu-vat-number-scraper').call(run_input={'vatNumbers': ['DE123456789', 'IE6388047V']})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~vies-eu-vat-number-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"vatNumbers":["DE123456789","IE6388047V"]}'
MCP usage
Connect this actor to Apify MCP at:
https://mcp.apify.com/?tools=automation-lab/vies-eu-vat-number-scraper
Claude Code setup:
$claude mcp add apify-vies-vat https://mcp.apify.com/?tools=automation-lab/vies-eu-vat-number-scraper
MCP JSON configuration:
{"mcpServers": {"apify-vies-vat": {"url": "https://mcp.apify.com/?tools=automation-lab/vies-eu-vat-number-scraper"}}}
Example prompts:
- "Validate these EU VAT numbers and return invalid records only."
- "Check whether this supplier VAT ID is valid in VIES."
- "Create a CSV-ready table from these VAT validation results."
Claude Code workflow
Use Apify MCP in Claude Code to validate VAT IDs while preparing onboarding scripts, billing checks, or CRM cleanup jobs.
Ask Claude to call the actor, inspect the dataset, and summarize invalid records.
Claude Desktop workflow
Add the Apify MCP endpoint in Claude Desktop and request a VIES validation run from a pasted list of VAT IDs.
The dataset export can then be downloaded from Apify.
Legality
This actor uses the official EU VIES validation endpoint.
Only submit VAT IDs you are allowed to process.
Respect applicable privacy, tax, and data-processing rules in your jurisdiction.
FAQ
Can I validate VAT IDs from multiple EU countries in one run?
Yes. Include the two-letter country prefix in each VAT ID, such as DE, FR, IE, ES, IT, NL, or PL.
Does the actor use the official VIES source?
Yes. It calls the official European Commission VIES REST API and stores the response fields as dataset rows.
Troubleshooting: VIES returns invalid
An INVALID status means VIES did not validate that VAT number at the time of the request.
Check that the country code is correct and that the number is not formatted with an extra prefix.
Troubleshooting: missing name or address
Some member states may return limited business details.
A valid result can still have no public name or address fields.
Troubleshooting: temporary VIES issues
VIES can occasionally return temporary member-state availability errors.
Keep failed-row diagnostics and retry affected rows later if the error is not an input problem.
Related scrapers and tools
Explore other automation-lab actors for company enrichment, contact discovery, and compliance data workflows.
Use this VAT validator together with CRM enrichment actors when building EU B2B lead pipelines.
Changelog
- Initial version: bulk VAT validation using the official EU VIES REST API.
Support
If a VAT number behaves differently from the VIES website, include the input VAT ID, run ID, and output row in your support request.