BOLs from 60 forwarders, 12 carriers, 8 languages — DocParse normalizes them into one schema. Our TMS team stopped writing per-carrier parsers.
Every shipment.Tracked from the dock.
BOLs, packing lists, customs forms, dock receipts. Shipper, consignee, container, weights, HS codes — extracted from any carrier in any layout.
{
"bol_no": "BOL-887421",
"shipper": "Hangzhou Trading Co.",
"consignee": "Northwind Logistics",
"container_no": "MSKU 8873421-2",
"vessel": "EVER GOLDEN",
"gross_weight_kg": 18420,
"hs_code": "8542.31.0001",
"port_of_load": "CNSHA"
}Three reasons teams switch to us
Every carrier, one schema
Maersk, MSC, Hapag-Lloyd, ZIM, ONE, CMA CGM and 80+ regional carriers. One JSON schema regardless of carrier layout.
HS codes and customs-ready
Extracts HS codes, country of origin, declared value, and incoterms. Auto-validates against current tariff schedules.
Multi-doc shipment view
BOL + packing list + customs form stitched into one shipment record. Discrepancies surfaced at the line level.
From raw bill of lading
to structured data, in four steps.
Starter schema for bill of lading.
Tweakable in seconds.
The bill of lading template comes with a 10-field starter schema based on the most common fields teams pull from bill of lading. Add your own fields, mark which are required, and change types in the dashboard or via the REST API.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Billoflading",
"type": "object",
"required": [
"bol_no",
"shipper",
"consignee",
"container_no",
"port_of_load",
"port_of_discharge",
"gross_weight_kg"
],
"properties": {
"bol_no": {
"type": "string"
},
"shipper": {
"type": "string"
},
"consignee": {
"type": "string"
},
"container_no": {
"type": "string"
},
"vessel": {
"type": "string"
},
"voyage": {
"type": "string"
},
"port_of_load": {
"type": "string"
},
"port_of_discharge": {
"type": "string"
},
"gross_weight_kg": {
"type": "number"
},
"hs_code": {
"type": "string"
}
}
}Field-level accuracy per field.
Multi-modal models do the reading, and accuracy depends on document quality. The numbers below are illustrative ranges we've seen on bill of lading — run your own documents and compare against a small ground-truth set before you scale.
accuracy ceiling
One endpoint.
Every output you need.
# Extract with one POST
curl -X POST "https://api.docparse.io/v1/bols" \
-H "Authorization: Bearer $DOCPARSE_KEY" \
-F file=@"bol-msku-887421.pdf" \
-F schema="bol" \
-F webhook="https://api.acme.co/incoming"
# Returns:
{
"status": "complete",
"confidence": 0.987,
"latency_ms": 2412,
"data": { ... }
}Plain HTTP, no SDK lock-in
Bearer-token auth with revocable, SHA-256-hashed API keys. Call it from any language that can hit a REST endpoint — we publish docs and copy-pasteable snippets, not opinionated wrappers.
Signed webhooks for async
Register an endpoint, set the events, and we POST signed deliveries (HMAC-SHA256, Standard Webhooks spec) as extractions finish. Every attempt is logged in the dashboard with response code, body, and timing.
Why teams switch from regex.
A look at how DocParse compares to the three things you've probably already tried.
Reach the tools you already run.
DocParse ships two integration surfaces directly — REST API and signed webhooks — plus a native Zapier app that opens up everything else.
How teams use DocParse for bill of lading.
Illustrative scenarios drawn from teams piloting DocParse — names and figures are examples, not customer quotes.
Customs holds dropped 80% in our first quarter. The HS-code validation catches errors before the broker sees them.
The discrepancy detection between BOL and packing list saved us $340k in disputed shortages last year.
The questions teams ask before they sign up.
BOLs are not a special case anymore.
Every carrier, every layout, one schema. Wire it into your TMS in an afternoon.