Extract bills of lading to structured JSON

Bills of lading document what is being shipped, by whom, and to where. They serve as a receipt, a contract of carriage, and sometimes a document of title. Sensible turns BOL data into structured JSON for shipment tracking, freight audit, and trade compliance.

Why bills of lading challenge automated extraction

BOLs arrive as faxes, photos, and low-resolution scans. Domestic straight BOLs look nothing like ocean BOLs. Format variability and document quality make this a natural fit for hybrid extraction.

Shipper and Consignee Field Confusion

The shipper, consignee, notify party, and bill-to fields occupy similar positions across different carrier forms but swap locations. A shipper field on one carrier's BOL sits where the consignee field goes on another. Sensible identifies the correct entity for each role based on context, not just position.

Format Variability Across Carriers

Domestic straight BOL. Ocean bill of lading. Multimodal transport document. Same name, entirely different structures. The hybrid approach (LLM flexibility for layout variation, SenseML rules for consistent output) handles all three.

Dense Cargo Tables

Handling units, freight class, NMFC codes, weights, dimensions, hazmat indicators: all packed into compact cargo rows. Each line item gets extracted with its full detail, even when columns shift or merge across carriers.

Fields we extract

Standard BOL fields cover shipment tracking and freight audit. Customize for your logistics workflow.

Parties

Shipper name/address, consignee name/address, carrier name, notify party, third-party billing, broker name

Cargo

Handling units, package type, weight, dimensions, freight class, NMFC number, commodity description, declared value, hazmat indicator

Shipment

BOL number, PRO number, PO number, ship date, delivery date, freight terms (prepaid/collect), equipment type, seal number


{ /* SenseML: bill of lading extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{
// BOL number
"id": "bol_number",
"description": "bill of lading number, BOL #, B/L number"
},
{
// Shipper name
"id": "shipper",
"description": "shipper name, shipper, ship from"
},
{
// Consignee name
"id": "consignee",
"description": "consignee name, consignee, ship to, deliver to"
},
{
// Total weight
"id": "total_weight",
"description": "total weight, gross weight, weight",
"type": { "id": "number" }
}
// Additional fields for freight class, PRO number, cargo description, etc.
]
}
}
]
}
Multimodal Bill of Lading

Combined transport document covering multiple modes (truck, rail, ocean, air).

Straight Bill of Lading

Non-negotiable BOL for domestic ground freight shipments.

Ocean Bill of Lading

Master or house ocean BOL for containerized international freight.

Supported BOL types

Common BOL formats can be found in Sensible's logistics template library. Domestic, ocean, and multimodal variants can be custom configured to match your freight workflows.

Domestic

Straight BOL (non-negotiable), order BOL (negotiable), uniform straight BOL, short form BOL

International

Master ocean BOL, house ocean BOL, multimodal BOL, through BOL, combined transport document

Trusted by operations and engineering teams at

Common Questions

Answers about BOL types, cargo table extraction, and document quality handling.

Does Sensible handle ocean bills of lading with container information?

Yes. For ocean BOLs, Sensible extracts container numbers, seal numbers, vessel name, voyage number, port of loading, port of discharge, and place of delivery.

Can Sensible extract all party information from a BOL?

Yes. Sensible extracts shipper, consignee, carrier, notify party, and third-party billing information including company names, addresses, and contact details.

Does Sensible extract cargo details from BOLs?

Yes. Sensible captures handling units, package type, weight, dimensions, freight class, NMFC number, commodity description, and declared value for each line item on the BOL.

What shipment details does Sensible extract from bills of lading?

Sensible extracts shipper, consignee, carrier, BOL number, PRO number, PO number, ship date, delivery date, freight terms, and special instructions.

Do you support webhooks?

Yes. Sensible sends extraction results to your webhook endpoint when processing completes. You can also poll the API for status.

Does Sensible support human review?

Yes. Sensible flags extractions with low confidence for human review. You can configure review thresholds and workflows.

What security certifications does Sensible have?

Sensible is SOC 2 Type II certified and HIPAA compliant. Data is encrypted in transit and at rest.

How long is document data retained?

Document data is stored indefinitely by default. Custom retention policies are available and can be configured for same-day deletion if needed.

Is there a free trial?

Yes. Sensible offers a 14-day free trial on the Growth plan. No credit card required to start.

How is pricing structured?

Sensible uses per-document pricing for predictable costs. No token-based billing or usage surprises. Volume discounts are available for higher throughput.

How do I integrate with Sensible?

Sensible provides REST APIs and SDKs for Python and Node.js. Most integrations take a few hours. Webhooks, Zapier, and direct API calls are all supported.

What file formats does Sensible support?

Sensible processes PDFs (native or scanned), Microsoft Word (DOC, DOCX), spreadsheets (XLSX, XLS, CSV), single-page images (JPEG, PNG), multi-page images (TIFF), and email bodies with attachments.

How accurate is the extraction?

Accuracy depends on document quality and configuration. Most production deployments achieve 95%+ accuracy with proper validation rules and confidence signals.

How fast is document processing?

Processing speed depends on document size, page count, OCR requirements, and which extraction methods are used. Simple single-page documents process in seconds. Larger or more complex documents that use LLM-based extraction take longer.