Convert PDF to CSV API
Get the text of any public PDF URL as CSV - one row per page, with the page number and that page's text. Ready to import into spreadsheets, databases, and data pipelines. This is page text, not table extraction.
When is CSV the right format?
Plenty of tools only speak CSV: spreadsheet imports, bulk database loaders, ETL jobs, and no-code automations that want rows. If you need a document's text in one of those, a JSON document is the wrong shape and plain text loses the page boundaries.
PDFPipe's CSV output gives you one row per page with two columns: page_number and text_content. Cells are quoted and escaped per RFC 4180, so multi-line page text survives the round trip into Excel, Google Sheets, pandas, or a COPY into Postgres.
To be clear about what this is not: PDFPipe does not detect tables inside a PDF. Tables come out as the text of the page they sit on, in the order the PDF stores it. If you need a table's cells as columns, pass the page text to your own parser or an LLM. It works with any public PDF URL, including auto-download triggers and redirect chains.
How it works
One POST request. We handle the rest.
1. Send a request
curl -X POST https://api.pdfpipe.dev/v1/convert \
-H "Authorization: Bearer pk_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/financial-report.pdf",
"format": "csv",
"returnMethod": "inline"
}'2. Get the response
{
"requestId": "req_a1b2c3...",
"status": "complete",
"format": "csv",
"pagesProcessed": 8,
"creditsUsed": 1,
"contentType": "text/csv",
"content": "page_number,text_content\n1,\"QUARTERLY FINANCIAL REPORT\nQ4 2025...\"\n2,\"Executive Summary...\"\n..."
}One row per page, properly quoted
Two columns, a header row, and one data row per page. Import directly into Excel, Google Sheets, pandas, or any database that accepts CSV.
- Header row: page_number,text_content
- One row per page, in page order
- RFC 4180 quoting: commas, quotes, and newlines inside cells are escaped
- Optional pages parameter to export a range (max 100 pages)
- Same output whether the PDF was inline or an attachment
page_number,text_content
1,"QUARTERLY FINANCIAL REPORT
Q4 2025
Prepared by: Acme Corp
Date: January 15, 2026"
2,"Executive Summary
Revenue for Q4 2025 reached $4.2M, a 23% increase
over the previous quarter."
3,"Key Metrics
Revenue $4,200,000
Operating Margin 18.5%"import { parse } from "csv-parse/sync";
const response = await fetch(
"https://api.pdfpipe.dev/v1/convert",
{
method: "POST",
headers: {
"Authorization": "Bearer pk_...",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://example.com/financial-report.pdf",
format: "csv",
returnMethod: "inline",
}),
}
);
const data = await response.json();
// Rows are { page_number, text_content }. Cells contain newlines,
// so use a real CSV parser rather than splitting on "\n".
const rows = parse(data.content, { columns: true });
for (const row of rows) {
console.log(row.page_number, row.text_content.length, "chars");
}Works with any language
PDFPipe is a standard REST API. If your language can make HTTP requests, it can turn PDFs into CSV. No SDK required - there is an official TypeScript/Node.js SDK (pdfpipe-sdk) and an MCP server if you want them.
Start converting PDFs to CSV today
Free tier includes 300 requests per month. No credit card required.