EU Binding Tariff Information (EBTI) Search & Monitor avatar

EU Binding Tariff Information (EBTI) Search & Monitor

Pricing

from $10.00 / 1,000 bti decisions

Go to Apify Store
EU Binding Tariff Information (EBTI) Search & Monitor

EU Binding Tariff Information (EBTI) Search & Monitor

Search and monitor official public EU customs-classification decisions by product, CN/TARIC code, country, reference, date, and status. Independent research tool; no login or EORI required.

Pricing

from $10.00 / 1,000 bti decisions

Rating

0.0

(0)

Developer

Nordic Data Forge

Nordic Data Forge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Search, export, and monitor official public EU customs-classification decisions without manually paging through the European Commission's EBTI portal.

The Actor turns filtered EBTI search exports into normalized JSON, CSV, Excel, API, and webhook-ready records. It can detect new decisions, material updates, invalidations, and decisions that disappear from a stable complete search scope.

No login, EORI number, API key, proxy, or private EU Trader Portal access is required.

Why use this Actor?

A Binding Tariff Information decision is an official customs decision about a product's tariff classification. The classification can affect customs duty, trade-defense measures, licences, restrictions, and other import or export requirements.

The public EBTI interface is useful for individual lookups, but repetitive research and monitoring are manual. This Actor adds:

  • batch searches across multiple CN/TARIC code prefixes and issuing countries;
  • structured output with consistent field names;
  • deduplication when search scopes overlap;
  • additional keyword, language, and status filters;
  • persistent change monitoring between scheduled runs;
  • spending-limit-aware pay-per-event delivery;
  • an audit summary for every run.

Quick start

Press Start with the default input. The Actor reads the official daily publication files and returns decisions published during the previous seven days, including valid and invalid decisions.

For a reusable code monitor, clear issuedSince, enter a narrow code such as 851762, keep change monitoring enabled, and schedule the Actor daily or weekly.

Example input

{
"nomenclatureCodes": ["851762", "950300"],
"issuingCountries": ["DE", "FR", "PL"],
"issuedSince": "30 days",
"includeInvalid": true,
"statuses": ["valid", "invalid"],
"keywords": ["router"],
"keywordMatch": "any",
"maxResults": 500,
"enableChangeMonitoring": true,
"outputMode": "new-updated-removed"
}

Example output

{
"id": "eu-bti:4b4cdd7ca95f8c11c06da81f",
"recordType": "eu-binding-tariff-information",
"btiReference": "DEBTI15138/25-1",
"issuingCountry": "DE",
"issueDate": "2025-06-29",
"validFrom": "2025-06-30",
"validUntil": "2028-06-29",
"status": "valid",
"nomenclatureCodeRaw": "8517620000************",
"nomenclatureCode": "8517620000",
"cnCode": "85176200",
"taricCode": "8517620000",
"language": "de",
"placeOfIssue": "HANNOVER",
"description": "Industrial data-transmission apparatus...",
"keywords": ["ROUTER", "NETWORK"],
"classificationJustification": "General Rules 1 and 6...",
"invalidationReason": null,
"invalidationJustification": null,
"sourceLastUpdatedOn": "2026-07-31",
"sourceDatabaseUrl": "https://ec.europa.eu/taxation_customs/dds2/ebti/ebti_consultation.jsp?Lang=en",
"sourceSystem": "European Commission EBTI public database",
"sourceAttribution": "European Commission — EBTI public decisions",
"sourceLicenceUrl": "https://commission.europa.eu/legal-notice_en",
"unofficialProduct": true,
"firstSeenAt": "2026-08-01T09:00:00.000Z",
"lastSeenAt": "2026-08-01T09:00:00.000Z",
"changeType": "new",
"changedFields": [],
"collectedAt": "2026-08-01T09:00:00.000Z"
}

Input reference

  • nomenclatureCodes: up to 20 code prefixes containing 2–10 digits. Each code is queried independently.
  • descriptionSearch: optional public EBTI full-text goods-description search.
  • reference: optional complete or partial BTI reference.
  • issuingCountries: up to 28 two-letter EBTI country codes. Each country is queried independently.
  • issuedSince: absolute YYYY-MM-DD date or a relative value such as 7 days, 4 weeks, 3 months, or 1 year.
  • validityStartFrom / validityStartTo: optional start-of-validity range.
  • includeInvalid: asks the official source to include invalid decisions.

Codes and countries are combined. Two codes and three countries therefore produce six narrowly filtered official searches. The Actor refuses more than 40 combinations.

Result filters

  • statuses: deliver valid, invalid, and/or unknown source statuses.
  • languages: optional two-letter decision-language filters.
  • keywords: optional terms matched locally across description, official keywords, code, reference, and classification reasoning.
  • keywordMatch: require any or all local keywords.
  • maxResults: maximum deduplicated decisions delivered, from 1 to 5,000.

Monitoring

  • enableChangeMonitoring: stores a filter-specific snapshot in Apify Key-Value Store.
  • outputMode: return all decisions, only changes, or only new decisions.

On the first run every record is new. Later runs can be unchanged, updated, or removed. changedFields identifies the material fields that changed.

Removed detection is intentionally disabled when:

  • issuedSince is relative, because a moving date window would create false removals as old records age out; or
  • maxResults caps the matching result set, because the omitted tail is not a complete comparison scope.

Safety controls

  • maxSourceRecordsPerQuery: refuses an unexpectedly broad official export after safe bounded parsing; compressed and uncompressed size caps protect memory first.
  • requestTimeoutSecs: per-request timeout.
  • maxRetries: retries timeouts, rate limits, and temporary server errors.
  • minRequestIntervalMillis: polite pacing between official requests.

The Actor never downloads the approximately 393 MB complete EBTI archive. It uses official daily publication files for an unfiltered recent window and official filtered search exports for targeted research.

Output fields

The default dataset contains one record per deduplicated public BTI decision. Important fields include:

  • decision identity: btiReference, issuingCountry, issueDate;
  • classification: nomenclatureCode, cnCode, taricCode;
  • validity: validFrom, validUntil, status;
  • public decision content: description, keywords, classificationJustification;
  • invalidation: invalidationReason, invalidationJustification;
  • monitoring: firstSeenAt, lastSeenAt, changeType, changedFields;
  • provenance: sourceLastUpdatedOn, sourceDatabaseUrl, attribution and legal-notice URL.

RUN_SUMMARY in the default Key-Value Store records source counts, downloaded bytes, delivery counts, change totals, safety decisions, licence information, and whether history was saved.

Common use cases

  • Customs brokers researching classification precedents.
  • Importers monitoring new decisions for product categories.
  • Trade-compliance teams watching invalidations and validity changes.
  • Freight forwarders enriching internal tariff research tools.
  • ERP, customs, and e-commerce developers integrating structured EBTI data.
  • Customs lawyers and consultants building evidence collections for manual review.

Pricing

The intended Apify Store pricing is pay per event:

  • first 10 delivered decisions in every run: free;
  • each additional delivered decision: $0.01;
  • no charge for source matches that are filtered out, duplicate, invalid, or not delivered because of a spending limit;
  • a small $0.00005 synthetic start event (per GB of memory, minimum one event), which enables Apify's first-five-seconds usage waiver.

The default dataset synthetic event must remain priced at zero to prevent double charging. Platform usage is intended to be included in the event price.

This is an independent product and is not affiliated with or endorsed by the European Commission or any customs authority.

The Actor uses the European Commission's public EBTI consultation and its public filtered export function. It does not access the authenticated EU Customs Trader Portal, submit applications, use EORI credentials, bypass access controls, or solve CAPTCHAs.

The source CSV includes a NAME_AND_ADDRESS column. This Actor deliberately excludes that column from all datasets, snapshots, summaries, and logs. It also does not download or republish decision images. Only the public decision fields documented above are delivered.

European Commission attribution and the source legal-notice URL accompany every record. Users remain responsible for checking any source-specific third-party rights and for complying with applicable law.

A BTI decision is binding on EU customs administrations and the holder of that decision. A decision issued to another holder is useful for research but does not automatically bind customs authorities for your goods.

This Actor provides research and monitoring data only. It does not classify your product, apply for a BTI, calculate duties, or provide legal, customs, tax, or tariff advice. Verify important decisions in the official EBTI database and obtain professional advice or your own BTI where appropriate.

Data-quality notes

  • Decision descriptions and reasoning remain in the original source language; the Actor does not translate or summarize them.
  • Some source fields are blank by design.
  • nomenclatureCodeRaw preserves the official asterisk-padded representation. Numeric nomenclatureCode, cnCode, and taricCode are derived without altering the published digits.
  • The source can be temporarily unavailable or can change its export format. The Actor validates counts, ZIP signatures, CSV column alignment, and every normalized record, and fails instead of silently returning partial data.
  • A zero-result search is successful and creates an empty dataset plus a complete run summary.

FAQ

Do I need an EORI number or EU account?

No. The Actor only reads the public consultation export.

Can I rely on another company's decision for my import?

No. Use public decisions as research material. A BTI is binding for its holder and the customs administrations under the applicable rules.

Why was my broad search rejected?

The official full archive is hundreds of megabytes. Add a code, description, country, reference, or date and/or increase the advanced source limit only after narrowing the business need.

Why are there no removed events with issuedSince: "7 days"?

That window moves every day. Marking records as removed when they merely age past seven days would be misleading, so removed detection is disabled automatically.

How should I schedule monitoring?

Use a stable narrow code or description, clear issuedSince, keep includeInvalid and change monitoring enabled, select new-updated-removed, and schedule daily or weekly runs.

Source and attribution

Source attribution: European Commission — EBTI public decisions.

Support

When reporting a reproducible problem, include the Actor run ID and sanitized input. Do not send customs credentials, EORI login details, confidential product documents, or personal data.