PDF to Excel – PDF Table Extractor & Bank Statement Converter avatar

PDF to Excel – PDF Table Extractor & Bank Statement Converter

Pricing

from $3.00 / 1,000 page with tables

Go to Apify Store
PDF to Excel – PDF Table Extractor & Bank Statement Converter

PDF to Excel – PDF Table Extractor & Bank Statement Converter

Convert PDF tables to Excel, CSV and JSON: bank statements, invoices, price lists and reports. Upload PDFs or paste links; get every table as rows plus one Excel file per PDF. Finds ruled and unruled tables. $3 per 1,000 pages with tables + $0.10 per 1,000 pages read.

Pricing

from $3.00 / 1,000 page with tables

Rating

0.0

(0)

Developer

Rowfeed

Rowfeed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Full permissions

Share

Convert the tables in PDFs to Excel, CSV and JSON: bank statements, invoices, price lists and report tables. Upload PDFs or paste links; every table comes back as clean rows, plus one Excel file per PDF with each table on its own sheet. Works best on digital PDFs with clear tables: statements, invoices, price lists and ruled report tables. Built for bookkeepers, analysts, finance teams, automation workflows (n8n, Make, Zapier) and AI agents that need PDF tables as data. No OCR service, no API key, no copy-paste.

What you get

  • One row per table row with data (column name → cell), the same values as an ordered cells list, the columns, and where it came from: file_name, page, table and row.
  • An Excel file per PDF (excel_url on every row): one sheet per table, named p3_t1 for page 3, table 1. Clear amounts like 1,250.00, -84.20, (12.00) and European 1.250,00 become real numbers, so the sheet can sum them; account and card numbers, codes with leading zeros, dates and percentages stay text exactly as printed.
  • Ruled and unruled tables. Tables drawn with lines are read cell by cell. Pages without lines (most bank statements, price lists) are read by how the words line up in columns. Running text, two-column page layouts and chart gridlines are not reported as tables.
  • Every transaction checked against the balance. On statements with a balance column, each row gets balance_check: ok when the previous balance plus its deposit or minus its withdrawal gives the balance printed on that row, mismatch when it does not, so a misread row can never slip through unnoticed. Statements listed newest first are handled too. The run's log and STATS say how many rows were checked and whether any did not add up.
  • CSV and JSON come from the dataset export as usual.

Example output

A row from the pre-filled example (a sample bank statement):

{
"source": "https://raw.githubusercontent.com/kristerkb-pixel/rowfeed-seo-mcp/main/examples/bank-statement-example.pdf",
"file_name": "bank-statement-example.pdf",
"page": 1,
"page_count": 2,
"table": 1,
"row": 2,
"method": "text",
"columns": ["Date", "Description", "Amount", "Balance"],
"cells": ["03.10.2026", "Grocery store Oslo", "-84.20", "1,165.80"],
"data": { "Date": "03.10.2026", "Description": "Grocery store Oslo", "Amount": "-84.20", "Balance": "1,165.80" },
"excel_url": "https://api.apify.com/v2/key-value-stores/.../records/tables-1-bank-statement-example.xlsx",
"balance_check": "ok"
}

Input

FieldWhat it does
pdfsUpload PDF files or paste links to them. Up to 200 per run, 50 MB each.
modeauto (default): ruled tables, and aligned-text tables on pages without ruled ones. lines or text force one method.
firstRowIsHeaderUse each table's first row as column names (default). Off: col_1, col_2, ...
firstPage, lastPageRead only these pages (0 = from the start / to the end).
maxPagesPerPdfRead at most this many pages per PDF. Default 100.

Pricing

Pay per event, no subscription:

  • $0.003 per page with tables ($3 per 1,000 pages), however many tables or rows the page has.
  • $0.0001 per page read ($0.10 per 1,000 pages), with or without tables.
  • $0.002 per run start.
  • Links that fail, files that are not PDFs and password-protected PDFs are free. A PDF that breaks partway through has paid only for the pages read before it broke.

Examples: a 3-page bank statement with a table on every page costs $0.0113. A 100-page report with tables on 10 pages costs $0.042. Cap the cost of a run with the maximum charge setting; the run stops before a page it could not pay for.

Good to know

  • Tested on statements laid out like those of banks in Norway, the Netherlands, Hong Kong (bilingual Chinese/English), India, Singapore and the US, in English, Norwegian, Dutch, French and Chinese column names, with US (1,234.56), European (1.234,56) and French (1 234,56) amounts. The balance check reads column names in English, Norwegian, German, French, Dutch, Spanish, Italian, Chinese, Japanese and Korean. Layouts vary by bank: run one statement first and look at balance_check. Where it says mismatch, look at that row in the PDF.
  • No OCR. The PDF needs a text layer (you can select the text in a PDF viewer). Scanned or photographed pages have none, so no tables are found; they only cost the $0.0001 page read.
  • Table detection is automatic and PDFs vary a lot: check the first file of a new kind. Complex report layouts (tables with only an outer frame, numbers spread with spaces) can come back split into several tables or with merged columns. Headers spread over several lines may become two rows, and a table broken by a heading or a page break comes back as two tables.
  • Why it asks for full permissions: Apify only lets an Actor read a file you upload if it has full permissions. This Actor reads only the PDFs you give it and writes only to the run's own storage. You approve it once in Apify Console, on the first run. Runs started through the API or by an AI agent also need that one approval first.
  • Links must be public.
  • Your PDFs are read inside your own Apify run and not stored anywhere else.

More tools from Rowfeed