# Changelog of PDF to Markdown & Document Converter: DOCX, PPTX, XLSX, OCR (`flyingkiwi/document-to-markdown`) Actor

- **URL**: https://apify.com/flyingkiwi/document-to-markdown/changelog.md
- **Full Actor documentation**: https://apify.com/flyingkiwi/document-to-markdown.md

## Changelog

### 1.3.4 (30 Oct 2026)

- Back to limited permissions, so the Actor appears in Apify Store search for API and AI-agent (MCP) users and new users don't get a permissions prompt.
- Uploads: the store picker "Key-value store with your uploads" now sits right under "Upload files" and grants read-only access to that one store. If it isn't picked, the result names the exact store to pick. Links (public URLs, Google Drive, Dropbox, OneDrive, SharePoint files and folders) still need no extra step.
- No price or feature changes.

### 1.3.3 (30 Oct 2026)

- Store listing: clearer title, description and README opening. No changes to features, inputs or pricing.

### 1.3.2 (28 Oct 2026)

- Uploads just work: the Actor now runs with full permissions, so a file uploaded in the Console is read directly. The "Key-value store with uploaded files" picker is no longer needed for uploads; it moved to an optional advanced section for converting a whole store.

### 1.3 (28 Oct 2026)

- Folder links: paste a shared Google Drive, Dropbox or SharePoint / OneDrive for Business folder link to convert every supported file in it (subfolders included). New inputs `maxFiles` (default 500 per folder), `includeSubfolders` (default on) and `maxFolderDownloadMb` (Dropbox, default 500). Results carry `folderUrl` and `relativePath`; skipped files are listed in the status message and the `FOLDER_SUMMARY` record. OneDrive personal folders need a Microsoft sign-in and get a clear error. Pricing unchanged: one `document` event per converted file.
- Budget: the remaining maximum cost per run is checked before each file is downloaded, and the run stops cleanly with a summary of what was left.
- Uploads: the upload field and "Key-value store with uploaded files" picker are explained together, with uploads converted on their own when that store is picked (not the whole store), and the error names the exact store to pick.
- `saveMarkdownFiles` is now on by default, so the "Markdown file" column links to a readable `.md` file (e.g. `annual-report-1a2b3c4d.md`).

### 1.2 (28 Oct 2026)

- New inputs: a single `url` (simplest for AI agents), `files` (upload from your computer; read from your Apify key-value store), cloud share links (Google Drive, Google Docs/Sheets/Slides, Dropbox, OneDrive, SharePoint) converted to downloads automatically, and optional `requestHeaders` for private URLs (sent only to the original host).
- OCR for scanned PDF pages (opt-in `ocr`): pages with no text layer are read by a vision model through Apify's AI proxy, billed to the user's account. New pay-per-event event `ocr-page` ($0.008 per page OCR'd). Existing prices are unchanged.
- Quality report on every row (`quality`): text coverage, empty and scanned pages, OCR'd pages, tables found and plain-English warnings about possible content loss.
- PDF table detection is now on by default (`pdfTables: true`).
- Single-document runs also save the Markdown as the run's `OUTPUT` record. README has an MCP example.

### 1.1 (28 Oct 2026)

- PDF: headings are now detected from font size and weight (plus numbered bold section titles), so PDF chunks carry a `heading` and the title comes from the first page when the file's metadata has none. Running headers/footers and table-of-contents lines are ignored.
- Spreadsheets: no more `NaN` cells or `Unnamed: n` columns. Empty rows and columns are dropped, whole numbers lose the `.0`, dates print as ISO dates.
- HTML: navigation, sidebars, cookie banners, breadcrumbs and footers are stripped; when the page has a clear `<main>`/`<article>`, only that is kept.
- Placeholder metadata titles ("untitled", the file name, "Microsoft Word - ...") are ignored.

### 1.0 (27 Oct 2026)

- First version: PDF, DOCX, PPTX, XLSX/XLS, HTML, EPUB, CSV, IPYNB, text. Heading-aware chunking. Pay-per-event pricing with budget-aware stopping.
