Official JavaScript/TypeScript SDK for the pdftables.io API — extract tables from PDFs programmatically.
import { PDFTablesClient } from "pdftables-io";
const client = new PDFTablesClient({ apiKey: "your-api-key" });
// 1. Upload a PDF
const upload = await client.upload("invoice.pdf");
// 2. Start table extraction
const job = await client.createJob(upload.upload_id);
// 3. Wait for completion
const result = await client.waitForJob(job.id);
// 4. Download results
const csvZip = await client.downloadJobCsv(result.id);
Pass your API key directly or set the PDFTABLES_API_KEY environment variable:
// Explicit
const client = new PDFTablesClient({ apiKey: "..." });
// Via environment variable (PDFTABLES_API_KEY)
const client = new PDFTablesClient();
| Method |
Description |
upload(file, filename?) |
Upload a PDF (path, Buffer, Uint8Array, or Blob) |
listUploads() |
List all uploads |
Extraction Jobs
| Method |
Description |
createJob(uploadId, { pages?, mode? }) |
Start extraction (auto, stream, lattice) |
getJob(jobId) |
Get job status |
waitForJob(jobId, { pollInterval?, timeout? }) |
Poll until complete |
listJobs() |
List all jobs |
listJobTables(jobId) |
List extracted tables |
| Method |
Description |
downloadTable(tableId, { format?, structure? }) |
Download single table (csv/json/xlsx) |
downloadTablesZip(tableIds, { format?, structure? }) |
Download multiple tables as ZIP |
downloadJobCsv(jobId) |
Download all job tables as CSV ZIP |
downloadJobXlsx(jobId) |
Download all job tables as XLSX ZIP |
downloadJobJson(jobId) |
Download all job tables as JSON ZIP |
| Method |
Description |
listStructures() |
List all structures |
createStructure({ name, slug, fields?, ... }) |
Create custom structure |
getStructure(structureId) |
Get structure details |
updateStructure(structureId, { name, slug, ... }) |
Update structure |
deleteStructure(structureId) |
Delete structure |
| Method |
Description |
createDatevExport(jobId, { tableId, fiscalYear? }) |
Trigger DATEV export |
downloadDatevExport(jobId, datevId, { format? }) |
Download DATEV file |
import { PDFTablesClient, AuthenticationError, RateLimitError } from "pdftables-io";
try {
const upload = await client.upload("invoice.pdf");
} catch (err) {
if (err instanceof AuthenticationError) {
console.error("Invalid API key");
} else if (err instanceof RateLimitError) {
console.error("Rate limit exceeded");
}
}
| Exception |
HTTP Status |
AuthenticationError |
401, 403 |
ValidationError |
400 |
PaymentRequiredError |
402 |
NotFoundError |
404 |
RateLimitError |
429 |
ConflictError |
409 |
ServerError |
5xx |
const { PDFTablesClient } = require("pdftables-io");
- Node.js ≥ 18 (native
fetch)
- Zero runtime dependencies
BSD 3-Clause — see LICENSE.