Fillable PDF Form Data Extractor: Batch Forms to CSV & Excel
Pricing
$0.75 / 1,000 pdf form processeds
Fillable PDF Form Data Extractor: Batch Forms to CSV & Excel
Merge hundreds of filled PDF forms (AcroForm and XFA) into one spreadsheet: one row per PDF, one column per field. Checkbox and radio values, stable column mapping, per-file status so one bad file never stops the batch, and a template-drift report that flags old form versions.
Pricing
$0.75 / 1,000 pdf form processeds
Rating
0.0
(0)
Developer
Ricky Lee
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Merge hundreds of filled PDF forms (AcroForm and XFA) into one spreadsheet: one row per PDF, one column per field. Checkbox and radio values, stable column mapping, per-file status so one bad file never stops the batch, and a template-drift report that flags old form versions.
Built for HR, school and nonprofit offices, intake teams and program officers who send out one fillable PDF and get back dozens to thousands of completed copies. You don't need an Acrobat Pro seat, and you don't have to write a script.
Features
- One row per PDF, one column per field. Field values are read from the PDF's form data, not from page text. No guessing and no OCR.
- One bad file never stops the batch. Each row has a
status(ok,no_form_fields_flattened,encrypted,corrupt,download_failed) and anerrormessage. Acrobat's "Merge Data Files into Spreadsheet" fails the whole export when one file is broken. This actor keeps going. - Template-drift report. Forms are grouped by their field set. Any PDF whose fields differ from the majority is flagged
is_template_outlier, and the report lists the missing, extra and likely renamed fields (usually a sign that someone filled in an old version of the form). - Checkboxes and radios done right. Checkboxes output their export value (
Yes/Off, or the custom on-value) or TRUE/FALSE. Radio groups output the selected option name, including/Opt-indexed groups. When a viewer saved the tick only in the widget appearance state and left the field value empty, the tick is still read. - XFA support. The actor reads the XFA
datasetspacket for Adobe LiveCycle and dynamic forms whose AcroForm fields are empty or missing. - Stable layout for every intake cycle. Map PDF field names to friendly column names, set the column order, and map old and new field names to one column. Schedule the actor against the same ZIP or key-value store prefix each cycle.
- Blank-but-ok warning. A form that has fields but no filled values gets a
warninginstead of passing silently as a blank row. - Spreadsheet-safe output. The XLSX stores values as text, so ZIP codes, IDs and phone numbers keep their leading zeros. Values starting with
=,+,-or@cannot run as formulas. The CSV is UTF-8 with a BOM so Excel opens accented and non-Latin text correctly. - Handles hierarchical names, duplicate names, password-protected files (open password or owner-only restrictions), and broken XFA packets.
Input
| Field | Description |
|---|---|
pdfUrls | Direct HTTPS links to your filled PDFs |
zipUrl | One ZIP of PDFs (subfolders are fine; macOS __MACOSX entries are skipped) |
keyValueStoreId / keyPrefix | An Apify key-value store you uploaded PDFs to, optionally filtered by key prefix |
fieldMapping | JSON object of PDF field name → column name |
keepUnmappedFields | Keep fields that are not in the mapping (default on) |
columnOrder | Columns to put first, in order |
checkboxMode | exportValue (default) or boolean |
includeXfa | Read XFA datasets (default on) |
escapeFormulasInCsv | Neutralise formula-like values in the CSV (default on) |
pdfPassword | Open password for protected PDFs (stored as a secret) |
Example:
{"zipUrl": "https://example.com/intake-october.zip","fieldMapping": {"applicant_name": "Name", "ApplicantName": "Name", "dob": "Date of birth"},"columnOrder": ["Name", "Date of birth"],"checkboxMode": "boolean"}
Output
Dataset: one row per PDF.
{"source_file": "form-017.pdf", "status": "ok", "error": null, "warning": null, "form_source": "acroform","field_count": 14, "filled_field_count": 12, "template_signature": "3f9c0a1b22de", "is_template_outlier": false,"Name": "Jane Doe", "Date of birth": "1990-04-02", "zip": "02134", "consent": true, "plan": "Gold"}
Key-value store:
merged.csvandmerged.xlsx: the merged table (frozen header row, text cells)template_report.csv: one row per template version, with file count, missing, extra and renamed fields, and file namesfield_inventory.json: every field with its type, how many files contain or fill it, and the checkbox, radio and choice options seen
Pricing (pay per event)
| Event | Price |
|---|---|
PDF form processed (status ok) | $0.00075 ($0.75 per 1,000 forms) |
| Flattened, encrypted, corrupt or undownloadable file | Free |
Example: a 500-form intake cycle costs $0.38.
Privacy and limits
- The actor processes only the files you supply. It does no web scraping and sends nothing to third parties.
- Results are written to your run's own dataset and key-value store, under your Apify account's retention settings. Delete them when you're done if the forms hold personal data.
- There is no OCR. Scanned or flattened forms are reported as
no_form_fields_flattenedand are not charged. - Limits: 50 MB per PDF and 500 MB per ZIP.