# Bol.ai > Bol.ai is an AI-powered freight-document data extraction service for freight forwarders, customs brokers and 3PLs. Its flagship is the Bill of Lading: upload a BOL as PDF, scan or photo and receive structured data in seconds — B/L number, booking number, SCAC, carrier, vessel/voyage, shipper, consignee, notify party, ports, per-container details (container number, seal, type, packages, gross weight, CBM), freight terms, incoterms and date of issue. It also extracts the documents that travel with a shipment — commercial invoices, packing lists and CMR road waybills — auto-detecting the document type (returned as doc_type). Output as JSON, CSV or via REST API. Key facts: - Self-serve, per-document pricing: Starter €19/month + €0.49/document, Professional €79/month + €0.29/document, one-time credit packs (€49 for 100 documents). New accounts include 5 free documents. API & MCP access available on Professional and with credits. 7-day free trial. - EU data residency: documents and extracted data are stored exclusively in the European Union (database in Western Europe, file storage under EU jurisdiction). - Scope: Bol.ai converts freight documents into structured data — Bill of Lading (flagship), commercial invoice, packing list and CMR road waybill. The document type is detected automatically and returned as doc_type; each type has its own field set and deterministic verification checks. It is NOT a container tracking or shipment visibility tool. - Supported input: PDF, PNG, JPG up to 10 MB, including scans and photos of paper documents. - Fields that cannot be read from a document are returned as null — never guessed. - Made in the Netherlands by Dutchcode. ## Pages - [Home](https://bol.ai/): product overview, how it works, sample JSON output, pricing, FAQ - [API documentation](https://bol.ai/docs/): REST API reference with curl examples (POST /api/bol/extract) - [Free Bill of Lading template](https://bol.ai/bill-of-lading-template/): fill-in BOL template, print or save as PDF, plus explanations of what a Bill of Lading must contain, master vs. house B/L, and B/L vs. sea waybill - [Bill of Lading guide for Alibaba imports](https://bol.ai/guides/bill-of-lading-alibaba-imports/): telex release, master vs. house B/L, supplier payment terms, and a pre-sailing checklist for e-commerce sellers importing by sea - [Container number check digit calculator](https://bol.ai/container-number-check-digit/): free interactive ISO 6346 validator — paste a container number to check it, or compute the missing check digit, with a full explanation of the checksum - [Compare](https://bol.ai/compare/): honest comparisons of Bol.ai vs other Bill of Lading / document-extraction tools — [vs Nanonets](https://bol.ai/compare/bol-ai-vs-nanonets/), [vs Docsumo](https://bol.ai/compare/bol-ai-vs-docsumo/), [vs Klippa](https://bol.ai/compare/bol-ai-vs-klippa/), including when a competitor is the better choice - [App](https://bol.ai/app/): sign in / sign up ## MCP server Bol.ai exposes a Model Context Protocol server at https://bol.ai/api/mcp (streamable HTTP, Bearer auth with a Bol.ai API key — works from Claude Code, Cursor, n8n, Zapier MCP, Make, or any MCP client). Eight tools covering the full document lifecycle: - extract_bol (url or base64 — extracts a Bill of Lading, commercial invoice, packing list or CMR, auto-detecting the type) and extract_batch (up to 10 URLs, per-file outcome) - get_document (original + corrected fields, verification warnings), list_documents - save_corrections (write corrected fields back; corrections win in exports and reconciliation) - get_related_documents (cross-document reconciliation: link a shipment's B/L, invoice and packing list by shared references and flag mismatches — parties, weights, package counts) - export_documents (TMS/ERP-ready normalized line rows) - get_usage (remaining credits / subscription — check before large batches; a 402 mid-batch returns a checkout URL a human can complete) Discovery metadata at https://bol.ai/.well-known/mcp.json. Agent integration guide at https://bol.ai/agents/. ## Additional capabilities - Document types: every extraction returns doc_type (bill_of_lading | commercial_invoice | packing_list | cmr) and a human doc_label. The type is classified automatically; one document = one usage unit regardless of type. - Bulk export: GET /api/bol/export flattens every completed document into one normalized "shipment line" master sheet (one row per container/invoice line/package/goods line). Formats: csv (default), xlsx (real Excel), json (TMS/ERP-ready rows), customs (a customs-declaration draft from Bills of Lading). Optional ?type= filter and ?template= for saved column mappings (subset/reorder/rename columns to a TMS/ERP import format; managed via /api/me/export-templates). Native Google Sheets / TMS connectors are roadmap; the json export + webhooks are the integration path today. - Batch: drop multiple documents in the app, or POST up to 10 files to /api/bol/batch in one call; each is billed per document with a per-file result. - Webhooks & integrations: set a webhook URL and every completed extraction (uploads, batch, API, email-in) is POSTed as { id, filename, doc_type, doc_label, status, fields, warnings } — used to connect Zapier, Make, n8n, Google Sheets or your own backend without polling. - Email ingestion: every account gets a unique, private email-in address (in-@bol.ai, shown in the app). Forward or scan-to-email any freight document to it and the extraction appears in your document list — works from any sender (scanners, shared inboxes, forwards), since the account is identified by the address, not the sender. The address can be regenerated if it leaks. (Legacy: extract@bol.ai still works, matched by sender address.) - Corrections: extracted fields can be edited in the app, via PATCH /api/bol/:id, or the save_corrections MCP tool; corrected data is used for CSV exports. - Usage endpoint: GET /api/usage (API-key accessible) returns remaining credits, subscription state and can_extract — poll it before batches instead of hitting a 402. Webhook config (PUT /api/me/webhook), export templates (GET/PUT /api/me/export-templates) and the email-in address (GET /api/me/inbound) are API-key accessible too. - Container-number self-correction: a container number that fails its ISO 6346 check digit is flagged, and when a single OCR-confusion fix passes it is offered as container_number_suggestion (the read value is never overwritten). - Cross-document reconciliation: GET /api/bol/:id/related links a shipment's documents by their shared reference numbers (B/L number, invoice number) and flags where they disagree — shipper/seller and consignee/buyer names, total gross weight (5% tolerance) and package counts — surfaced inline in the app and via the API. Deterministic, no extra usage billed. Catches the mismatches that cause customs holds, amended entries and demurrage.