PDF OCR Read API
Send the URL of a scanned PDF and get its text back as JSON, page by page with character counts. For paper invoices, letters and records that have no text layer.
- Free plan
- No credit card
Request
curl -X POST https://apdf.io/api/pdf/ocr/read \
-H "Authorization: Bearer TOKEN" \
-d file="FILE_URL"
const data = new FormData();
data.append('file', 'FILE_URL');
fetch('https://apdf.io/api/pdf/ocr/read', {
headers: {'Authorization': 'Bearer TOKEN'},
method: 'POST',
body: data
})
.then(response => response.json())
.then(json => console.log(json));
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post(
'https://apdf.io/api/pdf/ocr/read', [
'headers' => [
'Authorization' => 'Bearer TOKEN'
],
'form_params' => [
'file' => 'FILE_URL'
]
]);
$body = $response->getBody();
echo json_encode($body->getContents());
require 'rest-client'
response = RestClient.post(
'https://apdf.io/api/pdf/ocr/read',
{
'file' => 'FILE_URL'
},
{
Authorization: "Bearer TOKEN"
}
)
puts response.body
import requests
response = requests.post(
'https://apdf.io/api/pdf/ocr/read',
headers = {
'Authorization': 'Bearer TOKEN'
},
data = {
'file': 'FILE_URL'
}
)
print(response.text)
import (
"fmt"
"github.com/go-resty/resty/v2"
)
func main() {
client := resty.New()
data := map[string]string{
"file": "FILE_URL"
}
resp, _ := client.R().
SetFormData(data).
SetHeader("Authorization", "Bearer TOKEN").
Post("https://apdf.io/api/pdf/ocr/read")
fmt.Println(resp.String())
}
import okhttp3.*;
class Pdf {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
FormBody formBody = new FormBody.Builder()
.add("file", "FILE_URL")
.build();
Request request = new Request.Builder()
.url("https://apdf.io/api/pdf/ocr/read")
.addHeader("Authorization", "Bearer TOKEN")
.post(formBody)
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
}
}
From pixels
to plain text.
OCR recognizes the words on each scanned page first.
You get the text itself, not another file to download.
- send
- The PDF URL, plus an optional webhook_url
- job
- You get a job ID back right away
- ocr
- Each page is recognized as English text
- read
- The text is pulled out page by page
- result
- Page texts and character counts as JSON
Text from paper.
When documents arrive as scans, OCR gives your code the words without anyone retyping them.
Paper invoices
Read supplier invoices that arrive as scans, then parse the invoice number, the dates and the totals in your own code.
Incoming letters
Turn scanned mail into text you can classify, summarize or attach to the right customer record without typing.
Scans for LLMs
Give a model the text of scanned documents page by page, so it can answer questions about your paper records.
Archive indexing
Index the text of old scanned records in your search engine, while the original files stay right where they are.
Read scans from anywhere.
Get the words out of scans wherever they arrive.
One account and one monthly allowance behind every route.
One authenticated POST from any language. Copy-paste samples in cURL, Node.js, Python and more.
POST /api/pdf/ocr/read
Pick the action in any Zap and map files from earlier steps. No code and no servers to run.
Extract PDF Text With OCR
Add the Apdf node to any workflow, on n8n Cloud or self-hosted, and chain it with your automation.
Read PDF content with OCR
Let Claude, ChatGPT, Gemini or your own agent run it through the MCP server, on any paid plan.
read-pdf-content-with-ocr
1,000 OCR extractions
a month. Free.
Start on the free plan and move up only when your volume does — up to 1,000,000 operations a month on Business.
- One call is one operation, however many pages.
- Only calls that do the work are counted.
- Hard limits, so no surprise overage charges.
OCR text extraction, answered
OCR and text extraction tutorials
Turn Scanned Invoices into Structured Data with an Agent
OCR reads tabular scans in scrambled order — the wall every regex parser dies against, and exactly where the agent shines: it reassembles vendor, number, date and line items from the mess, cross-checks the sums against each stated total, and flags mismatches for human eyes instead of your books.
OCR Scanned PDFs by Asking Claude
That folder of scans — old leases, signed contracts, photographed paperwork — becomes searchable conversationally: Claude checks the text layer, runs the OCR job through the Apdf MCP tools, and answers questions from the recovered text with page-level receipts.
Extract Text from Scanned Invoices for Automated Data Entry
Automate data entry from scanned invoices and receipts using Node.js and the Apdf OCR Read API. Extract vendor names, invoice numbers, and totals from image-based PDFs and feed them directly into your accounting system.
Your code made the PDF.
Then it went dark.
Opened, read, signed or ignored — you never see any of it. Send the PDFs you generate as personal links, and every open, page read, comment and signature comes back to your software as a webhook. Need it signed? Same link. Same account, same API key, one more call.
API · Webhook · MCP