blueport
Consulting Solutions Products One platform AI agents Pricing Contact
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 file. 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 file 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.

◉

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 in credits

Simple credit pricing — 6 credits per page, shared across every Blueport API.

Basic

$12.99 /mo
billed monthly
2,000 credits
≈ 333 pages
Contact us

Personal

$32.99 /mo
billed monthly
5,500 credits
≈ 917 pages
Contact us
Most popular

Business

$64.99 /mo
billed monthly
12,500 credits
≈ 2,083 pages
Contact us

Business Plus

$129.99 /mo
billed monthly
27,500 credits
≈ 4,583 pages
Contact us

Scale

$389.99 /mo
billed monthly
87,500 credits
≈ 14,583 pages
Contact us
6 credits per page Full API access Rotatable organisation key Dashboard usage tracking Save 10% when billed annually
Credit calculator Estimate credits by endpoint and page volume.
6 credits / page≈ 2.5¢ USD / page
Credits needed / month12,500
Contact us
How our Business plan stacks up

A like-for-like comparison of our Business plan against other providers equivalent Business plan (USD pricing).

Other ProvidersBlueport Business
Cost
Monthly priceUS$44.99 (Business Plan)US$41.99 (Business)−7%
Pages included / mo1,916 pages2,083 pages+9%
Cost per page≈ 2.3¢ USD≈ 2.0¢ USD−14%
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
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.

Everything is billed in credits: 6 credits per page for extraction, 1 per page for rendering. One credit balance is shared across every Blueport API. Billing is in AUD (+ GST for Australian customers); USD prices are a guide at current rates. Need more than 87,500 credits 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?

Three steps — subscribe, integrate, operate.