Global Trade Intelligence MCP Server is an MCP (Model Context Protocol) server on ApifyForge. MCP server for global trade intelligence. Wraps 6 specialized actors: UN COMTRADE (bilateral trade flows), GLEIF (legal entity identifiers), OpenCorporates (200M+ companies), USITC HTS (tariff rates with Section... It costs $0.05 per comtrade-search. It exposes 7 tools: comtrade-search, gleif-lookup, opencorporates-search, hts-tariff-lookup, customs-rulings, supply-chain-risk, import-compliance. Best for AI developers and agent builders who need structured real-world data inside Claude, Cursor, or other MCP-compatible clients. Not ideal for non-AI workflows or use cases that don't involve an MCP-compatible client. Maintenance pulse: 90/100. Last verified March 27, 2026. Built by Ryan Clinton (ryanclinton on Apify).
Global Trade Intelligence MCP Server
Global Trade Intelligence MCP Server is an MCP (Model Context Protocol) server available on ApifyForge at $0.05 per comtrade-search. MCP server for global trade intelligence. Wraps 6 specialized actors: UN COMTRADE (bilateral trade flows), GLEIF (legal entity identifiers), OpenCorporates (200M+ companies), USITC HTS (tariff rates with Section 301/232), CBP (customs classification rulings), and DOL ILAB (forced labor/child labor risk). Includes composite import compliance analysis.
Best for AI developers and agent builders who need structured real-world data inside Claude, Cursor, or other MCP-compatible clients.
Not ideal for non-AI workflows or use cases that don't involve an MCP-compatible client.
Tools exposed
Each pricing event corresponds to a tool your AI agent can call through MCP.
comtrade-searchSearch UN COMTRADE international trade flow data. · $0.05/callgleif-lookupLook up Legal Entity Identifiers via GLEIF. · $0.05/callopencorporates-searchSearch global corporate registry records. · $0.05/callhts-tariff-lookupLook up Harmonized Tariff Schedule codes and rates. · $0.05/callcustoms-rulingsSearch customs classification rulings. · $0.05/callsupply-chain-riskComposite supply chain risk assessment. · $0.15/callimport-complianceComposite import compliance check combining tariffs, customs, and trade data. · $0.15/callExample prompts
Natural language queries you can ask your AI assistant that would trigger this MCP server.
What to know
- Requires an MCP-compatible client (Claude Desktop, Cursor, Windsurf, or similar).
- Tool call results depend on the availability of upstream public APIs.
- Requires an Apify account and API token for authentication.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| comtrade-search | Search UN COMTRADE international trade flow data. | $0.05 |
| gleif-lookup | Look up Legal Entity Identifiers via GLEIF. | $0.05 |
| opencorporates-search | Search global corporate registry records. | $0.05 |
| hts-tariff-lookup | Look up Harmonized Tariff Schedule codes and rates. | $0.05 |
| customs-rulings | Search customs classification rulings. | $0.05 |
| supply-chain-risk | Composite supply chain risk assessment. | $0.15 |
| import-compliance | Composite import compliance check combining tariffs, customs, and trade data. | $0.15 |
Example: 100 events = $5.00 · 1,000 events = $50.00
Documentation

Global Trade Intelligence MCP is the agent-native, pay-per-call trade and import-compliance stack for AI agents, customs brokers, and supply-chain due-diligence teams.
It cross-references U.S. tariff schedules, CBP customs rulings, UN COMTRADE bilateral trade flows, GLEIF Legal Entity Identifiers, OpenCorporates global registry data, and DOL ILAB forced-labor risk in a single MCP call. Built for import compliance officers, sourcing analysts, UFLPA / ESG screening teams, trade lawyers, and AI agents that need trade context without a $50K enterprise seat.
The category
Global Trade Intelligence MCP is agent-native import-compliance infrastructure. Unlike Bloomberg Trade Suite, Descartes Systems, Panjiva, or Sayari (enterprise seats priced $25K to $100K per year, built for human analysts in a desktop console), this MCP is wired directly into Claude Desktop, Cursor, or any MCP-capable AI agent. It returns structured tariff, classification, sourcing-risk, and counterparty data your agent reasons over, billed per call, with no subscription commitment and no seat licensing.
In one sentence
Look up a U.S. tariff rate, pull matching CBP customs rulings, flag Section 301 (China) and Section 232 (steel / aluminum) exposure, score forced-labor risk on the sourcing country, and verify the counterparty's LEI in a single MCP tool call.
What you get from one call
trade_import_compliance queries USITC HTS, CBP CROSS, and DOL ILAB in parallel for a single product and returns:
complianceSignals[]plain-language flags such as "3 tariff lines subject to Section 301", "2 revoked customs rulings", "4 source countries with critical forced-labor risk"tariffAnalysisSection 301 count, Section 232 count, and the top 5 duty rates with HTS numbersclassificationRulingsactive / revoked / modified counts plus the 5 most recent CBP rulings with their HTS codessupplyChainRiskhigh and critical risk countries from the DOL ILAB list with per-country risk score and flagged goods countcrossReferences.overlappingHtsCodesHS codes that appear in both the tariff schedule and CBP ruling results, the strongest "is this product really classified here?" signalisDryRunflag on the supply-chain block, true when no DOL key is supplied so an agent never reads sample data as live data

What makes this different
- Live USITC tariff data. Duty rates, special / FTA rates, Column 2 rates, plus Section 301 (China) and Section 232 (steel / aluminum) flags computed from footnote data, not a stale snapshot.
- Cross-source HS-code reconciliation. The composite tool computes which HS codes appear in both the tariff schedule and CBP rulings for the same product keyword, so an agent can flag a classification mismatch before the broker does.
- Dry-run-aware supply-chain risk. When no DOL ILAB key is supplied, the response carries
isDryRun: trueinstead of silently returning sample data as live data. An agent never confuses a stub for a live screen.
Before vs after
| Without this MCP | With this MCP |
|---|---|
| Open USITC HTS, CBP CROSS, DOL ILAB, GLEIF, OpenCorporates, and UN COMTRADE in six tabs | One tool call, three of those queried in parallel for the composite, six available individually |
| Manually scan tariff footnotes for Section 301 and Section 232 references | Counts pre-computed, surfaced in complianceSignals[] |
| Cross-check CBP rulings by hand to confirm an HS classification | overlappingHtsCodes reports where the tariff line and the ruling line meet |
| Read PDF UFLPA guidance to map a sourcing country to forced-labor risk | DOL ILAB country, good, HS-code, sector, and exploitation-type filters return a scored country list |
| Pay $25K to $100K per year for a Bloomberg / Panjiva / Sayari seat | Pay $0.05 per individual call, $0.15 for the composite |
Architecture
6 trade and compliance sources → normalization layer → composite compliance tool
(UN COMTRADE, GLEIF, (consistent shape per ↓
OpenCorporates, USITC HTS, source, filtered for parallel HTS + CBP + ILAB fan-out
CBP CROSS, DOL ILAB) header rows + warnings) ↓
↓ HS-code cross-reference engine
6 individual tools ↓
for source-level access Section 301 / 232 flag aggregation
↓ ↓
trade_list_sources complianceSignals[] + structured output
(free, no charge)
Built for
Customs brokers running classification triage, import compliance officers responsible for Section 301 and Section 232 exposure, supply-chain due-diligence teams screening sourcing countries for UFLPA-relevant forced-labor risk, ESG and sustainability teams auditing supplier networks, trade lawyers researching CBP ruling precedent before a tariff dispute, sourcing analysts diversifying away from high-tariff or high-risk origins, and AI agents that need trade and compliance context wired directly into Claude Desktop or Cursor.
This server runs in Standby mode on the Apify platform. It orchestrates UN COMTRADE, GLEIF, OpenCorporates, USITC HTS, CBP CROSS, and DOL ILAB in parallel, cross-references HS codes across sources, and returns structured JSON your AI agent reasons over directly.
Questions this MCP answers
- "What is the U.S. duty rate for this product if I source it from Vietnam?"
- "Are any of these SKUs subject to Section 301 China tariffs or Section 232 steel and aluminum tariffs?"
- "Has CBP issued any classification rulings on this product category, and are any of them revoked?"
- "Which countries have known forced-labor risk for cotton, cobalt, or apparel?"
- "What is the Legal Entity Identifier for this counterparty, and what is the ultimate parent?"
- "What is the bilateral trade volume between the U.S. and China for HS code 8541 (semiconductors)?"
- "Does this OpenCorporates entity exist in the jurisdiction the supplier claims?"
- "If I shift sourcing from China to Bangladesh for garments, what happens to my Section 301 exposure and my forced-labor risk profile?"
For AI agents
- First tool to reach for when a prompt mentions HTS codes, tariff rates, customs classification, Section 301, Section 232, UFLPA, forced labor, child labor, country of origin, LEI, or sourcing risk.
- Call
trade_list_sourcesfirst (it is free). It lists all 8 tools with their credential requirements, no upstream fetch, no charge. - Use
trade_import_compliancefor one-shot compliance summaries. It fans out to HTS, CBP, and ILAB in parallel and cross-references HS codes; do not chain those three tools separately. - Branch on
complianceSignals[], not raw counts. Each signal is a plain-language flag designed for agent reasoning ("3 tariff lines subject to Section 301", "2 revoked customs rulings"). - Handle the OpenCorporates warning payload. Without an API key,
trade_opencorporatesreturns{ warning, details }instead of company data. Surface the warning, do not silently return zero results. - Check
isDryRun: trueon supply-chain output. Without a DOL key, ILAB returns sample data with the flag set. Never present dry-run data to the user as a live screen. - Per-call
api_keyarguments override env vars. A user can pass their own OpenCorporates or DOL key per call without redeploying the server.
Use this MCP when an AI agent needs to:
- compute U.S. tariff exposure for a product or SKU list
- check Section 301 (China) or Section 232 (steel / aluminum) coverage
- pull CBP customs rulings before a classification dispute
- screen sourcing countries for UFLPA-relevant forced-labor and child-labor risk
- verify a counterparty's legal entity, jurisdiction, and ultimate parent
- analyze bilateral trade flows between two countries by HS commodity
- support import-compliance review, sourcing diversification, or ESG audits with structured evidence
What data can you access?
| Data Point | Source | Example |
|---|---|---|
| 🌐 Bilateral international trade flows, HS-commodity import / export values | UN COMTRADE | USA imports HS 8541 from China, $14.2B (2023) |
| 🏷️ Legal Entity Identifier (20-char LEI), corporate hierarchy, BIC code | GLEIF | LEI 549300V9QSIG4WX4GJ96, ultimate parent listed |
| 🏢 200M+ companies across 140+ jurisdictions, optional officers / directors | OpenCorporates | 17 active "Acme Trading" companies across us_ca, gb, sg |
| 📊 U.S. HTS rates: MFN, special / FTA, Column 2, plus Section 301 / 232 flags | USITC HTS | HTS 7304.19.10.30 general 0%, Section 232 flagged |
| ⚖️ ~220K CBP CROSS classification rulings (HQ + NY collections), with full text optional | CBP CROSS | N082097, "Classification of LED panels", active, HS 9405.40 |
| 🛑 DOL ILAB forced-labor / child-labor risk by country, HS-code, sector, exploitation type | DOL ILAB | China cotton, CL/FL, riskLevel Critical, score 89 |
| 🚩 Section 301 (China tariff) and Section 232 (steel / aluminum) flags | USITC HTS footnotes | 47 tariff lines flagged Section 301 in chapter 85 |
| 🔁 Revoked / modified ruling status detection | CBP CROSS | 4 revoked rulings out of 12 matches for "LED panel" |
| 🧭 Cross-source HS-code overlap detection | HTS + CBP composite | 3 HS codes appear in both tariff and ruling results |
| 🏭 Per-country risk score, flagged goods count, forced-labor goods count | DOL ILAB | Uzbekistan cotton, 8 flagged goods, 6 with forced labor |
Why use Global Trade Intelligence MCP?
Most import compliance work is:
- manual and slow (60-90 minutes per product across USITC HTS, CBP CROSS, DOL ILAB, and sourcing-country research)
- inconsistent across analysts (Section 301 footnote logic is easy to miss, ILAB country lists are not always cross-referenced to HS codes)
- expensive at scale (Bloomberg Trade Suite, Panjiva, and Sayari seats range $25K to $100K per analyst per year)
- disconnected (tariff data lives in one tool, CBP rulings in another, forced-labor lists in a third PDF)
This MCP collapses that into one tool call. trade_import_compliance queries the three highest-impact sources in parallel, cross-references HS codes, flags Section 301 and Section 232 exposure, and returns a structured compliance signal list your agent or pipeline can branch on. Built to support import compliance review, sourcing diversification, and UFLPA / ESG due diligence on a per-call basis.
Platform capabilities
- Scheduling: re-screen tariff exposure on a quarterly cadence as Section 301 lists change
- API access: trigger compliance checks from Python, JavaScript, or any HTTP client using standard MCP protocol
- Parallel data fetching: the composite tool queries HTS, CBP, and ILAB simultaneously, not sequentially
- Monitoring: receive Slack or email alerts via Apify webhooks when high-risk sourcing signals fire
- Integrations: pipe results into Airtable, Notion, or any webhook-compatible compliance management system
Features
Trade and tariff data
- USITC HTS lookup by keyword, HTS number, or chapter (01-99) with MFN, special / FTA, and Column 2 rates.
- Section 301 detection via footnote parsing for China-specific additional duties.
- Section 232 detection for steel and aluminum tariff exposure.
- UN COMTRADE bilateral flows by reporter / partner / commodity / trade flow / year, with reporters[] and partners[] aggregations.
Customs classification
- CBP CROSS ruling search across ~220K rulings in HQ and NY collections.
- Boolean search operators supported on the search term.
- Commodity grouping filter across 10 categories (Apparel / Footwear / Textiles, Electronics, Base Metals, Pharmaceuticals, etc.).
- Status detection: active / revoked / modified counts surfaced in the response.
- Full ruling text optional via
include_full_text(adds 1 request per ruling).
Supply-chain risk
- DOL ILAB forced and child labor list filtered by country, good, HS-code prefix, sector, exploitation type (CL / FL / CL/FL), or region.
- Risk breakdown with critical / high / medium / low country counts.
- Dry-run mode when no DOL key is set, response includes
isDryRun: trueso an agent never misreads sample data.
Counterparty intelligence
- GLEIF LEI lookup by company name (fuzzy) or exact 20-char LEI, with corporate hierarchy.
- OpenCorporates registry search across 200M+ companies in 140+ jurisdictions, optional officer / director lookup.
- Country and jurisdiction filters on both GLEIF and OpenCorporates.
Composite analysis
- Cross-source HS-code reconciliation between tariff lines and CBP rulings.
- Aggregated
complianceSignals[]in plain language for agent reasoning. - Parallel fan-out to HTS + CBP + ILAB inside a single billable event.
Quickstart workflows
UFLPA cotton screening
shipment manifest with cotton garments from Xinjiang
→ trade_supply_chain_risk (good: "Cotton", country: "China")
→ if riskBreakdown.critical > 0
→ flag shipment for human review, attach country list with riskScore
→ trade_import_compliance (product: "cotton garments", source_country: "China") for full compliance dossier
Section 301 exposure check on a SKU list
SKU list with HTS codes
→ for each HTS code: trade_hts_tariff (hts_number: code)
→ if section301Items > 0
→ log SKU, HTS, and additional duty rate to a Section 301 exposure register
→ if section232Items > 0
→ log SKU under steel / aluminum exposure
Counterparty verification for a new supplier
new supplier name + jurisdiction
→ trade_opencorporates (query: name, jurisdiction_code: code, include_officers: true)
→ confirm entity exists, capture officer list
→ trade_gleif_lei (query: name, country: ISO2)
→ confirm LEI, capture ultimate parent
→ if officers or ultimate parent map to a sanctioned-adjacent entity, escalate
Use cases for global trade intelligence
Import compliance review before a shipment lands
Customs brokers and in-house compliance officers can run trade_import_compliance against a product description before booking a shipment. The tool returns the top tariff lines, Section 301 and Section 232 counts, recent CBP rulings (including any that have been revoked), and the forced-labor risk profile of the sourcing country. A revoked ruling on the proposed classification is a redirect-to-broker signal; a critical ILAB country flag is a UFLPA-review signal. This is the workflow a customs broker would otherwise stitch together across three tabs and a PDF.
Sourcing-country risk diversification
Sourcing analysts considering shifting production from one country to another can run trade_supply_chain_risk for the candidate country plus the product to see what other goods that country produces under forced-labor or child-labor flags. Pair with trade_un_comtrade to confirm the candidate country actually exports the product at meaningful volume. Avoids the trap of moving sourcing to a country that fails the next UFLPA review cycle.
Counterparty due diligence on a new supplier
Procurement and compliance teams onboarding a new overseas supplier can run trade_opencorporates to confirm the entity exists in the claimed jurisdiction, then trade_gleif_lei to capture the LEI and ultimate parent. Cross-referenced against the supplier's stated address and ownership, this surfaces shell entities, mismatched jurisdictions, and unclear ownership chains. The optional include_officers flag adds director-level visibility for higher-risk relationships.
Customs ruling research before a classification dispute
When CBP challenges a classification or an importer is preparing a binding ruling request, trade_customs_rulings returns precedent across the HQ (binding) and NY (non-binding) collections. Filter by commodity grouping and date, sort by date descending, and pull full text on the most recent matches. The active / revoked / modified split tells the legal team which rulings are still good law.
ESG and UFLPA supply-chain audit
Sustainability and ESG teams auditing a supplier network can run trade_supply_chain_risk filtered by exploitation_type: "FL" (forced labor) or "CL/FL" (both), per region or per sector. Pair with trade_un_comtrade to weight risk by actual bilateral trade volume into the U.S. The result is an evidence-linked risk register suitable for an ESG report or a UFLPA review, replacing manual research across DOL PDFs and country reports.
Section 301 exposure audit across a SKU catalog
Importers with broad China sourcing can batch trade_hts_tariff calls across their HTS code list, capturing section301Items and section232Items counts per code. Combined into a Section 301 exposure register, this becomes the basis for quarterly board-level reporting on China tariff exposure and the input to a sourcing-diversification roadmap.
How to connect this global trade intelligence MCP
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"global-trade-intelligence": {
"url": "https://global-trade-intelligence-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor, Windsurf, or Cline
Use the same URL and token in your MCP server settings panel. The server communicates via standard MCP protocol over HTTP POST to /mcp.
Python (via requests)
import requests
response = requests.post(
"https://global-trade-intelligence-mcp.apify.actor/mcp",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "trade_import_compliance",
"arguments": {
"product": "cotton garments",
"source_country": "China",
"dol_api_key": "YOUR_DOL_KEY"
}
},
"id": 1
}
)
result = response.json()
report = result["result"]["content"][0]["text"]
print(report)
JavaScript
const response = await fetch(
"https://global-trade-intelligence-mcp.apify.actor/mcp",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "trade_hts_tariff",
arguments: { keyword: "lithium battery", max_results: 20 }
},
id: 1
})
}
);
const data = await response.json();
const report = JSON.parse(data.result.content[0].text);
console.log(`Total tariff lines: ${report.total}`);
console.log(`Section 301 exposure: ${report.section301Items}`);
console.log(`Section 232 exposure: ${report.section232Items}`);
cURL
# Look up CBP customs rulings for LED panels
curl -X POST "https://global-trade-intelligence-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "trade_customs_rulings",
"arguments": {
"search_term": "LED panel",
"collection": "HQ",
"sort_by": "DATE_DESC",
"max_results": 10
}
},
"id": 1
}'
Environment variables
This MCP has more credential nuance than its siblings. Per-call api_key arguments override the corresponding env vars, so a customer can pass their own keys per call without redeploying the server.
| Variable | Required | Purpose |
|---|---|---|
OPENCORPORATES_API_KEY | Recommended | Free key from opencorporates.com/api_accounts/new. Without it, trade_opencorporates returns a structured warning payload instead of company data. Can also be passed per-call as api_key. |
DOL_API_KEY | Recommended | Free key from dataportal.dol.gov/registration. Without it, trade_supply_chain_risk and the supply-chain branch of trade_import_compliance return dry-run sample data with isDryRun: true. Can also be passed per-call as api_key or dol_api_key. |
COMTRADE_SUBSCRIPTION_KEY | Optional | UN COMTRADE subscription key. Without it, free preview endpoint caps at 500 records. Can also be passed per-call as subscription_key. |
STANDBY_IDLE_TIMEOUT_SECS | Optional | Standby idle-shutdown window in seconds (default 300, minimum 60). The instance exits after this idle period to release platform compute; the next request cold-starts a fresh one. |
GLEIF, USITC HTS, and CBP CROSS need no key.
MCP tools

| Tool | Input | Price | What it returns |
|---|---|---|---|
trade_un_comtrade | reporter, partner, commodity, trade_flow, year | $0.05 | Bilateral trade values and quantities. reporters[], partners[], and full data[]. Capped at 500 records without subscription key |
trade_gleif_lei | query (company name or 20-char LEI), country, status | $0.05 | LEI, corporate hierarchy (parent / ultimate parent), addresses, BIC codes. No API key required |
trade_opencorporates | query, jurisdiction_code, country_code, status, include_officers | $0.05 | Companies split into companies and officers counts plus data. Requires api_key or returns a warning payload |
trade_hts_tariff | keyword, hts_number, or chapter (01-99) | $0.05 | USITC HTS rates: MFN, special / FTA, Column 2. section301Items and section232Items counts plus full duty data |
trade_customs_rulings | search_term or ruling_number, collection, commodity_grouping, date range | $0.05 | CBP CROSS rulings split into active / revoked / modified counts plus data. Optional include_full_text adds 1 request per ruling |
trade_supply_chain_risk | country, good, hs_code, sector, exploitation_type, region | $0.15 | DOL ILAB country risk records, riskBreakdown (critical / high / medium / low). Returns isDryRun: true without DOL key |
trade_import_compliance | product, hts_code, source_country, dol_api_key | $0.15 | Composite: HTS + CBP + ILAB in parallel. complianceSignals[], tariffAnalysis, classificationRulings, supplyChainRisk, crossReferences.overlappingHtsCodes |
trade_list_sources | (none) | Free | Lists all 8 tools and 6 sources with credential requirements. No upstream fetch, no charge |
The trade_supply_chain_risk tool is priced at $0.15 because its DOL ILAB country-and-good cross-referencing carries the same compute load as the composite. The trade_import_compliance tool runs three sub-actors in parallel for the same $0.15.
Tool input reference
| Tool | Parameter | Type | Required | Description |
|---|---|---|---|---|
trade_un_comtrade | reporter | string | No | Reporting country name or ISO code (e.g. "USA", "China", "826") |
trade_un_comtrade | partner | string | No | Partner country name or ISO code |
trade_un_comtrade | commodity | string | No | HS commodity code (e.g. "0101", "2701") or "TOTAL" for aggregates |
trade_un_comtrade | trade_flow | enum | No | Import / Export / Re-Import / Re-Export / All (default All) |
trade_un_comtrade | year | string | No | Year(s) as string (e.g. "2023" or "2022,2023") |
trade_un_comtrade | subscription_key | string | No | UN COMTRADE subscription key for >500 records |
trade_gleif_lei | query | string | Yes | Company name (fuzzy) or exact 20-char LEI code |
trade_gleif_lei | country | string | No | ISO 2-letter country code filter (e.g. "US", "GB", "DE") |
trade_gleif_lei | status | enum | No | ACTIVE / INACTIVE |
trade_opencorporates | query | string | Yes | Company name or keyword |
trade_opencorporates | jurisdiction_code | string | No | Jurisdiction code (e.g. "us_ca", "gb", "de") |
trade_opencorporates | country_code | string | No | Two-letter country code (e.g. "us", "gb") |
trade_opencorporates | status | enum | No | "" / Active / Inactive / Dissolved |
trade_opencorporates | api_key | string | Yes (for real data) | OpenCorporates API key. Without it, returns a warning |
trade_opencorporates | include_officers | boolean | No | Also search officers / directors (default false) |
trade_hts_tariff | keyword | string | One of three | Product keyword (e.g. "coffee", "solar panel", "steel pipe") |
trade_hts_tariff | hts_number | string | One of three | HTS code or prefix (e.g. "0901.11.00", "7304") |
trade_hts_tariff | chapter | string | One of three | HTS chapter 01-99 (e.g. "72" = Iron and Steel) |
trade_customs_rulings | search_term | string | One of two | Keyword search, supports Boolean operators |
trade_customs_rulings | ruling_number | string | One of two | Direct lookup by ruling number (e.g. "N082097", "H289712") |
trade_customs_rulings | collection | enum | No | ALL / HQ / NY (default ALL) |
trade_customs_rulings | commodity_grouping | enum | No | 11 categories including Apparel, Electronics, Base Metals, Pharmaceuticals |
trade_customs_rulings | include_full_text | boolean | No | Fetch full ruling text, adds 1 request per ruling (default false) |
trade_supply_chain_risk | country | string | No | Country name partial match (e.g. "China", "Bangladesh") |
trade_supply_chain_risk | good | string | No | Product name partial match (e.g. "Cotton", "Cobalt", "Garments") |
trade_supply_chain_risk | hs_code | string | No | HS code prefix filter (e.g. "52" for cotton, "26" for ores) |
trade_supply_chain_risk | exploitation_type | enum | No | CL (Child Labor) / FL (Forced Labor) / CL/FL (both) |
trade_supply_chain_risk | api_key | string | Yes (for live data) | Free DOL API key. Without it, returns dry-run sample data |
trade_import_compliance | product | string | Yes | Product name or keyword (e.g. "steel pipe", "cotton garments", "lithium batteries") |
trade_import_compliance | hts_code | string | No | HTS code or prefix if known (e.g. "7304", "5208") |
trade_import_compliance | source_country | string | No | Sourcing country for supply-chain risk (e.g. "China", "Vietnam") |
trade_import_compliance | dol_api_key | string | No | Free DOL API key for live supply-chain data |
Output example
trade_import_compliance for "cotton garments" sourced from China with a live DOL key:
{
"product": "cotton garments",
"htsCode": null,
"sourceCountry": "China",
"sources": ["USITC HTS", "CBP Customs Rulings", "DOL ILAB"],
"complianceSignals": [
"12 tariff line(s) subject to Section 301 (China tariffs)",
"2 revoked customs ruling(s) — classification may have changed",
"3 country/ies with high/critical forced labor or child labor risk"
],
"signalCount": 3,
"tariffAnalysis": {
"total": 20,
"section301Exposure": 12,
"section232Exposure": 0,
"topRates": [
{
"htsNumber": "6109.10.00.40",
"description": "T-shirts, singlets and other vests, knitted or crocheted, of cotton, men's",
"generalRate": "16.5%",
"isSection301": true,
"isSection232": false
},
{
"htsNumber": "6203.42.40.11",
"description": "Men's trousers and shorts, of cotton, not knitted or crocheted",
"generalRate": "16.6%",
"isSection301": true,
"isSection232": false
},
{
"htsNumber": "6204.62.40.11",
"description": "Women's trousers and shorts, of cotton, not knitted or crocheted",
"generalRate": "16.6%",
"isSection301": true,
"isSection232": false
},
{
"htsNumber": "5208.32.30.40",
"description": "Woven fabrics of cotton, containing 85% or more by weight of cotton",
"generalRate": "10.2%",
"isSection301": true,
"isSection232": false
},
{
"htsNumber": "6105.10.00.30",
"description": "Men's shirts, knitted or crocheted, of cotton",
"generalRate": "19.7%",
"isSection301": true,
"isSection232": false
}
]
},
"classificationRulings": {
"total": 10,
"active": 7,
"revoked": 2,
"recentRulings": [
{
"rulingNumber": "N324871",
"subject": "Classification of cotton men's woven shirts from Vietnam",
"rulingDate": "2024-02-14",
"status": "active",
"htsCodes": ["6205.20.20.51"]
},
{
"rulingNumber": "H316209",
"subject": "Country of origin determination for cotton garments assembled in Bangladesh",
"rulingDate": "2023-09-08",
"status": "active",
"htsCodes": ["6204.62.40.11"]
},
{
"rulingNumber": "N289437",
"subject": "Cotton blended garments, classification under chapter 62",
"rulingDate": "2022-11-30",
"status": "revoked",
"htsCodes": ["6204.43.40.10"]
}
]
},
"supplyChainRisk": {
"total": 4,
"isDryRun": false,
"highRiskCountries": [
{
"country": "China",
"riskLevel": "Critical",
"riskScore": 91,
"flaggedGoods": 14,
"forcedLaborGoods": 9
},
{
"country": "Uzbekistan",
"riskLevel": "High",
"riskScore": 73,
"flaggedGoods": 6,
"forcedLaborGoods": 4
},
{
"country": "Turkmenistan",
"riskLevel": "High",
"riskScore": 70,
"flaggedGoods": 4,
"forcedLaborGoods": 3
}
]
},
"crossReferences": {
"overlappingHtsCodes": 2,
"note": "Found 2 HTS code(s) appearing in both tariff schedule and customs rulings"
}
}
The complianceSignals[] array is the headline. An agent can branch on it directly without parsing the full body. The crossReferences.overlappingHtsCodes count is the strongest "this classification is real, the broker uses it too" signal.
Output fields
Composite output (trade_import_compliance)
| Field | Type | Description |
|---|---|---|
complianceSignals[] | string[] | Plain-language flags ready for agent reasoning |
signalCount | number | Count of populated signals |
tariffAnalysis.section301Exposure | number | Tariff lines flagged Section 301 (China) |
tariffAnalysis.section232Exposure | number | Tariff lines flagged Section 232 (steel / aluminum) |
tariffAnalysis.topRates[] | object[] | Top 5 tariff lines with HTS number, description, rate, flags |
classificationRulings.active / .revoked | number | CBP ruling status counts |
classificationRulings.recentRulings[] | object[] | 5 most recent rulings with HTS codes |
supplyChainRisk.highRiskCountries[] | object[] | High / critical risk countries with riskScore and flagged-goods count |
supplyChainRisk.isDryRun | boolean | True when no DOL API key was supplied |
crossReferences.overlappingHtsCodes | number | HS codes appearing in both tariff and ruling results |
Per-source response shapes (individual tools)
| Tool | Top-level shape |
|---|---|
trade_un_comtrade | total, reporters[], partners[], data[] |
trade_gleif_lei | total, data[] (LEI records with hierarchy) |
trade_opencorporates | total, companies, officers, data.companies[], data.officers[] OR warning payload |
trade_hts_tariff | total, section301Items, section232Items, data[] |
trade_customs_rulings | total, active, revoked, modified, data[] |
trade_supply_chain_risk | total, riskBreakdown.{critical,high,medium,low}, isDryRun, data[] |
How much does it cost to run import compliance?
Global Trade Intelligence MCP uses pay-per-event pricing: $0.05 per source tool call, $0.15 for trade_supply_chain_risk and trade_import_compliance. Platform compute is included. The trade_list_sources tool is free.
| Scenario | Tool calls | Composite calls | Total cost |
|---|---|---|---|
| Single tariff check on one HTS code | 1 × $0.05 | 0 | $0.05 |
| Full import compliance review on one product | 0 | 1 × $0.15 | $0.15 |
| Counterparty verification (OpenCorporates + GLEIF) | 2 × $0.05 | 0 | $0.10 |
| UFLPA cotton screen + full compliance dossier | 0 | 2 × $0.15 | $0.30 |
| 50-SKU Section 301 exposure audit | 50 × $0.05 | 0 | $2.50 |
| 50-SKU full compliance batch | 0 | 50 × $0.15 | $7.50 |
| Monthly 200-vendor due-diligence cycle (counterparty + composite) | 400 × $0.05 | 200 × $0.15 | $50.00 |
You can set a maximum spending limit per run to cap exposure. The actor stops when your budget is reached.
Apify's free tier includes $5 of monthly platform credits, enough for 100 source-tool calls or 33 composite calls before adding payment. Compare against a Bloomberg Trade Suite, Panjiva, or Sayari seat at $25K to $100K per year. Most teams using this MCP spend under $100 per month with no subscription commitment.
How it works
- Parallel fan-out. The composite tool calls USITC HTS, CBP CROSS, and DOL ILAB via
Promise.all. Each sub-actor is independently rate-limited and timed out at 120 seconds. A slow or failing source degrades the result rather than blocking it. - Header-row filtering. Each source returns occasional header / message rows that are filtered out before aggregation, so counts reflect real records.
- Section 301 / 232 flag aggregation. HTS rows carry
isSection301andisSection232booleans derived from footnote parsing. The composite tool counts flagged lines and emits acomplianceSignals[]entry when either count is non-zero. - Cross-source HS-code reconciliation. The composite tool extracts HS codes from tariff results (
htsNumber) and from CBP ruling results (htsTariffCodes), then computes overlap on the 4-digit prefix. Overlapping codes are surfaced ascrossReferences.overlappingHtsCodes. - Dry-run propagation. ILAB without a key returns sample data with a
dryRunflag. The composite tool propagates this assupplyChainRisk.isDryRun: trueso an agent can branch on it. - Standby idle-shutdown. The MCP exits after
STANDBY_IDLE_TIMEOUT_SECS(default 300) of no activity to release platform compute. The next request cold-starts a fresh instance.
Tips for best results
-
Pass an HS-code prefix when you know it.
trade_hts_tariffwithhts_number: "7304"returns cleaner tariff results thankeyword: "steel pipe", which can pull in unrelated chapters. Use the keyword as a fallback when the code is unknown. -
Use the HQ collection for binding CBP rulings. Set
collection: "HQ"ontrade_customs_rulingsfor Headquarters rulings, which are binding precedent. The NY collection is non-binding port-level guidance. Filter bycommodity_groupingwhen the product crosses multiple chapters. -
Supply a DOL API key to unlock live UFLPA screening. Without it,
trade_supply_chain_riskand the supply-chain branch oftrade_import_compliancereturn dry-run sample data. The free key fromdataportal.dol.gov/registrationunlocks the live ILAB list, which is what UFLPA review actually requires. -
Cross-reference
overlappingHtsCodesfor compliance certainty. When the composite tool reports overlapping HS codes between the tariff schedule and CBP rulings, the classification is corroborated across two independent sources. Zero overlap is a signal to dig deeper before committing to a classification. -
Use country ISO codes on UN COMTRADE for stability. Country name resolution on the COMTRADE API is fuzzy ("USA" vs "United States" vs "United States of America"). Pass the ISO numeric code ("840" for the U.S., "156" for China) when you need deterministic resolution.
-
Cache
trade_list_sourcesresults. The list is static for the life of the build, so an agent can cache the tool catalog after one call rather than re-fetching it. It is free either way, but it saves a round-trip. -
Set
include_full_text: falsefor ruling searches when you only need metadata. Full text adds one request per ruling and significantly increases latency. Pull metadata first, then re-query specific rulings withruling_numberandinclude_full_text: truefor the ones you need.
Combine with other Apify actors
| Actor | How to combine |
|---|---|
| UN COMTRADE Search | Pull raw bilateral trade flow data directly for portfolio-level trade analysis outside the MCP |
| GLEIF LEI Lookup | Look up Legal Entity Identifiers in bulk for a counterparty list |
| OpenCorporates Search | Run cross-jurisdictional corporate-registry searches with officer detail |
| USITC HTS Tariff Search | Pull HTS tariff data directly with Section 301 and 232 flags for a SKU catalog |
| CBP Customs Rulings | Pull CBP CROSS rulings directly for legal research and tariff-dispute preparation |
| ILAB Supply Chain Intel | Pull the DOL ILAB forced and child labor list directly for ESG audits |
| Company Deep Research | Combine with trade_opencorporates for full counterparty intelligence on new suppliers |
Limitations
- UN COMTRADE free preview caps at 500 records. Without a
subscription_key, large queries are truncated. Use ISO country codes and narrow year ranges to stay under the cap, or supply a subscription key. - ILAB without a key returns dry-run sample data only.
trade_supply_chain_riskand the supply-chain branch oftrade_import_compliancewill setisDryRun: true. Always supply the free DOL key for production use. - OpenCorporates without a key returns a warning payload, not data. The actor returns
{ warning, details }rather than companies. Surface the warning to the user, do not interpret it as zero results. - USITC HTS data is U.S.-only. This MCP does not include EU TARIC, UK Global Tariff, Canada CBSA, or other national tariff schedules. For non-U.S. import compliance, additional sources are required.
- Section 301 lists change. The Section 301 China tariff list is updated periodically by USTR. Re-screen high-exposure SKUs quarterly. The actor flags lines that USITC HTS marks as Section 301 at query time; it does not maintain a separate change log.
- CBP NY rulings are non-binding. NY rulings are port-level guidance, not binding precedent. For binding rulings, filter
collection: "HQ". The actor surfaces both collections without distinguishing precedential weight beyond the collection code. - GLEIF corporate-hierarchy depth is one level. The tool returns immediate parent and ultimate parent. Multi-tier holding-company chains beyond ultimate parent require additional lookups.
- OpenCorporates jurisdiction coverage varies. Coverage is strong for the U.S., U.K., and EU, weaker for some emerging markets. Some jurisdictions return name-only matches without officer data even with
include_officers: true. - Child actor timeout is 120 seconds. A slow source returns an empty array for that source. The composite result is computed on available data; an empty branch is visible in the response.
Integrations
- Apify API, trigger compliance and tariff checks programmatically from ERP or PLM systems
- Webhooks, push high-risk sourcing signals to Slack, email, or a compliance case-management tool
- Zapier, connect Airtable supplier registers or Google Sheets SKU lists; auto-log Section 301 exposure when new SKUs are added
- Make, build sourcing workflows that auto-flag products with critical-risk source countries
- Google Sheets, export tariff exposure registers and counterparty due-diligence results to shared spreadsheets
- LangChain / LlamaIndex, embed trade and compliance lookups as tools in LLM agent pipelines for sourcing, due-diligence, and ESG workflows
Troubleshooting
trade_opencorporates returns { warning: "No OpenCorporates API key provided" } and no companies. The actor requires an API key for real data. Get a free key at opencorporates.com/api_accounts/new, then either set OPENCORPORATES_API_KEY as an env var or pass it as the api_key argument per call.
trade_supply_chain_risk response shows isDryRun: true. The DOL API key is missing. Register a free key at dataportal.dol.gov/registration and pass it as api_key, or set DOL_API_KEY in the environment. Sample data is not safe for production UFLPA decisions.
trade_hts_tariff returns no results despite a known keyword. When both keyword and hts_number could match, hts_number is treated as authoritative. If you pass only keyword and the keyword is too generic, narrow it with a chapter filter ("chapter": "72" for iron and steel) or a more specific term ("hot-rolled steel coil" rather than "steel").
trade_un_comtrade returns nothing for a known trade flow. Country name resolution can mismatch ("USA" vs "United States" vs ISO code "840"). Pass the ISO numeric code as reporter and partner for deterministic resolution. Confirm the commodity code is valid HS (4-, 6-, or 10-digit) and the year is within the COMTRADE coverage range.
CBP ruling search returns truncated results. The default max_results is 20 on trade_customs_rulings. Raise it up to 100 when researching a broad classification topic. Setting include_full_text: true slows the response significantly; pull metadata first, then re-query specific rulings for full text.
Standby instance feels slow on the first call. After STANDBY_IDLE_TIMEOUT_SECS of inactivity (default 300), the MCP exits to release compute. The first call after idle cold-starts a fresh instance, which takes a few seconds. Subsequent calls hit the warm instance.
Responsible use
- All data accessed by this server comes from publicly available trade and compliance sources: UN COMTRADE, GLEIF, OpenCorporates (with API key), USITC HTS, CBP CROSS, and DOL ILAB.
- UFLPA and forced-labor signals are screening indicators, not legal determinations. A flagged country or HS code requires human review, supplier audit, and qualified legal advice before any adverse sourcing decision.
- Tariff and classification results are advisory. CBP NY rulings are non-binding; binding rulings come from the HQ collection or from a formal binding ruling request submitted to CBP.
- Counterparty data from OpenCorporates and GLEIF reflects the underlying registry state at query time. Always corroborate against the registry of record before relying on it for contracting or compliance decisions.
- Comply with applicable data protection and export-control regulations when storing or sharing screening outputs.
- For guidance on web scraping and data use legality, see Apify's guide.
FAQ
How does this compare to Sayari, Panjiva, or Descartes Systems? Sayari, Panjiva (S&P Global Market Intelligence), and Descartes Systems are enterprise compliance platforms with seat licensing in the $25K to $100K+ per analyst per year range, built for human analysts in a desktop console. Global Trade Intelligence MCP is the agent-native equivalent: pay per call, no seat licensing, accessed by AI agents via the MCP protocol. The data sources overlap (tariffs, customs rulings, forced-labor lists, corporate registry) but the consumption model is different. Use the enterprise platforms when a team of analysts works in a desktop UI. Use this MCP when an AI agent or programmatic pipeline needs trade context.
What is UFLPA and how does this MCP help?
The Uyghur Forced Labor Prevention Act (UFLPA) creates a rebuttable presumption that goods made wholly or in part in China's Xinjiang region, or by entities on the UFLPA Entity List, were made with forced labor and are therefore inadmissible into the U.S. trade_supply_chain_risk queries the DOL ILAB list of goods produced with forced or child labor, filterable by country, good, HS code, sector, and exploitation type. This supports UFLPA risk-based screening; final compliance decisions require human review and legal advice.
What is the difference between Section 301 and Section 232?
Section 301 of the Trade Act of 1974 authorises additional duties on imports from countries determined to engage in unfair trade practices; the current Section 301 list applies to a broad range of Chinese-origin goods. Section 232 of the Trade Expansion Act of 1962 authorises duties on imports that threaten national security; the current Section 232 measures apply to steel and aluminum from most countries. trade_hts_tariff and trade_import_compliance report exposure counts for both, derived from USITC HTS footnotes.
Why does trade_supply_chain_risk cost the same as the composite tool?
The DOL ILAB tool performs country-and-good cross-referencing across the full list with HS-code, sector, region, and exploitation-type filters. Compute load is roughly the same as the three-source composite, so the pricing matches. The flat $0.15 keeps the supply-chain tool and the composite consistent for batch budgeting.
How often is USITC HTS tariff data updated? USITC publishes the Harmonized Tariff Schedule revisions on a regular cadence with periodic supplements through the year as duty rates change (notably for Section 301 and Section 232 modifications). This MCP queries the USITC HTS API live per call, so each call reflects the data USITC currently publishes. Re-screen high-exposure SKUs quarterly to catch list changes.
Can this MCP replace a licensed customs broker? No. It informs a customs broker. Classification, country of origin determination, and entry filing remain regulated activities that require a licensed customs broker (in the U.S., a CBP-licensed broker under 19 CFR 111). This MCP gives a broker the tariff, ruling, and risk context faster, and gives importers a preview of compliance signals before engaging the broker, but it does not substitute for the broker's regulated work.
What is the difference between an HQ and an NY CBP ruling?
HQ rulings are issued by CBP Headquarters and are binding precedent. NY rulings are issued by the National Commodity Specialist Division in New York and are advisory port-level guidance, not binding precedent across all entries. For binding precedent on a classification question, filter collection: "HQ". The actor returns both by default so you can see the full landscape.
Does trade_gleif_lei cover all global entities?
GLEIF covers entities that have requested or are required to hold an LEI, primarily entities engaged in financial transactions in regulated markets (derivatives reporting, securities trading, payment messaging). Coverage is strong for large corporates and financial institutions, weaker for private companies and small entities. For broader corporate registry coverage, pair with trade_opencorporates.
Can I use this to screen for export-controlled or sanctioned entities? This MCP does not include OFAC SDN, BIS Entity List, or similar sanctions and export-control lists. Use a dedicated export-control screening tool for those. This MCP covers tariff, customs classification, counterparty registry, and forced-labor risk; sanctions screening is a separate compliance domain.
Is it legal to use this tool for import compliance screening? All underlying data sources are publicly available: USITC HTS, CBP CROSS, UN COMTRADE, GLEIF, and DOL ILAB are open. OpenCorporates is accessed via its public API under their terms with an API key. Using these sources for import compliance, due diligence, and sourcing decisions is standard practice. See Apify's guide on web scraping legality for broader context.
Help us improve
If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:
- Go to Account Settings > Privacy
- Enable Share runs with public Actor creators
This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly.
Support
Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom solutions or enterprise integrations, reach out through the Apify platform.
Related actors
AI Cold Email Writer — $0.01/Email, Zero LLM Markup
Generates personalized cold emails from enriched lead data using your own OpenAI or Anthropic key. Subject line, body, CTA, and optional follow-up sequence — $0.01/email, zero LLM markup.
AI Outreach Personalizer — Emails with Your LLM Key
Generate personalized cold emails using your own OpenAI or Anthropic API key. Subject lines, opening lines, full bodies — tailored to each lead's role, company, and signals. $0.01/lead compute + your LLM costs. Zero AI markup.
Bulk Email Verifier — MX, SMTP & Disposable Detection at Scale
Verify email deliverability in bulk — MX records, SMTP mailbox checks, disposable detection (55K+ domains), role-based flagging, catch-all detection, domain health scoring (SPF/DKIM/DMARC), and confidence scores. $0.005/email, no subscription.
CFPB Complaint Search — By Company, Product & State
Search the CFPB consumer complaint database with 5M+ complaints. Filter by company, product, state, date range, and keyword. Extract complaint details, company responses, and consumer narratives. Free US government data, no API key required.
Ready to try Global Trade Intelligence MCP Server?
This actor is coming soon to the Apify Store.
Coming soon