Extract fields from business PDFs
extract_business_pdf_fieldsExtract structured invoice, purchase order, and contract fields from PDFs, including line items and OCR for scanned pages, with rule-based extraction that leaves unlabeled values null.
Instructions
Read invoices, purchase orders, and contracts from PDF addresses and return fixed fields: numbers, dates, parties, totals, line items, and a totals check, or contract parties, dates, term, renewal, notice days, governing law, and clauses found. Scans go through OCR. Rule based with no AI, so a value with no known label stays null. Pay per event on Apify: 0.01 USD per document, 0.015 USD per scanned page.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pdf_file | No | Optional. One PDF file from your computer, stored in your Apify account. | |
| pdf_urls | No | Web addresses of PDF files, up to 1,000. Each file up to 40 MB. The address must answer without a login. In Clay, put the column in a one item list. | |
| max_pages | No | Pages to read per file, up to 500. Default 50. | |
| date_order | No | How to read a date such as 03/04/2025 when both readings are valid. mdy (default) reads March 4, dmy reads 3 April. Unambiguous dates ignore this. | |
| read_scans | No | yes (default): a page with no text layer goes through OCR, charged per page. no: those pages are skipped and the row says so. | |
| include_text | No | yes: add the document text to the row, up to 200,000 characters. Default no. | |
| ocr_language | No | Language of scanned pages: eng (default), deu, fra, spa, nld, ita, or por. | |
| document_type | No | auto (default) works it out per file. Set invoice, purchase_order, or contract to read every file as that type. | |
| max_documents | No | Files to read in this run, up to 1,000. Default 100. | |
| max_ocr_pages | No | Scanned pages to read per file, up to 100. Default 10. This caps the OCR charge per file. | |
| line_item_rows | No | yes (default): each line item is also its own free row, which suits CSV and Clay. no: line items stay in the line_items field only. | |
| max_charge_usd | No | Optional. The run stops before a charge that would pass this amount. Summary rows are always returned. |