# EU TARIC Customs Measures Lookup & Monitor (`nordicdataforge/eu-taric-customs-measures-monitor`) Actor

Look up and monitor official EU TARIC import and export measures by 10-digit goods code and partner country. Get conditions, required documents, footnotes, legal bases, and change detection from public European Commission data.

- **URL**: https://apify.com/nordicdataforge/eu-taric-customs-measures-monitor.md
- **Developed by:** [Nordic Data Forge](https://apify.com/nordicdataforge) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$15.00 / 1,000 taric lookups

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/platform/actors/running/actors-in-store#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 TARIC Customs Measures Lookup & Monitor

Turn the European Commission’s official public TARIC monthly raw-data extraction into structured, country-aware customs-measure lookups.

Enter one or more exact 10-digit TARIC goods codes and partner countries. The Actor returns one JSON item per goods-code × country pair, ready for APIs, scheduled monitoring, compliance research, internal screening, spreadsheets, and downstream automation.

No source API key, account, proxy, customs login, or permission request is required.

### What you receive

- Current import and/or export measures at the official snapshot reference date
- Correct inheritance from parent levels in the goods nomenclature
- Correct expansion of origin/destination country groups
- Country exclusions applied before delivery
- Duty or measure text as published by TARIC
- Additional codes and localized descriptions
- Conditions, sequences, document/certificate codes, and localized document descriptions
- Footnote codes and localized descriptions
- Legal basis, Official Journal reference, page, and publication date where available
- Stable lookup IDs and change metadata for scheduled monitoring
- Source month, reference date, attribution, official folder URL, and legal notice

The Actor deliberately does **not** present a single “final duty” number. TARIC measures can depend on product classification, additional codes, quotas, values, quantities, documents, end use, trade flow, and national taxes. Preserving those conditions is safer and more useful than returning a misleading calculator result.

### Quick start

The default input is a complete example:

```json
{
  "goodsCodes": ["8517620000"],
  "partnerCountries": ["CN"],
  "direction": "both",
  "language": "en",
  "snapshotMonth": "latest",
  "enableChangeMonitoring": true,
  "outputMode": "all"
}
```

Each code must be an exact declarable 10-digit TARIC code in the chosen snapshot. For imports, `partnerCountries` means origin; for exports, it means destination.

### Output example

```json
{
  "goodsCode": "8517620000",
  "cnCode": "85176200",
  "partnerCountry": "CN",
  "goodsDescription": "Machines for the reception, conversion and transmission or regeneration of voice, images or other data, including switching and routing apparatus",
  "importMeasureCount": 2,
  "exportMeasureCount": 3,
  "importMeasures": [
    {
      "goodsCode": "8517620000",
      "inherited": false,
      "partnerAreaCode": "1011",
      "partnerArea": "ERGA OMNES",
      "appliesVia": "erga-omnes",
      "measureTypeCode": "103",
      "measureType": "Third country duty",
      "dutyText": "0.000 %",
      "conditions": [],
      "footnotes": []
    }
  ],
  "sourceSnapshotMonth": "2026-07",
  "sourceSnapshotDate": "2026-07-01",
  "changeType": "new"
}
```

The live source changes over time, so counts and measures in examples are illustrative.

### Monitoring

Keep `snapshotMonth` set to `latest` and schedule the same input monthly. The Actor stores compact content hashes in the caller’s Apify key-value storage and marks each lookup as:

- `new` — first successful observation for this exact scope
- `updated` — goods description, hierarchy, import measures, or export measures changed
- `unchanged` — the substantive output is identical

A new source month alone does not create a false update. Use `outputMode: "new-updated"` for a low-noise change feed.

The Commission’s raw-data extraction represents the database on the first day of the month and is normally made available on the first Commission working day. Scheduling this monthly is more useful than polling it daily.

### Pricing

Pay per delivered lookup result. One result is one valid goods-code × partner-country pair, including all matched measures and details for the selected direction.

- Event: `taric-lookup`
- Planned Store price: **$0.015 per delivered lookup** ($15 per 1,000)
- No result event is charged for invalid input, source failure, a safety-limit failure, or an item blocked by the buyer’s spending limit
- The Apify default dataset event must remain free to prevent double charging

### Official source and lawful use

The source is the European Commission’s public **TARIC & Quota Data and Information** CIRCABC group. The Actor uses the separately published raw XLSX extractions. It does not automate the TARIC consultation pages that the Commission excludes from automated access in its robots policy.

European Commission content is reused with attribution under the Commission legal notice unless a source item states otherwise. Every output item contains the attribution and legal-notice URL. This is an independent product and is not affiliated with, endorsed by, or operated by the European Commission.

### Important limitations

- Output reflects the selected official **monthly snapshot**, not a guaranteed real-time customs decision.
- TARIC does not contain national VAT or excise rates.
- Output is research and monitoring data, not customs, tax, tariff-classification, or legal advice.
- Only the Official Journal is authentic for EU legal acts.
- Confirm a real declaration with the current official TARIC service, relevant legal acts, and the competent customs authority.

### Privacy and security

The Actor processes only public institutional TARIC reference data plus the goods codes and country codes supplied in the Actor input.

It does not read or upload local files, browser history, cookies, passwords, API keys, personal data, or private customs accounts. Source hosts, folder IDs, file sizes, total download volume, retries, timeouts, and output size are constrained in code.

### Data delivery

- Structured records: default Apify dataset
- Run provenance and delivery totals: `RUN_SUMMARY` in the default key-value store
- API endpoint: available directly from the Actor run and dataset pages
- Export: JSON, CSV, Excel, XML, RSS, and supported Apify integrations

### Support

If an official workbook changes structure, include the run ID and non-sensitive input in the Actor issue report. Do not post customs credentials, declarations, invoices, or personal data.

# Actor input Schema

## `goodsCodes` (type: `array`):

Exact declarable 10-digit TARIC codes. Spaces and dots are removed automatically.

## `partnerCountries` (type: `array`):

ISO 3166-1 alpha-2 codes. For imports this is the origin; for exports it is the destination.

## `direction` (type: `string`):

Return import measures, export measures, or both.

## `language` (type: `string`):

Language for goods descriptions, certificate descriptions, additional-code descriptions, and footnotes. Measure names in the source extraction are English.

## `snapshotMonth` (type: `string`):

Use latest for the newest published monthly extraction, or YYYY-MM for a historical month that is still available in CIRCABC.

## `enableChangeMonitoring` (type: `boolean`):

Compare the structured measures with the prior successful run of exactly the same lookup scope.

## `outputMode` (type: `string`):

The first run marks every lookup as new. A newer source month alone is not treated as a change when the actual measures are identical.

## `maxMeasuresPerLookup` (type: `integer`):

Safety cap applied before any result is delivered or charged.

## `requestTimeoutSecs` (type: `integer`):

Timeout for each official CIRCABC request.

## `maxRetries` (type: `integer`):

Retries temporary timeouts, rate limits, and server errors with exponential backoff.

## `minRequestIntervalMillis` (type: `integer`):

Polite minimum delay between requests to the official service.

## Actor input object example

```json
{
  "goodsCodes": [
    "8517620000"
  ],
  "partnerCountries": [
    "CN"
  ],
  "direction": "both",
  "language": "en",
  "snapshotMonth": "latest",
  "enableChangeMonitoring": true,
  "outputMode": "all",
  "maxMeasuresPerLookup": 750,
  "requestTimeoutSecs": 120,
  "maxRetries": 3,
  "minRequestIntervalMillis": 250
}
```

# Actor output Schema

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

One item per goods-code × country pair with import/export measures, conditions, documents, footnotes, legal bases, and change metadata.

## `summary` (type: `string`):

Official snapshot, source files, delivery status, attribution, privacy statement, limitations, and change totals.

# 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("nordicdataforge/eu-taric-customs-measures-monitor").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("nordicdataforge/eu-taric-customs-measures-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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 nordicdataforge/eu-taric-customs-measures-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nordicdataforge/eu-taric-customs-measures-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/f6I4XexD6tszPfHrg/builds/FUDOwYDmfMmcXrkyc/openapi.json
