If you're extracting tables from PDFs in Python, you've probably reached for tabula-py, Camelot or pdfplumber. For clean, ruled tables they work well and they're free, and for a one-off script that's often all you need.
Where they get painful is the long tail: borderless tables, shifting layouts, multi-column pages, and scanned PDFs with no text layer at all. pdftojson is a hosted API for exactly those cases: POST the PDF, get structured data back as JSON, CSV or XML, with OCR for scans and nothing to install or maintain.
Where pdftojson is different
The honest version: if your tables are clean and ruled, Camelot or pdfplumber will do the job for free, and you should use them. The reason to reach for an API is the time you'd otherwise spend on the awkward 20% — the borderless layouts, the scans, the one bank that formats everything differently — plus not owning that maintenance forever.
pdftojson also does something the libraries don't: for bank statements it reconciles the extracted transactions against the opening and closing balances and flags any that don't add up, so you're not silently importing a dropped row.
Should I use pdftojson or just Camelot / pdfplumber?+
If your tables are clean and ruled and you're happy maintaining a script, the free libraries are a good choice. Reach for pdftojson when layouts are messy, PDFs are scanned, or you'd rather not own the edge cases.
Does pdftojson handle scanned PDFs?+
Yes, with OCR through the API. The Python table libraries only read a text layer, so scans need a separate OCR step first.
What output formats can I get?+
JSON, CSV, XML, Markdown or plain text.
Is there a free option?+
Yes — a free in-browser converter for text-based PDFs, and a free API tier to test on real files.