> ## Documentation Index
> Fetch the complete documentation index at: https://terminal49-feat-trade-intel-sdk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Get trade intelligence coverage

> Return the window, history start, partial month, and build time of Terminal49 trade intelligence, built from US import bill-of-lading records.



## OpenAPI

````yaml get /trade_intel/meta
openapi: 3.0.0
info:
  title: Terminal49 API Reference
  version: 0.2.0
  contact:
    name: Terminal49 API support
    url: https://www.terminal49.com
    email: support@terminal49.com
  description: >-
    The Terminal 49 API offers a convenient way to programmatically track your
    shipments from origin to destination.


    Please enter your API key into the "Variables" tab before using these
    endpoints within Postman.
  x-label: Beta
  termsOfService: https://www.terminal49.com/terms
servers:
  - url: https://api.terminal49.com/v2
    description: Production
security:
  - authorization: []
tags:
  - name: Containers
  - name: Custom Field Definitions
  - name: Custom Field Options
  - name: Custom Fields
  - name: Shipments
  - name: Locations
  - name: Events
  - name: Tracking Requests
  - name: Webhooks
  - name: Webhook Notifications
  - name: Ports
  - name: Metro Areas
  - name: Terminals
  - name: Routing (Paid)
  - name: Documents
  - name: Email Submissions
  - name: Document Schemas
  - name: Search
  - name: Parties
  - name: Trade Intelligence
    description: >-
      Trade intelligence answers questions about who imports what into the US,
      from where, on which carriers, and how that changes over time. The data is
      US import bill-of-lading records (US Customs vessel manifests): every
      ocean container landed at a US port (plus US-bound cargo landed at
      Vancouver, BC) from January 2022 to today, refreshed daily. It does not
      include air freight, exports, or domestic moves.


      **Access.** Trade intelligence is enabled per account. Accounts without it
      receive `403 Forbidden` with `{"error": "Trade intelligence is not enabled
      for this account"}`; contact sales@terminal49.com to enable it. Requests
      are limited to roughly 120 per minute per account (`429` with `{"error":
      "Rate limit exceeded; retry in a minute"}`).


      **Format.** These endpoints accept and return plain JSON, not JSON:API.
      Send `Content-Type: application/json` on `POST` requests and authenticate
      exactly like every other v2 endpoint (`Authorization: Token
      YOUR_API_KEY`).


      **Typical flow.** Resolve a name or product first, then analyze:
      `companies/search` or `commodities/search` give you the exact
      `company_name` or `hs4` to pass to `companies/profile`, `importers/top`,
      `trends`, or `breakdown`. Container and bill of lading numbers go straight
      to `containers/lookup` and `bills_of_lading/lookup`.


      **Reading the numbers.**


      - **Volume is physical containers.** Each box is counted once, even when
      it appears on several bills of lading. A container carrying several HS
      codes counts once per code and companies can share containers, so do not
      add volumes across HS codes or companies; take market totals from `trends`
      or `breakdown` without a company filter.

      - **Estimated value is a modelled USD estimate**, not the declared customs
      value.

      - **The current month is partial.** `trends` and `breakdown` include it by
      default; `companies/profile` and `importers/top` use full calendar months.
      Compare full months against the same months a year earlier.

      - **Absent volume is not small volume.** Importers can ask US Customs to
      withhold their name from manifests, and much large-retail freight is
      booked under forwarders or suppliers. Treat a company's figures as a
      floor, never as its size.

      - **One company, many names.** Company names are normalized but split by
      state, and large importers use several names (distribution, merchandising,
      and DC entities). Related entities are separate companies; report them
      separately. `companies/search` ranks by match quality, not by size.

      - **Companies are the consignee or notify party on the bill.** Forwarders,
      NVOCCs, and customs brokers appear alongside cargo owners. A high
      notify-party share, or LOGISTICS, FREIGHT, SHIPPING, CUSTOMS, or BROKERAGE
      in the name, usually indicates a logistics provider.

      - **Carriers, countries, and ports use the manifests' spellings**, and
      carriers appear under spelling variants (for example `CMA CGM` and `CMA
      CGM AMERICA LLC`). Filter with substrings and merge variants before
      computing shares.

      - **HS4 descriptions are truncated.** Check `common_goods` from
      `commodities/search` before relying on a code.
paths:
  /trade_intel/meta:
    get:
      tags:
        - Trade Intelligence
      summary: Get trade intelligence coverage
      description: >-
        Returns the window the search index covers, how far back history goes,
        which month is still partial, and when the data was last built. Call it
        to learn the exact `since_month` and `facts_since_month` before quoting
        a period, and to confirm the account has trade intelligence enabled (a
        `403` means it does not).


        The data is US import bill-of-lading records (US Customs vessel
        manifests), January 2022 onward, refreshed daily.
      operationId: get-trade-intel-meta
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradeIntelMeta'
              example:
                since_month: 2025-09
                until_month_exclusive: 2026-09
                months: 12
                min_containers: 5
                companies: 250000
                hs_codes: 1200
                facts_since_month: 2022-01
                facts_until_exclusive: 2026-11
                partial_month: 2026-10
                mode: local
                facts_hash: 3f9c1a7e
                refreshed_since: '2026-10-01'
                fact_rows:
                  lane_month: 1200000
                  company_month: 9800000
                  commodity_month: 6400000
                  hs_lane_month: 15000000
                volume_measure: containers
                built_at: '2026-10-08T06:12:44Z'
        '400':
          $ref: '#/components/responses/TradeIntelBadRequest'
        '401':
          $ref: '#/components/responses/TradeIntelUnauthorized'
        '403':
          $ref: '#/components/responses/TradeIntelNotEnabled'
        '429':
          $ref: '#/components/responses/TradeIntelRateLimited'
        '502':
          $ref: '#/components/responses/TradeIntelUnavailable'
        '504':
          $ref: '#/components/responses/TradeIntelUnavailable'
components:
  schemas:
    TradeIntelMeta:
      type: object
      description: >-
        Index window, freshness, and counts. Also returned as `index` by
        `companies/search`.
      properties:
        since_month:
          type: string
          description: >-
            First month of the 12-full-month window that search results and
            rankings cover.
          example: 2025-09
        until_month_exclusive:
          type: string
          description: Month after the last full month in the search window (exclusive).
          example: 2026-09
        months:
          type: integer
          description: Number of full months in the search window.
          example: 12
        min_containers:
          type: integer
          description: >-
            Minimum containers in the window for a company to be in the search
            index.
          example: 5
        companies:
          type: integer
          description: Companies in the search index.
          example: 250000
        hs_codes:
          type: integer
          description: HS4 codes in the search index.
          example: 1200
        facts_since_month:
          type: string
          description: >-
            First month of history available to `companies/profile`,
            `importers/top`, `trends`, and `breakdown`. History starts in
            January 2022.
          example: 2022-01
        facts_until_exclusive:
          type: string
          description: Month after the latest month with data (exclusive).
          example: 2026-11
        partial_month:
          type: string
          description: >-
            The current calendar month, which is still being loaded and is
            incomplete.
          example: 2026-10
        mode:
          type: string
          description: Serving mode of the index.
          example: local
        facts_hash:
          type: string
          description: >-
            Fingerprint of the current fact build. It changes whenever the data
            is refreshed.
        refreshed_since:
          type: string
          description: Start of the period covered by the most recent daily refresh.
          example: '2026-10-01'
        fact_rows:
          $ref: '#/components/schemas/TradeIntelFactRowCounts'
        volume_measure:
          type: string
          description: >-
            Unit of every `containers` figure: physical containers, each counted
            once.
          example: containers
        built_at:
          type: string
          description: When the index was built.
          format: date-time
          example: '2026-10-08T06:12:44Z'
      required:
        - since_month
        - until_month_exclusive
        - months
        - min_containers
        - companies
        - hs_codes
        - facts_since_month
        - facts_until_exclusive
        - partial_month
        - mode
        - facts_hash
        - refreshed_since
        - fact_rows
        - volume_measure
        - built_at
    TradeIntelFactRowCounts:
      type: object
      description: Row counts of the monthly fact tables behind the analytics endpoints.
      properties:
        lane_month:
          type: integer
          description: Rows in the lane-by-month fact table.
        company_month:
          type: integer
          description: Rows in the company-by-month fact table.
        commodity_month:
          type: integer
          description: Rows in the commodity-by-month fact table.
        hs_lane_month:
          type: integer
          description: Rows in the HS-code-by-lane-by-month fact table.
      required:
        - lane_month
        - company_month
        - commodity_month
        - hs_lane_month
    TradeIntelError:
      type: object
      description: >-
        Plain JSON error body returned by trade intelligence endpoints (not
        JSON:API).
      properties:
        error:
          type: string
          description: >-
            What was wrong with the request, or why trade intelligence could not
            answer.
          example: >-
            hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search
            to find one
      required:
        - error
  responses:
    TradeIntelBadRequest:
      description: >-
        Bad Request - the request was understood but a value is invalid, for
        example an `hs4` that is not a 4-digit HS code.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradeIntelError'
          example:
            error: >-
              hs4 must be a 4-digit HS code, e.g. '0306'; use commodities/search
              to find one
    TradeIntelUnauthorized:
      description: Unauthorized - the API key is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradeIntelError'
          example:
            error: Terminal49 API key could not be verified
    TradeIntelNotEnabled:
      description: >-
        Forbidden - trade intelligence is not enabled for this account. Contact
        sales@terminal49.com.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradeIntelError'
          example:
            error: Trade intelligence is not enabled for this account
    TradeIntelRateLimited:
      description: >-
        Too Many Requests - about 120 requests per minute are allowed per
        account.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradeIntelError'
          example:
            error: Rate limit exceeded; retry in a minute
    TradeIntelUnavailable:
      description: >-
        Bad Gateway or Gateway Timeout - trade intelligence is temporarily
        unavailable; retry shortly.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TradeIntelError'
          example:
            error: Trade intelligence is temporarily unavailable; try again shortly
  securitySchemes:
    authorization:
      name: Authorization
      type: apiKey
      in: header
      description: >-
        Use a Terminal49 API key in the `Authorization` header with the `Token`
        prefix.


        `Authorization: Token YOUR_API_KEY`

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.