EU VIES VAT Registry Scraper avatar

EU VIES VAT Registry Scraper

Pricing

Pay per event

Go to Apify Store
EU VIES VAT Registry Scraper

EU VIES VAT Registry Scraper

Validate EU VAT numbers in bulk with the official VIES registry. Export validity, company details, request dates, and per-row faults.

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 numbers in bulk with the official VIES registry and export audit-ready validity snapshots.

What does EU VIES VAT Registry Scraper do?

EU VIES VAT Registry Scraper checks VAT numbers against the European Commission VIES service. It accepts a batch of VAT identifiers. It normalizes country codes and VAT numbers. It returns whether each VAT number is valid. It includes the VIES request date. It includes company name and address when the member-state service returns them. It records per-row errors instead of failing an entire batch.

Who is it for?

Finance teams use it to validate customers before invoicing. Compliance teams use it to keep VAT audit snapshots. Marketplace operators use it to verify seller VAT details. RevOps teams use it to clean CRM account data. Procurement teams use it to check vendor VAT numbers. Accountants use it for EU cross-border transaction checks.

Why use this actor?

✅ Uses the official public EU VIES endpoint. ✅ No account, cookies, browser, or private API key required. ✅ Batch-friendly input for spreadsheet and CRM exports. ✅ Per-record fault fields make intermittent member-state outages visible. ✅ Output is structured for CSV, JSON, Excel, and API workflows.

What data can you extract?

FieldDescription
inputOriginal submitted VAT value.
countryCodeNormalized VIES country code.
vatNumberVAT number without country prefix.
normalizedVatCombined country and VAT number.
validBoolean validity result from VIES.
requestDateDate returned by VIES.
companyNameCompany name when available.
companyAddressCompany address when available.
checkedAtTimestamp for the actor check.
errorTypePer-record issue category.
errorMessageHuman-readable per-record error.

How much does it cost to validate EU VAT numbers?

The actor uses pay-per-event pricing. There is a small start fee per run. Each VAT validation row is charged as one result event. Use maxItems for a cheap sample run before processing a larger list. Bulk runs are usually inexpensive because the actor uses direct HTTP requests and no browser.

Input

The main input is vatNumbers. You can provide strings with a country prefix. You can also provide objects with countryCode and vatNumber. Examples:

{
"vatNumbers": ["IE6388047V", "DE123456789", "FR40303265045"],
"maxItems": 100,
"maxConcurrency": 3,
"maxRetries": 2
}

Output

Each submitted VAT number becomes one dataset row. Valid numbers include returned company fields when VIES exposes them. Invalid numbers still produce a row with valid=false. Faults and unsupported inputs include error fields. This makes reconciliation easy because output row count matches processed input count.

How to use the actor

  1. Prepare a list of EU VAT numbers.
  2. Open the actor on Apify.
  3. Paste the list into vatNumbers.
  4. Keep the default concurrency for a safe first run.
  5. Start the actor.
  6. Download results as CSV, JSON, Excel, or via API.

Tips for reliable VIES checks

Use country prefixes such as IE, DE, FR, or NL. Remove spaces and punctuation if your source file is inconsistent. Keep maxConcurrency modest for very large batches. Retry later if a member-state system returns MS_UNAVAILABLE. Store checkedAt and requestDate for audit history.

Supported countries

The actor supports VIES member-state country codes. It also accepts XI for Northern Ireland VAT checks where VIES supports it. Unsupported country prefixes are returned as per-record errors. They do not stop the run.

VIES availability caveat

VIES depends on national member-state databases. A single member state can be temporarily unavailable. The actor retries transient faults lightly. If a fault remains, the row includes faultCode, faultString, and errorMessage. This is preferable to hiding operational uncertainty.

Integrations

Connect the actor to Google Sheets with Apify integrations. Trigger it from Zapier when a new B2B lead is added. Run it from Make.com for vendor onboarding checks. Call it from your CRM enrichment workflow. Export dataset rows to your data warehouse. Schedule periodic revalidation of customer VAT records.

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/eu-vies-vat-registry-scraper').call({
vatNumbers: ['IE6388047V', 'FR40303265045'],
maxItems: 100
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/eu-vies-vat-registry-scraper').call(run_input={
'vatNumbers': ['IE6388047V', 'FR40303265045'],
'maxItems': 100,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~eu-vies-vat-registry-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"vatNumbers":["IE6388047V","FR40303265045"],"maxItems":100}'

MCP usage

Use Apify MCP to run the actor from Claude Desktop or Claude Code. MCP server URL:

https://mcp.apify.com/?tools=automation-lab/eu-vies-vat-registry-scraper

Claude Code setup:

$claude mcp add apify-vies-vat https://mcp.apify.com/?tools=automation-lab/eu-vies-vat-registry-scraper

Claude Desktop JSON config:

{
"mcpServers": {
"apify-vies-vat": {
"url": "https://mcp.apify.com/?tools=automation-lab/eu-vies-vat-registry-scraper"
}
}
}

Example prompts:

  • Validate these EU VAT numbers and summarize invalid records.
  • Check whether my vendor VAT spreadsheet contains unsupported country codes.
  • Run a VIES validation batch and return rows with company names.

Example workflows

Customer onboarding

Validate a VAT number when a customer submits a billing form. Save valid, companyName, and checkedAt into your account record.

Vendor master cleanup

Export vendor VAT numbers from ERP. Run the actor in batches. Merge normalized VAT and validity status back into the vendor table.

Periodic compliance monitoring

Schedule a monthly run for active EU customers. Compare current validity against historical snapshots. Investigate records that changed from valid to invalid.

Troubleshooting

Why is a valid VAT missing a name or address?

Some member states suppress name or address in VIES responses. The validity flag can still be useful even when company fields are empty.

Why did I get MS_UNAVAILABLE?

That fault means a national member-state service was unavailable. Try again later or reduce concurrency. The actor records the fault on the row so the batch remains usable.

Why did an input return INVALID_INPUT?

The actor could not split the value into a two-letter country code and VAT number. Use formats such as IE6388047V or { "countryCode": "IE", "vatNumber": "6388047V" }.

Data freshness

VIES returns a validation snapshot at request time. Use requestDate and checkedAt to prove when the check occurred. Repeat runs if your compliance policy requires recurring validation.

Legality

The actor queries the official public VIES VAT validation service. You are responsible for using the results in line with applicable laws, platform terms, and your compliance obligations. Do not submit personal data that is unrelated to VAT validation.

FAQ

Does this actor use a browser?

No. It uses direct HTTP SOAP requests to VIES.

Does it require proxies?

No. The official endpoint is public and was reachable directly during implementation.

Can I upload thousands of VAT numbers?

Yes, up to the input limit. For very large files, start with a smaller sample to verify formatting.

Does it enrich every company name and address?

Only when VIES/member-state systems return those fields. Some countries return validity without detailed company information.

Can one bad VAT number fail the run?

No. Bad inputs and VIES faults are emitted as result rows with error fields.

Changelog

Initial version validates batches through the VIES checkVat SOAP endpoint and exports audit-friendly result rows.