# EU Supplier Watch (`shnaider/eu-supplier-watch`) Actor

Monitor EU supplier VAT and legal-entity changes automatically using official VIES and GLEIF data.

- **URL**: https://apify.com/shnaider/eu-supplier-watch.md
- **Developed by:** [SHNAIDER THINGS](https://apify.com/shnaider) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 supplier checks

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 Supplier Watch

**Monitor EU supplier VAT and legal-entity changes automatically.**

EU Supplier Watch helps businesses monitor supplier information across the European Union using official public data from **EU VIES** and **GLEIF**.

Add a supplier once and check whether important company information has changed over time.

### What it monitors

EU Supplier Watch can track changes in:

- VAT validation status
- Registered company name
- Registered address
- LEI status
- Legal entity information available through GLEIF

Instead of manually checking the same suppliers again and again, you can maintain a baseline and identify meaningful changes when they occur.

### How it works

#### Single Check

Check one supplier using:

- EU country code
- VAT number
- Optional expected company name
- Optional LEI

The Actor retrieves available official information and returns a structured result.

#### Supplier Monitor

Submit multiple suppliers as a list.

On the first run, EU Supplier Watch creates a baseline for each processed supplier.

On later runs, it compares the latest official data with the previous baseline and reports whether anything meaningful changed.

Possible monitoring results include:

- `BASELINE_CREATED`
- `NO_CHANGE`
- `CHANGED`
- `REVIEW`
- `SOURCE_ERROR`

### Set up your check

Enter a supplier in the Apify input form and run a factual VAT / LEI check.

![Real Apify Single Check input for BANCA TRANSILVANIA S.A., VAT RO5022670](https://api.apify.com/v2/key-value-stores/GaPI7uGpwZlcV4HIx/records/01-input-real.png)

### Review the result

See status, identity score, and confidence in the real Apify output table.

![Real Apify output showing NO\_CHANGE, identity score 100 and HIGH confidence](https://api.apify.com/v2/key-value-stores/GaPI7uGpwZlcV4HIx/records/02-output-real.png)

### Track repeated checks

Use repeated checks to keep a supplier baseline and spot meaningful updates over time.

![Existing successful repeated supplier check showing NO\_CHANGE in Apify](https://api.apify.com/v2/key-value-stores/GaPI7uGpwZlcV4HIx/records/03-monitor-real.png)

### Example use cases

EU Supplier Watch is useful for:

- Procurement teams
- Finance and operations teams
- Supplier management
- Vendor databases
- Marketplace operators
- B2B companies working with EU suppliers

### Data sources

#### EU VIES

Used to validate EU VAT numbers and retrieve company information when available.

#### GLEIF

Used to retrieve Legal Entity Identifier (LEI) and related legal-entity information when available.

Both are official public data sources.

### Output

Results are returned as structured Dataset items that can be:

- viewed directly in Apify
- exported as JSON, CSV or Excel-compatible data
- accessed through the Apify API
- connected to automation workflows

### Important limitations

EU Supplier Watch provides factual monitoring of publicly available VAT and legal-entity information.

It is **not**:

- KYC or AML verification
- Fraud detection
- Credit scoring
- Legal advice
- Sanctions screening

Sanctions screening is intentionally not included in the current version.

Source availability and returned company details depend on the official public databases.

***

**A thing by SHNAIDER THINGS.**

Useful things for annoying problems.

# Actor input Schema

## `mode` (type: `string`):

Single checks one company; Monitor compares your list with previous successful checks.

## `country` (type: `string`):

Single Check country; monitor entries specify their own countries.

## `vatNumber` (type: `string`):

VAT identifier to validate with official VIES on behalf of the requesting user. Optional country prefix.

## `expectedCompanyName` (type: `string`):

Company legal name, 1–250 characters.

## `website` (type: `string`):

Informational only; no website requests are made.

## `supplierList` (type: `string`):

Monitor only: one VAT number,company name per line. VAT must include country prefix. Quote company names containing commas. Maximum 100 rows.

## `suppliers` (type: `array`):

Monitor only: array of objects with country, vatNumber, expectedCompanyName. Use this OR Supplier List text, not both.

## `stateStoreName` (type: `string`):

Keep this unchanged for recurring runs. Use a separate name for an independent supplier watch. Lowercase letters, numbers and hyphens.

## Actor input object example

```json
{
  "mode": "single",
  "country": "RO",
  "stateStoreName": "eu-supplier-watch-v1"
}
```

# Actor output Schema

## `report` (type: `string`):

No description

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("shnaider/eu-supplier-watch").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("shnaider/eu-supplier-watch").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 '{}' |
apify call shnaider/eu-supplier-watch --silent --output-dataset

```

## MCP server setup

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

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/uBTBIUWtpaaQhEbiT/builds/bd4xB8c7fnpxefXHa/openapi.json
