> ## Documentation Index
> Fetch the complete documentation index at: https://docs.landedfees.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Look up rates

> Returns the resolved MFN rate plus every applicable overlay
(Section 232 / 301 / 122 / 301-FL / 338, AD/CVD, preferential
FTA rates by program) and destination-country VAT / GST. Read-only,
cacheable for 1 hour.




## OpenAPI

````yaml GET /v1/rates/{country}/{hs}
openapi: 3.1.0
info:
  title: LandedFees API
  version: 1.0.0
  summary: Landed-cost, HS classification, and origin-comparison API.
  description: |
    LandedFees exposes five stable v1 endpoints for landed-cost calculation,
    HS classification, multi-origin comparison, and rate lookup. All requests
    require a bearer API key (format `sk_live_...`). Every response returns
    JSON. Rate limits are surfaced via `X-RateLimit-*` headers.

    Data provenance: rates resolve against the same live tables the
    LandedFees UI uses (USITC HTS, EU TARIC, HMRC UK Trade Tariff, WCO HS,
    CBP weekly FX per 19 CFR 141.62). No estimates.

    Idempotency: mutation-like endpoints (calc, calc/bulk, classify,
    compare) accept an `Idempotency-Key` header. Repeating the same key
    within 24 hours returns the cached response.
  contact:
    name: LandedFees Support
    url: https://www.landedfees.com/support
    email: support@landedfees.com
  license:
    name: Proprietary
    url: https://www.landedfees.com/terms
servers:
  - url: https://www.landedfees.com
    description: Production (v1)
security:
  - bearerAuth: []
tags:
  - name: Calculate
    description: Landed-cost calculation for single and bulk shipments.
  - name: Classify
    description: HS / HTS code classification from a product description.
  - name: Compare
    description: Side-by-side landed-cost comparison across origins.
  - name: Rates
    description: Duty and tax rate lookup by country and HS code.
paths:
  /v1/rates/{country}/{hs}:
    get:
      tags:
        - Rates
      summary: Look up duty and tax rates for a country + HS code.
      description: |
        Returns the resolved MFN rate plus every applicable overlay
        (Section 232 / 301 / 122 / 301-FL / 338, AD/CVD, preferential
        FTA rates by program) and destination-country VAT / GST. Read-only,
        cacheable for 1 hour.
      operationId: rates
      parameters:
        - name: country
          in: path
          required: true
          description: ISO-3166-1 alpha-2 destination country code (e.g. US, DE, GB).
          schema:
            type: string
            minLength: 2
            maxLength: 2
            example: US
        - name: hs
          in: path
          required: true
          description: HS or HTS code, 4 to 10 digits (dots optional).
          schema:
            type: string
            minLength: 4
            maxLength: 15
            example: 8517.62.00
        - name: origin
          in: query
          required: false
          description: Origin country for stacking overlays (Section 301, AD/CVD).
          schema:
            type: string
            minLength: 2
            maxLength: 2
            example: CN
        - name: calculation_date
          in: query
          required: false
          description: ISO date the rates are effective on. Defaults to today.
          schema:
            type: string
            format: date
            example: '2026-08-23'
      responses:
        '200':
          description: Rates resolved.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RatesResponse'
              examples:
                us_cn_8517:
                  summary: US import from CN, HS 8517.62.00
                  value:
                    country: US
                    hs_code: 8517.62.00
                    origin: CN
                    calculation_date: '2026-08-23'
                    mfn_rate: 0
                    preferential_rate: null
                    overlays:
                      section_301: 0.25
                      section_122: 0.1
                      section_232: null
                      section_301_fl: null
                      section_338_ca: null
                      ad_cvd: null
                    vat_rate: null
                    sources:
                      - USITC HTS 2026
                      - USTR Section 301 List 4A
                    data_as_of: '2026-08-22T14:03:00Z'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          description: No rate found for the given country + HS combination.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  headers:
    XRateLimitLimit:
      description: Total requests allowed in the current window.
      schema:
        type: integer
        example: 1000
    XRateLimitRemaining:
      description: Requests remaining in the current window.
      schema:
        type: integer
        example: 987
    XRateLimitReset:
      description: Unix epoch seconds when the window resets.
      schema:
        type: integer
        example: 1755273600
  schemas:
    RatesResponse:
      type: object
      properties:
        country:
          type: string
        hs_code:
          type: string
        origin:
          type: string
          nullable: true
        calculation_date:
          type: string
          format: date
        mfn_rate:
          type: number
          nullable: true
        preferential_rate:
          type: number
          nullable: true
        overlays:
          type: object
          properties:
            section_301:
              type: number
              nullable: true
            section_301_fl:
              type: number
              nullable: true
            section_232:
              type: number
              nullable: true
            section_232_pharma:
              type: number
              nullable: true
            section_122:
              type: number
              nullable: true
            section_338_ca:
              type: number
              nullable: true
            ad_cvd:
              type: number
              nullable: true
        vat_rate:
          type: number
          nullable: true
        sources:
          type: array
          items:
            type: string
        data_as_of:
          type: string
          format: date-time
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
        code:
          type: string
        message:
          type: string
        detail:
          type: string
        issues:
          type: array
          items:
            type: object
  responses:
    BadRequest:
      description: Request body failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: invalid body
            issues:
              - path:
                  - destination_country
                message: String must contain exactly 2 character(s)
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: unauthorized
    PaymentRequired:
      description: >-
        Quota exhausted for the current plan. Upgrade or wait for the monthly
        reset.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: quota_exceeded
            code: QUOTA_EXCEEDED
            message: >-
              Monthly quota exhausted. Upgrade at
              https://www.landedfees.com/pricing.
    TooManyRequests:
      description: Rate limit exceeded. Retry after the reset window.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: rate_limited
            code: RATE_LIMITED
            message: Too many requests. Retry after 60 seconds.
    InternalError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: internal
            detail: engine error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: sk_live
      description: |
        API key issued from the LandedFees dashboard under Settings > API keys.
        Format: `sk_live_...` (production) or `sk_test_...` (sandbox). Pass in
        the `Authorization: Bearer <key>` header.

````