# EU VAT Number Validator (VIES) — Bulk Check (`hipersoft/eu-vat-validator`) Actor

Validate EU VAT numbers in bulk via the official VIES service: validity, registered company name and address, plus a consultation number as proof. No setup. For compliance, invoicing and KYC.

- **URL**: https://apify.com/hipersoft/eu-vat-validator.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.002 / vat checked

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## EU VAT Number Validator (VIES) — Bulk Check, Company Name & Address

Validate **EU VAT numbers in bulk** against the European Commission's official **VIES** service. For each number you get its **validity**, the **registered company name and address** (where the member state publishes it), a **consultation number** and the **check date** — into clean JSON, CSV or Excel. No key, no login. Fast and reliable.

![EU VAT Number Validator input — a list of VAT numbers in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/eu-vat-validator-input.png?v=2)

Great for **VAT compliance, invoicing, KYC/onboarding, accounting automation and lead cleaning**.

### What does EU VAT Number Validator do?

It checks each VAT number against VIES and returns one clean record per number — the parsed country code and VAT number, whether it is valid, the registered trader name and address (where published), an official consultation number and the check date. Validate one number or thousands in a single run.

### What you get

![EU VAT Number Validator output example — one structured JSON row per VAT number](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/eu-vat-validator-output.png?v=2)

- ✅ **Valid / invalid** — authoritative result from VIES
- 🏢 **Company name & address** — as registered (some states, e.g. Germany, mask these)
- 🧾 **Consultation number** — VIES proof-of-check identifier (returned when available)
- 📅 **Check date** — timestamp of the validation
- 📥 **Bulk** — validate many numbers in one run

#### Output schema

| Field | Type | Description |
|-------|------|-------------|
| `input` | string | The VAT number exactly as you submitted it. |
| `countryCode` | string | Two-letter country prefix parsed from the number. |
| `vatNumber` | string | VAT number without the country prefix. |
| `fullVat` | string | Full VAT number including the country prefix. |
| `valid` | boolean | Whether VIES reports the number as valid. |
| `name` | string | Registered company/trader name (where the state publishes it). |
| `address` | string | Registered address (where the state publishes it). |
| `requestDate` | string (ISO date) | Date the validation was performed. |
| `consultationNumber` | string | Official VIES proof-of-check identifier. |
| `status` | string | Result status (e.g. VALID, INVALID). |

### Use cases

- **VAT compliance** — verify customer and supplier VAT numbers before invoicing.
- **Invoicing** — confirm a valid VAT number to apply the correct tax treatment.
- **KYC / onboarding** — validate business identity during signup.
- **Accounting automation** — batch-check VAT numbers in your ledger.
- **Lead cleaning** — filter and enrich B2B lists with validity and company name.
- **Audit records** — keep the consultation number as proof of a check.

### How to validate EU VAT numbers

1. Add the **EU VAT Number Validator** to your Apify account.
2. Paste the VAT numbers into `vatNumbers`, each with its 2-letter country prefix.
3. Click **Run**.
4. Wait for the run to finish.
5. Export the results as JSON, CSV or Excel, or pull them via the Apify API.

### Input

```json
{
  "vatNumbers": ["IE6388047V", "DE811569869", "FR40303265045", "LU26375245"]
}
```

Include the 2-letter country prefix on each number. Spaces and dots are ignored. (Greece uses `EL`, Northern Ireland uses `XI`. Great Britain `GB` is no longer covered by VIES.)

| Field | Description |
|-------|-------------|
| `vatNumbers` | EU VAT numbers with country prefix. |

### Output

```json
{
  "input": "IE6388047V",
  "countryCode": "IE",
  "vatNumber": "6388047V",
  "fullVat": "IE6388047V",
  "valid": true,
  "name": "GOOGLE IRELAND LIMITED",
  "address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
  "requestDate": "2026-07-30+01:00",
  "consultationNumber": "WAPIAAAA...",
  "status": "VALID"
}
```

### Need more company data?

- [Domain Inspector](https://apify.com/hipersoft/domain-inspector) — domain & DNS intelligence
- [Brazil CNPJ Scraper](https://apify.com/hipersoft/brazil-cnpj-scraper) — company registry lookups
- [Contact Details Scraper](https://apify.com/hipersoft/contact-scraper) — emails, phones and socials

### FAQ

**Do I need an API key?**
No. VIES is the EU's free public validation service — no key, no login.

**How many numbers can I validate?**
As many as you like; submit them all in `vatNumbers` and the Actor checks each one.

**Why is the company name empty for some countries?**
Some member states (notably Germany) don't return the trader name/address through VIES — only validity.

**What's the consultation number?**
An official identifier proving you validated the number at that date — useful for audit/compliance records.

**What export formats are supported?**
JSON, CSV, Excel and XML, plus the Apify API.

**Can I integrate it with other tools?**
The EU VAT Number Validator can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**How does billing work?**
You pay only per VAT number checked — cheap per item, cheapest in its class.

### Related Actors

- [Domain Inspector](https://apify.com/hipersoft/domain-inspector) — domain & DNS intelligence
- [Brazil CNPJ Scraper](https://apify.com/hipersoft/brazil-cnpj-scraper) — company registry lookups
- [Contact Details Scraper](https://apify.com/hipersoft/contact-scraper) — emails, phones and socials

### Notes

Original clean-room implementation using the European Commission's public VIES service. You are responsible for how you use the data. Not affiliated with or endorsed by the European Commission.

# Actor input Schema

## `vatNumbers` (type: `array`):

EU VAT numbers to validate, each with its 2-letter country prefix — e.g. "IE6388047V", "DE811569869", "FR40303265045". Spaces/dots are ignored. Greece = EL, Northern Ireland = XI.

## Actor input object example

```json
{
  "vatNumbers": [
    "LU26375245",
    "NL822054976B01"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

The scraped results as dataset items.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "vatNumbers": [
        "IE6388047V",
        "DE811569869"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/eu-vat-validator").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "vatNumbers": [
        "IE6388047V",
        "DE811569869",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/eu-vat-validator").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "vatNumbers": [
    "IE6388047V",
    "DE811569869"
  ]
}' |
apify call hipersoft/eu-vat-validator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/eu-vat-validator"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/C8HES9YWaChhV0GqB/builds/VsnKFky4kRE9xCIu3/openapi.json
