blueport
Blueport AI Agents

PDF2JSON

PDF in. Clean JSON out.

One API call that reads invoices, contracts and forms the way a person does — and returns structured, semantic JSON your systems can use immediately. No templates to configure. No fields to map.

Live at POST https://pdf.blueport.io/pdf2json — most documents come back in 10–25 seconds.

How it works

Three steps. One of them is yours.

You send the document. The AI does the reading. You get back JSON shaped by what the document actually says.

01

Post your PDF

Send the file raw or as base64 with your organisation's API key — up to 8 MB per document. That's the whole integration.

02

The AI reads it

Not OCR, not a layout parser — the document is read for meaning: who the parties are, what the line items say, which totals matter.

03

JSON comes back

Logical entity groups with camelCase keys, real JSON numbers for money and ISO dates — typically in 10–25 seconds.

Demo

One invoice, seen both ways

On the left, the kind of PDF your inbox is full of. On the right, exactly what PDF2JSON returns for it — grouped entities, typed numbers, ISO dates.

Sample

Coastline Powersports Pty Ltd

ABN 84 002 749 331
14 Slipway Drive, Marlin Bay NSW 2430
accounts@coastlineps.example
Tax invoice
INV-20841
Issued: 12/08/2026
Due: 26/08/2026
Bill to
Jordan Avery · 8 Foreshore Rd, Marlin Bay NSW 2430 · jordan.avery@example.com
DescriptionQtyUnitAmount
30,000 km service — labour1289.00289.00
Oil filter HF-204124.5024.50
Engine oil 10W-40 (3.2 L)158.8058.80
Brake pads — front set189.9589.95
Subtotal (ex GST)$462.25
GST 10%$46.23
Total AUD$508.48

Response — POST /pdf2json

{
  "ok": true,
  "data": {
    "documentType": "TAX INVOICE",
    "pages": 1,
    "currency": "AUD",
    "supplier": {
      "name": "Coastline Powersports Pty Ltd",
      "abn": "84 002 749 331",
      "address": "14 Slipway Drive, Marlin Bay NSW 2430",
      "email": "accounts@coastlineps.example"
    },
    "customer": {
      "name": "Jordan Avery",
      "address": "8 Foreshore Rd, Marlin Bay NSW 2430",
      "email": "jordan.avery@example.com"
    },
    "invoice": {
      "invoiceNumber": "INV-20841",
      "issueDate": "2026-08-12",
      "dueDate": "2026-08-26"
    },
    "lineItems": [
      { "description": "30,000 km service - labour",
        "quantity": 1, "unitPrice": 289.00, "amount": 289.00 },
      { "description": "Oil filter HF-204",
        "quantity": 1, "unitPrice": 24.50, "amount": 24.50 },
      { "description": "Engine oil 10W-40 (3.2 L)",
        "quantity": 1, "unitPrice": 58.80, "amount": 58.80 },
      { "description": "Brake pads - front set",
        "quantity": 1, "unitPrice": 89.95, "amount": 89.95 }
    ],
    "totals": {
      "subtotalExcludingGst": 462.25,
      "gst": 46.23,
      "totalIncludingGst": 508.48
    }
  },
  "meta": { "request_id": "req_9f2c41ab", "duration_ms": 12840, "model": "hkm" }
}
Compare

Fields you can use, not fragments to parse

Most PDF-to-JSON tools return the page layout — positioned text boxes with styling metadata. The fields you actually need are still your problem. Here's the same invoice through a typical layout extractor, and through PDF2JSON:

Typical layout extractor

{
  "page": 1,
  "objects": [
    { "text": "Coastline Powersports Pty Ltd",
      "x": 56.4, "y": 48.2, "width": 214.7, "height": 15.1,
      "fontName": "Helvetica-Bold", "fontSize": 15.0,
      "style": "h2", "type": "text" },
    { "text": "INV-20841",
      "x": 458.1, "y": 74.9, "width": 68.3, "height": 11.2,
      "fontName": "Helvetica-Bold", "style": "p", "type": "text" },
    { "text": "12/08/2026",
      "x": 449.6, "y": 89.4, "width": 61.8, "height": 10.6,
      "style": "p", "type": "datetime" },
    { "text": "$508.48",
      "x": 470.3, "y": 402.6, "width": 47.5, "height": 12.4,
      "fontName": "Helvetica-Bold", "style": "p", "type": "currency" }
    … 60+ more text objects
  ]
}
  • Values are strings — "$508.48" still needs parsing
  • No entities — which text box is the supplier? The customer?
  • Dozens of coordinate blocks per page for you to reassemble

PDF2JSON

{
  "documentType": "TAX INVOICE",
  "currency": "AUD",
  "supplier": {
    "name": "Coastline Powersports Pty Ltd",
    "abn": "84 002 749 331"
  },
  "customer": {
    "name": "Jordan Avery"
  },
  "invoice": {
    "invoiceNumber": "INV-20841",
    "issueDate": "2026-08-12",
    "dueDate": "2026-08-26"
  },
  "totals": {
    "subtotalExcludingGst": 462.25,
    "gst": 46.23,
    "totalIncludingGst": 508.48
  }
}
  • Real JSON numbers, ISO dates, currency codes
  • Entities already grouped: supplier, customer, invoice, totals
  • Straight into your CRM or ledger — no mapping layer to build
Why teams pick it

Built for documents that don't behave

Every supplier formats things differently. PDF2JSON doesn't care — there is nothing to set up per document type.

No templates, ever

Invoices, sale contracts, registration forms — send any of them today without configuring a single field or zone.

{ }

Semantic entities

The JSON is grouped the way you think: dealer, customer, vehicle, pricing, totals — not a flat list of text boxes.

#

Typed values

Money comes back as numbers, dates as ISO, blanks as null. Your code never parses "$18,990.00" out of a string again.

Entities stay separate

A trade-in vehicle never borrows the sold vehicle's VIN; a customer's licence never fills a dealer field. Blank means blank.

Two engines

The default engine is fast and economical; a premium engine is one header away when maximum field accuracy matters.

Private by design

Documents are processed in flight and never stored — only usage counts and timings are recorded against your account.

Pricing

Simple plans, priced per document

No credit systems to decode — a document is a document, whichever engine reads it. Comparable tools charge around 7¢ a document; every Blueport plan comes in under 6.5¢.

Basic

$12.99 /mo
billed monthly
200 documents
≈ 6.5¢ AUD per document
Get started

Personal

$32.99 /mo
billed monthly
550 documents
≈ 6.0¢ AUD per document
Get started
Most popular

Business

$64.99 /mo
billed monthly
1,250 documents
≈ 5.2¢ AUD per document
Choose Business

Business Plus

$129.99 /mo
billed monthly
2,750 documents
≈ 4.7¢ AUD per document
Get started

Scale

$389.99 /mo
billed monthly
8,750 documents
≈ 4.5¢ AUD per document
Get started
1 document = up to 5 pages Both extraction engines Full API access Rotatable organisation key Dashboard usage tracking Save 10% when billed annually
How the Business Plan stacks up

Matched spend against a leading credit-based PDF API on its equivalent business plan (their USD pricing converted at 0.65). Figures follow the plan and currency toggles above.

Typical credit-based toolBlueport Business
Cost
Monthly priceUS$44.99 ≈ A$69A$64.99
5-page documents included≈ 5751,250+117%
Cost per 5-page document≈ 12¢ AUD≈ 5.2¢ AUD−57%
A 20-page file≈ 48¢ AUD≈ 21¢ AUD−56%
Pricing modelCredits — varies per operationDocuments — flat and predictable
Features
What comes backStyled text fragments you still mapFinished semantic JSON entities{ "documentType": "TAX INVOICE", … }
ValuesStrings — "$508.48" needs parsingReal numbers, ISO dates, currency codes508.48 · "2026-08-12" · "AUD"
Entity groupingNone — you reassemble the fieldsSupplier, customer, line items, totalssupplier · customer · lineItems · totals
Templates or zone setupLayout-dependent resultsNone — any document, first call
Engine choiceOne pipelineFast default + premium accuracy, per requestx-model: hkm | snm
Typical response~60s, async job + polling10–25s, one synchronous call
Document handlingFiles uploaded and held temporarilyProcessed in flight, never stored

Based on the alternative's published per-page credit consumption for AI extraction and plan credit allowances, September 2026. Annual mode compares our discounted rate with the alternative's published monthly rate. Exchange rates vary.

A document includes up to 5 pages — longer files count one document per 5 pages, and premium-engine extractions count double. Billing is in AUD (+ GST for Australian customers); USD prices are a guide at current rates. Need more than 8,750 documents a month, or a proof of concept first? Get in touch — enterprise plans are priced to your volume.

Integrate

Your first document in five minutes

If you can make an HTTP request, you're done. The guide covers Node.js, Salesforce Apex and a ready-made Postman collection.

bash — your first extraction
curl -X POST https://pdf.blueport.io/pdf2json \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/pdf" \
  --data-binary @invoice.pdf
HTTP 200 "documentType": "TAX INVOICE" … 12.8s · hkm · 1 document billed

Ready to integrate?

Everything you need is one click away — the full guide, a ready-made Postman collection, and your organisation's API key.