Search by task, endpoint, field, or error.
Tariff API
US HTS lookup. Published base rates, parent descriptions, and optional origin measures.
Look up a US HTS code with 4, 6, 8 or 10 digits, dots optional. Keep leading zeroes. Core returns the published description, base general rate and parent descriptions, with revision, immutable edition and resolution date. Unknown codes return 404. Lookup and search use pooled requests on every plan.
These are schedule records. Search does not classify a product, and a base rate of Free does not establish a duty-free entry.
Lookup
Parameters 5
- editionstring · query · optional
Immutable edition SHA-256 returned by a previous response. Without date, reads that snapshot with date: null. Unknown editions return 404; never falls back.
Length: 64 to 64 characters
Pattern:
^[a-f0-9]{64}$- datestring · query · optional
YYYY-MM-DD. Explicit dates require a reviewed effective interval; otherwise 404, never nearest/latest fallback. With neither selector, use the current edition and today. Publication dates are not effective intervals.
- codestring · path · required
4, 6, 8, or 10 ASCII digits; dots and whitespace optional (0101, 0101.21.00.10)
- originstring · query · optional
ISO 3166-1 country of origin of the goods, which may differ from the country of shipment. Only read with paid deep=true
- deepboolean · query · optional
Additional schedule columns and statistical units. Add goods origin for matched stored tariff measures; this does not establish complete entry duty. Included on paid plans.
Example responses use an illustrative all-zero edition, not a stored fingerprint. Save a real response's edition for subsequent requests.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.tariff("8471.30.01.00");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"hts": "8471.30.01.00",
"description": "Portable automatic data processing machines, weighing not more than 10 kg, consisting of at least a central processing unit, a keyboard and a display",
"lineage": [
"Automatic data processing machines and units thereof; magnetic or optical readers, machines for transcribing data onto data media in coded form and machines for processing such data, not elsewhere specified or included:"
],
"general": "Free",
"revision": "2026HTSRev19",
"edition": "0000000000000000000000000000000000000000000000000000000000000000",
"date": "2026-09-24"
}Response fields
- htsstring
- The code you asked about, normalized with dots (8471.30.01.00)
- descriptionstring or null
- The schedule line, verbatim
- lineagearray
- Parent descriptions from the schedule outline, outermost first. Empty for top-level headings
- generalstring or null
- Published Column 1 general base rate, verbatim. Does not establish the complete duty owed
- editionstring
- Immutable edition SHA-256. Save the returned value to replay that snapshot; all-zero example fingerprints are illustrative
- datestring or null
- Resolution date, or null for an edition-only snapshot. Explicit dates require reviewed effective interval coverage; publication dates do not establish it
- revisionstring
- The official schedule revision used for this answer
- linesarray
- Search results for ?q=. Up to 20 candidate tariff lines, best match first, each with hts, description, lineage, and general
- lines[].lineagearray
- Parent descriptions for each search candidate, outermost first; disambiguates lines such as Other
Replay an edition or date
With neither selector, lookup reads the current edition and resolves measures for today. Pass ?edition={sha256} to read that exact immutable snapshot. Without a date, this is a snapshot-only response with date: null; origin detail returns deep.reason: "date_required".
Pass ?date=YYYY-MM-DD, optionally with edition, to resolve an explicitly covered day. The edition must have a reviewed effective interval covering that day. An unknown edition or uncovered date returns 404; it never falls back to the latest or nearest edition. An official publication date is not an effective interval.
Historical resolution is limited to the reviewed editions and intervals actually stored. Incomplete measure coverage keeps the combined rate null, even when a schedule snapshot is available.
Search
Parameters 3
- editionstring · query · optional
Immutable edition SHA-256 returned by a previous response. Without date, reads that snapshot with date: null. Unknown editions return 404; never falls back.
Length: 64 to 64 characters
Pattern:
^[a-f0-9]{64}$- datestring · query · optional
YYYY-MM-DD. Explicit dates require a reviewed effective interval; otherwise 404, never nearest/latest fallback. With neither selector, use the current edition and today. Publication dates are not effective intervals.
- qstring · query · required
Product words (laptop, sunglasses, coffee)
Search includes parent descriptions and returns up to 20 candidates, best match first. Review the line before choosing its code. The envelope carries the same revision, edition and date; both selectors work here too. Chapter 99 measures are read through paid deep, not this search index.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.tariff.search("sunglasses");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"q": "sunglasses",
"revision": "2026HTSRev19",
"edition": "0000000000000000000000000000000000000000000000000000000000000000",
"date": "2026-09-24",
"lines": [
{
"hts": "9004.10.00.00",
"description": "Sunglasses",
"lineage": [
"Spectacles, goggles and the like, corrective, protective or other:"
],
"general": "2%"
}
]
}Deep
On paid plans, ?deep=true adds statistical units, special and column 2 rates. Add the goods' country of origin with origin=CN to see matched Chapter 99 measures, their dates and conditions. Origin can differ from the shipping country.
deep.effective_rate requires complete reviewed measure coverage, a verified effective date, an 8- or 10-digit code and rates that compose without unresolved conditions. Otherwise it is null and deep.reason explains why. Matched rows still ship. Zero means 0%; null is unresolved.
Reasons are open strings: origin_required, date_required, incomplete_coverage, date_unverified, broad_code, conditional_measures, non_additive_rates and overlapping_programs. Preserve unfamiliar future values. A null reason means the combined rate was resolved.
Without origin, measures is null. An empty array means no stored rows matched; it does not prove complete coverage or no applicable duties. A numeric result is not a complete duty or landed-cost calculation.
Run this Deep example with a paid-plan key. Deep is included in the pooled request, with no separate lookup charge.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.tariff("8471.30.01.00", { deep: true, origin: "CN" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"hts": "8471.30.01.00",
"description": "Portable automatic data processing machines, weighing not more than 10 kg, consisting of at least a central processing unit, a keyboard and a display",
"lineage": [
"Automatic data processing machines and units thereof; magnetic or optical readers, machines for transcribing data onto data media in coded form and machines for processing such data, not elsewhere specified or included:"
],
"general": "Free",
"revision": "2026HTSRev19",
"edition": "0000000000000000000000000000000000000000000000000000000000000000",
"date": "2026-09-24",
"deep": {
"origin": "CN",
"effective_rate": null,
"measures": [
{
"heading": "9903.01.22",
"description": "Articles the product of China and Hong Kong that are informational materials, including but not limited to, publications, films, posters, phonograph records, photographs, microfilms, microfiche, tapes, compact disks, CD ROMs, artworks, and news wire feeds",
"rate": "The duty provided in the applicable subheading",
"from": null,
"until": null,
"conditional": false
},
{
"heading": "9903.01.24",
"description": "Except for products described in headings 9903.01.21, 9903.01.22, 9903.01.23, articles the product of China and Hong Kong, as provided for in U.S. note 2(u) to this subchapter",
"rate": "The duty provided in the applicable subheading + 10%",
"from": null,
"until": null,
"conditional": false
},
{
"heading": "9903.01.28",
"description": "Articles the product of any country that (1) were loaded onto a vessel at the port of loading and in transit on the final mode of transit prior to entry into the United States, before 12:01 a.m. eastern daylight time on April 5, 2025; and (2) are entered for consumption, or withdrawn from warehouse for consumption after 12:01 a.m. eastern daylight time on April 5, 2025",
"rate": "The duty provided in the applicable subheading",
"from": null,
"until": null,
"conditional": true
},
{
"heading": "9903.01.32",
"description": "Articles the product of any country, classified in the subheadings enumerated in subdivision (v)(iii)(a) of U.S. note 2 to this subchapter",
"rate": "The duty provided in the applicable subheading",
"from": null,
"until": null,
"conditional": false
},
{
"heading": "9903.01.34",
"description": "The U.S. content of articles the product of any country, in which the U.S. content of the article provides at least 20 percent of the Customs value of the imported article, as provided for in subdivision (v)(xvii) of U.S. note 2 to this subchapter",
"rate": "The duty provided in the applicable subheading",
"from": null,
"until": null,
"conditional": false
},
{
"heading": "9903.02.01",
"description": "Articles the product of any country determined by U.S. Customs and Border Protection to have been transshipped to evade applicable duties under section 2 of Executive Order [Insert EO number], as amended [Compiler's note: [Insert EO Number] refers to Executive Order 14326, 90 Fed. Reg. 37963.]",
"rate": "The duty provided in the applicable subheading + 40%",
"from": null,
"until": null,
"conditional": true
},
{
"heading": "9903.02.78",
"description": "Articles the product of any country, as provided for in subdivision (v)(iii)(b) of U.S. note 2 to this subchapter",
"rate": "The duty provided in the applicable subheading",
"from": null,
"until": null,
"conditional": false
},
{
"heading": "9903.03.04",
"description": "Articles the product of any country, as provided for in subdivision (aa)(iii) of U.S. note 2 to this subchapter",
"rate": "The duty provided in the applicable subheading",
"from": null,
"until": null,
"conditional": false
},
{
"heading": "9903.05.31",
"description": "Except for products described in headings 9903.05.85–9903.05.92, articles the product of China, as provided for in U.S. note 52 to this subchapter",
"rate": "The duty provided in the applicable subheading + 12.5%",
"from": null,
"until": null,
"conditional": false
}
],
"reason": "incomplete_coverage",
"units": [
"No."
],
"special": null,
"other": "35%"
}
}Deep fields
- deep.unitsarray
- Units of quantity (No., kg, doz.). Empty when the schedule lists none
- deep.specialstring or null
- Column 1 special rate, verbatim. Free trade agreements and preference programs
- deep.otherstring or null
- Column 2 rate, verbatim. The statutory rate
- deep.reasonstring or null
- Why effective_rate is null: origin_required, date_required, incomplete_coverage, date_unverified, broad_code, conditional_measures, non_additive_rates, or overlapping_programs. Open string; preserve future values. Null when resolved
- deep.originstring or null
- Country of origin of the goods, resolved to ISO alpha-2. This can differ from the country of shipment
- deep.effective_ratenumber or null
- For an 8- or 10-digit code, a combined percentage for matched measures only with complete measure coverage, a verified effective date and no unresolved conditions. Otherwise null. This does not establish the complete duty owed.
- deep.measuresarray or null
- Chapter 99 measures matched by code and origin. Each keeps its description, rate, effective dates, and conditional flag. Read the text for product and entry requirements. These rows remain available when coverage is incomplete; an empty array does not prove no duties apply.
- deep.measures[].conditionalboolean
- Product or entry conditions require review. The combined effective_rate stays null.
- deep.measures[].headingstring
- The matched Chapter 99 heading, such as 9903.88.03
- deep.measures[].descriptionstring or null
- The provision text, verbatim, or null when unavailable. Read it for product and entry requirements
- deep.measures[].ratestring or null
- The published rate text, or null when unavailable. It may combine a base duty and an additional percentage
- deep.measures[].fromstring or null
- First effective calendar date as YYYY-MM-DD, or null when not stated
- deep.measures[].untilstring or null
- Last effective calendar date as YYYY-MM-DD, or null when not stated
Have a file?
Upload HTS codes to Bulk to append descriptions, base general rates, revision and edition beside your original rows. Use an HTS or tariff code header. Bulk preserves leading zeroes and does not guess codes from product descriptions.
Questions? Email