# EU EORI Number Checker – Customs Registration Validation (`wsystem/eu-eori-checker`) Actor

Validate EU EORI numbers via the official European Commission EOS SOAP API. Batch checks, name/address when disclosed, fair pay-per-check. MCP/AI-agent ready.

- **URL**: https://apify.com/wsystem/eu-eori-checker.md
- **Developed by:** [W System](https://apify.com/wsystem) (community)
- **Categories:** Business, Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 eori number checkeds

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## EU EORI Number Checker – Customs Registration Validation

Validate **EU EORI (Economic Operators Registration and Identification) numbers** against the official European Commission **EOS** validation service. Check one number or a **batch**, and get back **validity** plus the registered **name and address when the member state discloses them**.

Built for **importers, exporters, customs brokers, freight forwarders, marketplaces, KYB/onboarding pipelines and AI agents** (works as a tool through Apify's MCP server).

### Quick answers

- **Which source does it check?** The official European Commission EOS EORI validation service.
- **What does it cost here?** $0.005 per EORI answered by EOS plus $0.005 per run start; format errors and EOS outages are free.
- **Does it return the company name?** Only when the operator agreed to publish it in EOS; many operators withhold name and address.
- **Can I use it without Apify?** Outside Apify, the same check is on the W System REST API and remote MCP server at `https://api.wsystem.dev` (MCP endpoint `https://api.wsystem.dev/mcp/`): 20 free calls/day per IP with no API key or signup, then $0.01 per check via x402 (USDC on Base), or a monthly plan (Starter EUR 19 for 5,000 units, Pro EUR 49 for 25,000).
- **Who makes it?** [W System](https://wsystem.dev), which also runs the W System EU business data API and MCP server. Full product page with prices and FAQ: [EORI number check API](https://wsystem.dev/eori-number-check-api).

### Why this Actor

- ✅ **Official EC EOS API** – live SOAP validation from the European Commission (not a scraped mirror)
- 📦 **Batch** – up to 1,000 EORIs per run (API chunks of 10, concurrent)
- 🧹 **Input cleaning** – spaces, dots and dashes are stripped; bad formats rejected before calling EOS
- 🏢 **Name & address when disclosed** – some operators publish full details (e.g. Swedish companies); others withhold them
- 🤖 **Agent-ready** – clean JSON, usable as an MCP tool via `mcp.apify.com`
- 💶 **Fair pricing** – you pay only when EOS answered (`valid` or `invalid`). Format errors and outages are free

### Input

```json
{ "eoriNumbers": ["SE5560360793", "IE6388047V", "DE1234567"] }
```

### Output (one item per EORI)

```json
{
  "eori": "SE5560360793",
  "country_code": "SE",
  "status": "valid",
  "valid": true,
  "name": "SAAB Aktiebolag",
  "address": "SAAB Aktiebolag",
  "street": ".",
  "postal_code": "58188",
  "city": "LINKÖPING",
  "country": "Sweden",
  "request_date": "16/10/2026",
  "status_code": 0,
  "status_description": "Valid",
  "source": "EORI (European Commission EOS)",
  "source_url": "https://ec.europa.eu/taxation_customs/dds2/eos/eori_validation.jsp"
}
```

`status` is one of `valid`, `invalid`, `invalid_format`, `error`.
EORI format: 3–17 characters, two-letter country code + Basic Latin characters (digits/letters/`+`).

### Pricing

Pay per event: **$0.005 per EORI checked** + $0.005 per run start. 1,000 checks ≈ $5.
Format errors and EOS outages are **not** charged.

### Use with AI agents (MCP)

Add Apify's MCP server to your agent with this Actor as a tool:
`https://mcp.apify.com/?tools=wsystem/eu-eori-checker`

Example prompts:

- "Is SE5560360793 a valid EORI? Give me the registered name and city."
- "Before clearing this shipment, verify these importer EORIs: IE6388047V, DE1234567."
- "Check our marketplace sellers' EORI numbers and list which ones are invalid."

### Use via API

```bash
curl -X POST "https://api.apify.com/v2/acts/wsystem~eu-eori-checker/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" -d '{"eoriNumbers":["SE5560360793"]}'
```

### Use cases

Import/export compliance · customs clearance · supplier onboarding · marketplace seller verification · freight & logistics KYB · AI-agent trade tools.

### Legal & data sources

Data comes live from the public **EOS EORI validation** service of the European Commission. This Actor is independent and not affiliated with the European Commission or any customs authority. Results confirm EORI registration validity at the time of the check. They are not legal or customs advice. Name/address fields are only returned when the economic operator (or member state) has disclosed them.

Publisher: W System.

Keywords: EORI validation API, EU EORI checker, customs registration number, EOS validation, Economic Operators Registration and Identification, import export compliance, customs clearance API, MCP EORI tool, AI agent customs.

# Actor input Schema

## `eoriNumbers` (type: `array`):

EU EORI numbers with country prefix, e.g. SE5560360793, IE6388047V. Spaces, dots and dashes are stripped.

## Actor input object example

```json
{
  "eoriNumbers": [
    "SE5560360793",
    "IE6388047V",
    "DE1234567"
  ]
}
```

# Actor output Schema

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

No description

## `resultsJson` (type: `string`):

No description

# 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 = {
    "eoriNumbers": [
        "SE5560360793",
        "IE6388047V",
        "DE1234567"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("wsystem/eu-eori-checker").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 = { "eoriNumbers": [
        "SE5560360793",
        "IE6388047V",
        "DE1234567",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("wsystem/eu-eori-checker").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 '{
  "eoriNumbers": [
    "SE5560360793",
    "IE6388047V",
    "DE1234567"
  ]
}' |
apify call wsystem/eu-eori-checker --silent --output-dataset

```

## MCP server setup

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

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/6b1lO0evw0HwHOnJr/builds/xW29aNh6heyW22Zfk/openapi.json
