{
  "openapi": "3.0.1",
  "info": {
    "title": "FMC Oti Scraper",
    "description": "The full FMC registry of licensed Ocean Transportation Intermediaries: every US and foreign NVOCC and ocean freight forwarder, with license number, renewal date, surety bond and amount, qualifying individuals and address. Filter for compliance and partner vetting, or look up an OTI by number.",
    "version": "1.0",
    "x-build-id": "qjNRkHaouvgseacNk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/normdata~fmc-oti-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-normdata-fmc-oti-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/normdata~fmc-oti-scraper/runs": {
      "post": {
        "operationId": "runs-sync-normdata-fmc-oti-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/normdata~fmc-oti-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-normdata-fmc-oti-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Caps how many OTI rows this run writes. Starts at 10 for a quick sample; raise it for a full run (the whole registry is about 9,800 entries)."
          },
          "mode": {
            "title": "What to do",
            "enum": [
              "search",
              "lookup"
            ],
            "type": "string",
            "description": "Search filters the FMC licensed OTI registry into a list. Look up resolves exact organization or license numbers, or company names, and returns one row per identifier.",
            "default": "search"
          },
          "name": {
            "title": "Name contains (for Search)",
            "type": "string",
            "description": "Match OTIs whose legal name or a registered trade name (DBA) contains this text."
          },
          "otiType": {
            "title": "OTI type (for Search)",
            "enum": [
              "any",
              "nvocc",
              "freight_forwarder",
              "both"
            ],
            "type": "string",
            "description": "Restrict by intermediary type. NVOCC issues its own bills of lading; an ocean freight forwarder books cargo on behalf of shippers.",
            "default": "any"
          },
          "state": {
            "title": "State(s) (for Search)",
            "type": "array",
            "description": "Two-letter US state code(s), e.g. CA, NY, TX. Leave empty for all states.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country name(s) (for Search)",
            "type": "array",
            "description": "Full country name(s) as they appear in the registry, e.g. CHINA, INDIA, UNITED STATES. Leave empty for all countries.",
            "items": {
              "type": "string"
            }
          },
          "basedIn": {
            "title": "Based in (for Search)",
            "enum": [
              "any",
              "us",
              "foreign"
            ],
            "type": "string",
            "description": "Filter US-based against foreign-based OTIs.",
            "default": "any"
          },
          "city": {
            "title": "City contains (for Search)",
            "type": "string",
            "description": "Match OTIs whose city contains this text."
          },
          "foreignNvoccOnly": {
            "title": "Foreign NVOCCs only (for Search)",
            "type": "boolean",
            "description": "Only non-US NVOCCs. This is the group the FMC advises US parties to check most carefully before doing business.",
            "default": false
          },
          "unlicensedOnly": {
            "title": "Unlicensed foreign NVOCCs only (for Search)",
            "type": "boolean",
            "description": "Only non-US NVOCCs that are registered but hold no FMC license (shown with ** in the source). They can lawfully operate only if bonded.",
            "default": false
          },
          "suretyCompany": {
            "title": "Surety company contains (for Search)",
            "type": "string",
            "description": "Match OTIs whose NVOCC or freight-forwarder bond is written by a surety company containing this text, e.g. \"Avalon\", \"Liberty Mutual\"."
          },
          "qualifyingIndividual": {
            "title": "Qualifying individual contains (for Search)",
            "type": "string",
            "description": "Match OTIs with a named qualifying individual (the person the FMC holds responsible) containing this text."
          },
          "hasBond": {
            "title": "Has a bond on file (for Search)",
            "type": "boolean",
            "description": "Set to true for OTIs with a bond amount on file, or false for those without one."
          },
          "minBondAmount": {
            "title": "Min total bond amount, USD (for Search)",
            "minimum": 0,
            "type": "integer",
            "description": "Only OTIs whose combined NVOCC + forwarder bond amount is at least this."
          },
          "maxBondAmount": {
            "title": "Max total bond amount, USD (for Search)",
            "minimum": 0,
            "type": "integer",
            "description": "Only OTIs whose combined bond amount is at most this."
          },
          "renewalBefore": {
            "title": "License renewal on or before (for Search)",
            "type": "string",
            "description": "ISO date (2027-01-01). Only OTIs whose license renewal date is on or before this, for an expiring-license watch list."
          },
          "renewalAfter": {
            "title": "License renewal on or after (for Search)",
            "type": "string",
            "description": "ISO date. Only OTIs whose license renewal date is on or after this."
          },
          "renewalDueInDays": {
            "title": "Renewal due within N days (for Search)",
            "type": "integer",
            "description": "Only OTIs whose license renewal is due within this many days, including any already overdue."
          },
          "identifiers": {
            "title": "Organization / license numbers or names (for Look up)",
            "type": "array",
            "description": "FMC organization numbers (e.g. 019738), license numbers, or company names. Names match the first OTI whose legal or trade name contains the text; unmatched identifiers come back as an error row.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}