Fast Bulk HS Classification API: How Do You Classify 200K SKUs a Day?
How fast can a bulk HS classification API actually be? 200 items per call, 3-5 minute batches, 200K+ classifications per day at 96% accuracy. The throughput model.
Co-Founder of GingerControl, Building scalable AI and automated workflows for trade compliance teams.
Connect with me on LinkedIn! I want to help you :)How fast can a bulk HS classification API actually be?
GingerControl's bulk HS classification API processes 200 products per call in 3-5 minutes end-to-end, scales to 200,000+ classifications per day at the production tier, and supports up to 100,000 classifications per hour for enterprise customers, all at 96% accuracy at the 6-digit level. Single-product calls average 36 seconds (P50: 30s, P95: 79s, P99: 108s), measured on production traffic rather than synthetic benchmarks.
What is the right throughput target for bulk HS classification?
Most teams overestimate the latency they need and underestimate the accuracy they need. A real bulk classification workload is rarely realtime; it is catalog backfill, weekly catalog updates, or pre-checkout precomputation. For those workloads, 3-5 minute batches of 200 items at 96% accuracy outperform "sub-second" APIs that return 70-80% accurate codes, because the cost of re-classifying or correcting wrong codes dwarfs the cost of waiting 5 minutes for the right ones.
TL;DR: A fast bulk HS classification API has to balance three things: items per call (how many products you can send at once), end-to-end latency (how long the batch takes), and accuracy (how many of those classifications are actually correct). Vendors that optimize for raw speed usually trade off accuracy. GingerControl's bulk HS classification API lands all three at production grade: 200 items per call, 3-5 minute completion, 200,000+ classifications per day at production tier, and 96% accuracy at the 6-digit level on production traffic. Enterprise tiers reach 100,000 classifications per hour. Every batch response includes per-item status: ok or status: failed, a full reasoning chain per classification, and the complete tariff stack (MFN + Section 301 + Section 232 + Section 122 + Chapter 99). CBP processes 40+ million entry summaries per year, which means the throughput model has to scale to real catalog volumes, not demo volumes.
Last updated: May 2026
Why Most "Bulk" HS Classification APIs Are Not Actually Bulk
A "bulk" classification API that accepts 10 products per call is not a bulk API. A bulk API that runs at 70-80% accuracy is not a bulk solution, because the misclassification cleanup cost exceeds the cost of doing the classification correctly the first time.
Real bulk HS classification has to handle three distinct workloads:
- Catalog backfill. Onboarding a 10,000-100,000 SKU catalog in days, not months
- Recurring catalog updates. Weekly or daily classification of net-new SKUs as suppliers add products
- Pre-checkout precomputation. Classifying products ahead of customer-facing duty disclosure so the customer-facing experience is instant
Each of these has different latency and throughput requirements, and a real bulk API has to serve all three from the same endpoint without forcing the integrating team to build separate queue infrastructure.
How GingerControl's Bulk HS Classification API Handles Throughput
The OpenAPI exposes a batch endpoint that accepts up to 200 products per call.
POST /openapi/v1/tariff/batch
Content-Type: application/json
X-Api-Key: YOUR_API_KEY
{
"items": [
{
"item_id": "SKU-DE-001",
"description": "Cotton knit short sleeve T-shirt",
"country_of_origin": "DE",
"extra": { "steel_pour_country": "IT" }
},
{
"item_id": "SKU-FR-002",
"description": "Cotton crew neck T-shirt",
"country_of_origin": "FR",
"extra": {}
}
]
}
Each item carries a caller-defined item_id for reconciliation, plus description and origin. The batch processes in 3-5 minutes end-to-end and returns per-item results with status, HS code, full tariff stack, and a summary object.
{
"items": [
{
"item_id": "SKU-DE-001",
"status": "ok",
"hts_code": "6109.10.0012",
"tariffs": {
"general_rate": "16.5%",
"special_rate": "Free",
"Section 301": [],
"Section 232 - Metals": [],
"Section 122": [
{ "code": "9903.03.01", "rate": "10%" }
]
}
}
],
"summary": { "total": 2, "succeeded": 2, "failed": 0 }
}
Partial failures do not block the batch. A failed item returns status: failed and a code field for triage, while the rest of the batch completes normally.
Throughput Math: 200K Classifications Per Day
The production tier of the OpenAPI supports 200,000+ classifications per day. The math:
- 200 items per batch call
- 3-5 minute batch completion time
- ~12-20 batches per hour per worker
- Scaling out workers concurrently to your tier limit
| Tier | Daily capacity | Hourly capacity | Practical use case |
|---|---|---|---|
| Production (standard) | 200,000+ classifications | ~10,000-15,000 | Mid-market importer or 3PL, full catalog backfill in days |
| Enterprise | 200,000+ daily, up to 100,000/hour | 100,000 | Large 3PL, marketplace, or enterprise importer with peak ingestion windows |
For a 50,000-SKU catalog backfill, the production tier completes in under one day. For a 500,000-SKU marketplace catalog, enterprise tier with 100,000/hour completes in 5 hours.
These are not theoretical numbers. They are the tier limits the API actually serves.
Why 3-5 Minutes Per Batch Beats "Sub-Second" Single-Shot APIs
There is a marketing pattern where bulk classification vendors quote sub-second latency per classification. The math sounds good: 1 second per classification times 200 items equals 200 seconds, or about 3 minutes for 200 items.
The catch is the accuracy of those sub-second classifications.
| Metric | GingerControl bulk API | "Sub-second" text-matching API |
|---|---|---|
| Time per 200-item batch | 3-5 minutes | 200-400 seconds (similar) |
| 6-digit accuracy | 96% | 70-80% |
| Correctly classified in 200-item batch | 192 | 140-160 |
| Items requiring re-classification | 8 | 40-60 |
| Audit-defensible reasoning chain | Yes, every item | No |
On a 200-item batch, the "sub-second" API delivers 40-60 wrong classifications that have to be re-done or accepted as misclassifications. The downstream cleanup cost, plus the duty exposure on the misclassified items, exceeds the cost of waiting 3-5 minutes for 96% accuracy in the first place.
The honest framing of bulk classification throughput is not "items per second." It is "correctly classified items per minute, with audit-defensible documentation."
Real-World Bulk Classification Use Cases
Ecommerce catalog onboarding
A 25,000-SKU Shopify catalog with products sourced from 30 origin countries. Manual classification at 20-30 minutes per SKU is ~10,000 analyst-hours. GingerControl's bulk API processes the catalog in 125 batches of 200 items each, completing in roughly half a day at the production tier. Each classification includes the full tariff stack so landed cost can be precomputed for every (product, destination) pair.
3PL recurring catalog refresh
A 3PL onboarding 50 new client catalogs per quarter, averaging 5,000 SKUs per catalog. 250,000 classifications per quarter, or roughly 1 day per client at the production tier. The per-item item_id field lets the 3PL reconcile API output back to client product systems without custom mapping.
Marketplace seller upload
A marketplace with sellers uploading products in real time. The batch endpoint accepts up to 200 items per call, so a seller uploading a 200-product catalog gets all classifications back in 3-5 minutes. The single-product endpoint handles individual seller additions, averaging 36 seconds.
Importer catalog audit and re-classification
A 100,000-SKU importer running an annual catalog re-classification audit. Production tier completes in 4-5 days, with full reasoning chains attached to every classification for the audit working paper.
Performance Numbers in Detail
Single-product endpoint
| Metric | Value |
|---|---|
| Average response time | 36 seconds |
| Median (P50) | 30 seconds |
| P95 | 79 seconds |
| P99 | 108 seconds |
Batch endpoint
| Metric | Value |
|---|---|
| Items per call | 200 (max) |
| Completion time | 3-5 minutes |
| Production daily capacity | 200,000+ classifications |
| Enterprise hourly capacity | 100,000 classifications |
All numbers are measured on production traffic. The percentile distribution exists because real classifications include both straightforward products (which complete near P50) and ambiguous composite products that trigger GRI 3 analysis (which extend toward P99). A flat "average" hides this distribution.
Rate Limits and Quota Management
Both endpoints share the same item-level quota under a single API key. The single-product endpoint consumes 1 item per call. The batch endpoint consumes items equal to the number of products in the batch.
When request frequency exceeds the rate limit, the API returns 429 Too Many Requests with a Retry-After header indicating how many seconds to wait before retrying. Production-grade integrations handle 429 responses gracefully using exponential backoff plus the Retry-After value.
Test API keys carry small quotas for development. Production keys are sized to each customer's traffic model, which includes peak QPS, daily volume, IP allowlist, and latency expectations.
Development Recommendations for Bulk Classification
- Use
item_idfor reconciliation. Every batch item accepts a caller-defineditem_idthat the API echoes back unchanged. Use this to map API output back to your internal SKU system without depending on response order. - Handle partial failures. A batch returns per-item
status: okorstatus: failed. Failed items include acodefield for triage. Do not assume a batch is all-or-nothing. - Log
X-Request-Id. Every response echoes the caller-providedX-Request-Idheader or generates one server-side. Logging this with your own request log dramatically reduces time to root-cause production issues. - Implement
Retry-Afterproperly. When you receive a 429, theRetry-Afterheader tells you exactly how many seconds to wait. Implement backoff that respects this value rather than guessing. - Validate request bodies before sending. A 422 response usually means the request body structure or field values do not match the contract. Validate locally first.
Frequently Asked Questions
What is the fastest bulk HS classification API on the market?
The right framing is "fastest at compliance-grade accuracy." Sub-second APIs typically operate at 70-80% accuracy because they skip GRI logic, Section/Chapter Note enforcement, and CROSS ruling integration. GingerControl's bulk HS classification API processes 200 items in 3-5 minutes at 96% accuracy on production traffic, which delivers more correctly classified items per minute than any "sub-second" alternative once you account for the misclassification cleanup cost.
How many products can I classify in a single API call?
GingerControl's batch endpoint accepts up to 200 items per call. Each item is a complete product (description, country of origin, optional extras), and the batch returns per-item results with full HS code, tariff stack, and reasoning chain. Larger jobs are handled by sending multiple batches concurrently up to your tier rate limit.
What is the daily classification capacity?
The production tier supports 200,000+ classifications per day. Enterprise tiers scale to 100,000 classifications per hour, which is sufficient for marketplace-scale catalog ingestion and large 3PL operations. Custom tier sizing is available for higher peak QPS requirements.
Does the bulk HS classification API support multiple origin countries in one batch?
Yes. Each item in a batch request carries its own country_of_origin field, so a single batch can mix products from any combination of origins. The API processes each item independently, applies the correct tariff stack per origin, and returns per-item results. For Section 232 country-of-melt rules, the extra.steel_pour_country and extra.aluminum_pour_country fields are also per-item.
What happens if some products in a batch fail to classify?
Failed items return status: failed and a code field for triage (classification_failed, calculator_failed, or internal_error). The rest of the batch completes normally. The response includes a summary object with total, succeeded, and failed counts so reconciliation is straightforward.
How do I handle rate limits in a high-throughput integration?
The API returns 429 Too Many Requests when rate limits are exceeded, with a Retry-After header indicating how many seconds to wait. Implement exponential backoff that respects the Retry-After value. For sustained high-throughput workloads, request a tier sizing that matches your peak QPS to avoid frequent rate-limit hits.
Can I run multiple batch calls concurrently?
Yes, subject to your tier rate limit. Most high-throughput integrations run multiple batch calls in parallel to maximize daily capacity. The 200,000+ daily capacity at the production tier assumes parallel batch processing. Enterprise tier supports sustained 100,000 classifications per hour with parallel workers.
Start Running Bulk HS Classification at Production Scale
If you are evaluating a bulk HS classification API for catalog backfill, recurring catalog updates, or pre-checkout precomputation, the test that matters is whether the API delivers correctly classified items per minute, not raw items per second.
Try the GingerControl API at gingercontrol.com/products/openapi. The OpenAPI is faster, cheaper, and more accurate than the alternatives, and has already saved customers a combined $4M in duties through optimized HS classification and full tariff stack visibility. You can test the live API speed and see real response times directly on the page.
GingerControl is not just a tool. We work with ecommerce platforms, 3PLs, marketplaces, and enterprise importers on process consulting, digital transformation strategy, and end-to-end custom system development. Talk to our team about sizing the bulk HS classification API to your catalog volume.
References
[REF 1] U.S. Customs and Border Protection, Priority Issues, Trade Volume Data cited: 40+ million entry summaries per year Source: CBP Priority Issues
[REF 2] U.S. Customs and Border Protection, Trade Statistics Data cited: $225.8 billion in duties, taxes, and fees collected in FY 2025 Source: CBP Trade Statistics Published: 2025
[REF 3] CBP Informed Compliance Publication, Reasonable Care (revised September 2017) Data cited: Reasonable care standard for documented classification methodology Source: CBP Reasonable Care Publication Published: September 2017
[REF 4] ATLAS: Benchmarking and Adapting LLMs for Global Trade via HTS Classification, arXiv Data cited: Generic LLM accuracy benchmarks for comparison Source: arXiv 2509.18400 Published: 2025
[REF 5] 19 U.S.C. 1592, Customs Penalties Data cited: Penalty structure for classification errors Source: 19 U.S.C. 1592

Written by
Chen Cui
Co-Founder of GingerControl
Building scalable AI and automated workflows for trade compliance teams.
LinkedIn ProfileYou may also like these
Related Post
Defensible Automated HS Classification: How Do You Survive a CBP Audit?
Can automated HS classification survive a CBP Focused Assessment? See how defensible API output, GRI reasoning chains, and 96% accuracy hold up under audit.
Automated HS Code Accuracy: Why Does GingerControl Hit 96% at 6 Digits?
Automated HS code accuracy plateaus at 70-80% for most APIs. How does GingerControl reach 96% at the 6-digit level on production traffic? The methodology, measured.
Automated Global HS Classification: How Do You Classify Across 100+ Countries?
How do you automate global HS classification across import and export, every origin country, and every tariff layer? One API, 96% accuracy, 200 items per call.