Dutiful API

Customs requirements data as structured JSON

One API call. Origin, destination, goods type. Get back every document required, prohibited item, restriction, and duty rule-verified, sourced, and ready to integrate.

Free sandbox ยท No credit card required ยท JSON:API compliant

cURL
# Get customs requirements for a route
curl https://api.getdutiful.com/v1/route-requirements \
  -H "Authorization: Bearer dtfl_sk_xxxxx" \
  -G \
  -d filter[origin]=GB \
  -d filter[destination]=AU \
  -d filter[goods_type]=personal_effects \
  -d include=requiredDocuments,prohibitedItems,dutyInformation

What you get back

Everything your integration needs in a single response

One query returns the complete customs picture for any origin โ†’ destination โ†’ goods type combination. All data is human-verified and source-cited.

๐Ÿ“‹

Required documents

Every form, certificate, and declaration needed. Form references, issuing authorities, and specific notes for each document.

๐Ÿšซ

Prohibited items

Items banned from import. Categories, legal references, and the specific authority that prohibits them.

โš ๏ธ

Restricted items

Items requiring permits or licences. The permit type, issuing agency, and conditions for each restriction.

๐Ÿ’ฐ

Duty & tax information

De minimis thresholds, duty-free conditions, VAT/GST rates, and ownership requirements for personal effects.

๐Ÿ›

Regulatory bodies

Every government agency involved. Names, roles, websites, and contact details for the relevant authorities.

๐Ÿ”—

Source references

Every data point cites its source URL, publication date, and verification date. Your users can verify independently.

Endpoints

Clean, RESTful, JSON:API compliant

Standard REST conventions. Bearer token auth. Consistent filtering, sorting, sparse fieldsets, and relationship includes on every endpoint.

GET/v1/route-requirements
GET/v1/route-requirements/{id}
GET/v1/countries
GET/v1/prohibited-items
GET/v1/restricted-items
GET/v1/regulatory-bodies
GET/v1/account

Response format

Predictable, structured, ready to render

Every response follows the JSON:API spec. Consistent structure, typed relationships, and source metadata on every record.

JSON:API spec

Standardised response format with typed resources, relationships, and pagination

Sparse fieldsets

Request only the fields you need-reduce payload size for mobile and bandwidth-sensitive integrations

Relationship includes

Sideload related resources in a single request-no waterfall API calls

Cache headers

X-Cache HIT/MISS headers. Smart response caching built in.

JSON Response ยท 200 OK
{
  "data": {
    "type": "route-requirements",
    "id": "01HXYZ...",
    "attributes": {
      "origin": "GB",
      "destination": "AU",
      "goods_type": "personal_effects",
      "summary": "Personal effects from the UK...",
      "ownership_duration_months": 12,
      "confidence": "verified",
      "verified_at": "2026-03-10T00:00:00Z"
    },
    "relationships": {
      "requiredDocuments": {
        "data": [
          { "type": "required-documents", "id": "01HAB..." }
        ]
      },
      "prohibitedItems": {
        "data": [
          { "type": "prohibited-items", "id": "01HCD..." }
        ]
      }
    }
  },
  "included": [
    {
      "type": "required-documents",
      "id": "01HAB...",
      "attributes": {
        "name": "B534 Unaccompanied Personal Effects",
        "form_reference": "B534",
        "issuer": "Australian Border Force",
        "source_url": "https://abf.gov.au/...",
        "verified_at": "2026-03-10T00:00:00Z"
      }
    }
  ]
}

Pricing

Pay for country coverage, not API calls

Choose a tier that matches your operational footprint. Need more countries? Upgrade to the next tier.

SandboxStarterGrowthEnterprise
Monthly price Freeยฃ349ยฃ699 Custom
Includes Assist access
Countries 2 (test data)10 (you choose)30 (you choose)All + custom
Webhooks --โœ“โœ“
SupportDocs onlyEmailPriority + SlackNamed account mgr

Annual billing: pay for 10 months, get 12. Customs data changes slowly-smart caching with a 7-day TTL means your integration stays current with minimal requests.

Built for integration

Customs intelligence inside your product

Embed compliance checks directly into the workflows your users already trust. A few examples of what you can build:

Pre-checkout compliance

Before a customer completes an international order, check whether the items can ship to that destination and what documents will be needed. Reduce failed shipments and returns.

GET /v1/prohibited-items?filter[destination]=JP

Client relocation portals

Build a self-service portal where your relocation clients see exactly what documents and restrictions apply to their move-always current, automatically updated.

GET /v1/route-requirements?filter[origin]=US&filter[destination]=DE

Quoting & booking workflows

Surface customs requirements during freight quoting. Your ops team sees compliance data inline-no tab-switching, no manual research. Faster quotes, fewer errors.

include=requiredDocuments,dutyInformation

Regulatory change webhooks

Subscribe to changes for specific countries or routes. When regulations update, your system knows immediately-trigger re-checks, update caches, notify affected users.

POST /v1/webhooks-Growth tier and above

FAQ

Questions about the API

Start building with verified customs data today

Free sandbox with test data. No credit card. Get your API key in under a minute.

Book a demo