file
file (multipart)
required
The document to convert, sent as multipart form-data. Up to 25 MB.
Upload a document and get clean, LLM-ready Markdown back.
Send a document as multipart form-data (field name `file`) and get clean Markdown back. Handles PDF, Word, PowerPoint, Excel, Outlook, EPUB, CSV, and XML, up to 25 MB per upload. Priced by output: $0.001 per started 1,000 words of returned Markdown, a minimum of $0.001 and a maximum of $0.10 — documents beyond 100,000 words are truncated and the response `truncated` flag is set to true. A document that yields no extractable text returns 422 and is never charged. This endpoint is stateless: nothing is stored. Use it when you already have the file bytes; use scrape for a document URL.
/api/v1/parse
$0.001 per 1,000 words
Use your polyscrape API key instantly, or inspect the sample response first.
curl -X POST https://polyscrape.com/api/v1/parse \
-H "Content-Type: application/json" \
-H "X-API-Key: $POLYSCRAPE_API_KEY" \
-d '{"file": "\u003cbinary document, multipart/form-data\u003e"}'
Sample response
{
"filename": "report.pdf",
"markdown": "# Q3 Report\n\nRevenue grew 12% quarter over quarter...",
"title": "Q3 Report",
"truncated": false,
"word_count": 842
}
Run a real /api/v1/parse request. No key? We show the real sample result so you can still inspect the shape.
Endpoint
POST /api/v1/parse
X-API-Key
$0.001 per 1,000 words
Leave empty to inspect the response shape without spending API balance.
Multipart file upload
This endpoint takes a document as multipart form-data (field file), so it isn't runnable from the browser playground. Use the copy-paste code examples below, or send it from your own client. The sample response shape is shown on the right.
Response
POST /api/v1/parse
{
"filename": "report.pdf",
"markdown": "# Q3 Report\n\nRevenue grew 12% quarter over quarter...",
"title": "Q3 Report",
"truncated": false,
"word_count": 842
}
The full contract for /api/v1/parse: what to send and what comes back.
file
file (multipart)
required
The document to convert, sent as multipart form-data. Up to 25 MB.
| Field | Type | Description |
|---|---|---|
filename |
string | The uploaded filename, echoed back. |
title |
string | null | First Markdown heading when available, else null. |
markdown |
string | Clean Markdown extracted from the document. |
word_count |
integer | Word count of the returned Markdown — the basis for the charge (1 credit per started 1,000 words). |
truncated |
boolean | True when the document exceeded 100,000 words and the returned Markdown was cut to that cap. |
Copy, paste, swap in your API key.
curl -X POST https://polyscrape.com/api/v1/parse \
-H "X-API-Key: " \
-F "[email protected]"
Common ways Parse ends up in production.
Converting a user-uploaded PDF or Office file to Markdown for an LLM.
Extracting document text inside an ingestion or RAG pipeline.
Normalizing mixed document formats to a single Markdown shape.
The same predictable contract on every endpoint.
200 |
Success. The lookup completed and was charged, even if the response is empty (a no-match search, or a thin page). |
400 |
The request was rejected before any fetch (for search: an unsupported country code). Never charged. |
401 |
Missing or unknown API key. Never charged. |
402 |
Not enough balance on the account. Never charged. The detail is a JSON object with error, message, credits_required, and api_credits. |
422 |
Invalid request body (wrong shape or types). The detail is a list of per-field errors. Never charged. |
429 |
Rate limit exceeded: max 10 requests per second per API key (5/second for parse, which is CPU-heavier). Never charged. |
502 |
Upstream fetch failed — the target page or search could not be fetched (site down, unreachable, timed out, or blocked). Never charged. |
Body |
Every error response is JSON shaped as {"detail": ...}. detail is a message string, except 402 (a JSON object) and 422 (a list of field errors). |
Explore the rest of the polyscrape API.
New accounts start with a free API balance. Paid balance never expires, so it can sit until your workflows need it.
$0.50 to start
$0.50 free balance to start. Get an API key in seconds with no credit card.
$10 one-time
Adds $10 to your API balance for steady production traffic and early automated jobs.
$100 one-time
$130 spendable balance, including a $30 bonus. The sweet spot for production workloads.
Start with a free key and $0.50 free balance, on REST, MCP, or both.