VIES EU VAT Number Scraper avatar

VIES EU VAT Number Scraper

Pricing

Pay per event

Go to Apify Store
VIES EU VAT Number Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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

FieldDescription
inputOriginal submitted VAT input.
labelOptional user label copied from object input.
countryCodeTwo-letter member-state code used for the check.
vatNumberVAT number returned or normalized for the request.
normalizedVatIdCountry code plus VAT number.
isValidVIES validity result when available.
userErrorVIES status such as INVALID or input error.
nameCompany name returned by VIES when available.
addressRegistered address returned by VIES when available.
requestDateVIES request timestamp.
requestIdentifierVIES request identifier when returned.
originalVatNumberOriginal VAT number in the VIES response.
approximateApproximate-match object from VIES.
statusCodeHTTP status returned by VIES.
errorMessageRow-level error message if validation failed technically.
sourceUrlVIES REST URL used for the request.
checkedAtActor 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

  1. Open the actor on Apify.
  2. Paste your VAT IDs into the vatNumbers field.
  3. Set maxItems if you want to test only part of a list.
  4. Keep the default delay for normal batches.
  5. Start the run.
  6. 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 ApifyClient
import os
client = 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.

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.