Turn vendor quotes, estimates, and RFQ responses into structured JSON. Quote number, RFQ reference, priced line items with SKU and discount, validity window, lead time, and payment and delivery terms come back typed - in the same shape from every supplier.
Send every supplier response through the same schema. What comes back lines up field for field, so ranking bids is a query rather than an afternoon of rekeying.
curl -X POST \
https://api-parse.conversiontools.io/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@quote.pdf" \
-F 'schema={
"quote_number": "string",
"rfq_reference": "string",
"vendor": "string",
"customer": "string",
"issue_date": "date",
"valid_until": "date",
"currency": "string",
"line_items": [{
"sku": "string",
"description": "string",
"quantity": "number",
"unit": "string",
"unit_price": "number",
"discount_percent": "number",
"amount": "number"
}],
"subtotal": "number",
"tax": "number",
"total": "number",
"lead_time_days": "number",
"payment_terms": "string",
"incoterms": "string"
}'{
"status": "completed",
"pages": 1,
"data": {
"quote_number": "QT-2026-0418",
"rfq_reference": "RFQ-8842",
"vendor": "Brightforge Industrial",
"customer": "Larkfield Manufacturing",
"issue_date": "2026-03-04",
"valid_until": "2026-04-03",
"currency": "EUR",
"line_items": [
{
"sku": "BRG-6204-2RS",
"description": "Deep groove ball bearing 20x47x14",
"quantity": 480,
"unit": "pcs",
"unit_price": 3.85,
"discount_percent": 5,
"amount": 1755.6
},
{
"sku": "SHF-25-1000",
"description": "Precision shaft 25 mm x 1000 mm",
"quantity": 24,
"unit": "pcs",
"unit_price": 62.4,
"discount_percent": 0,
"amount": 1497.6
}
],
"subtotal": 3253.2,
"tax": 618.11,
"total": 3871.31,
"lead_time_days": 21,
"payment_terms": "Net 30",
"incoterms": "DAP Larkfield"
}
}You cannot compare four quotes for the same RFQ until all four are in the same shape.
Four suppliers answer one RFQ with four different layouts. Push them through one schema and the comparison turns into a sort on unit price, lead time, and total instead of a hand-built bid sheet.
valid_until and lead_time_days come back as usable values, so a quote that lapses before the PO is raised surfaces as a filter rather than as bad news from the supplier.
Payment terms and Incoterms usually sit under the totals in six point type. They are captured as their own fields, so the commercial conditions travel with the pricing instead of staying stuck in the PDF.
That is the main reason to use it. Save one schema, apply it to every response to an RFQ, and each quote comes back in an identical shape, so ranking them on unit price, total, or lead time is a straight comparison instead of a manual read.
Yes. Put discount_percent and amount on the line item and every line comes back with the discount as quoted alongside the extended amount, which lets you check a supplier arithmetic against the printed subtotal before you award.
The field comes back null. Missing values are left empty rather than inferred, which matters when a buyer is deciding whether a supplier actually answered the RFQ they were sent.
Yes. OCR is applied automatically, so a quote that arrived as a scan or a phone photo is read like a native PDF. Re-sending an identical file is served from cache and does not consume pages a second time.
Uploaded documents are deleted automatically within 24 hours. Extracted data is encrypted in transit and at rest and is never used to train models.
The same schema-driven API works across every document type. Define a schema once, extract from thousands of files.
Extract structured JSON from any document with custom schemas.
Parse any PDF into structured JSON, scanned or digital.
Vendor, line items, totals, tax, and dates from invoices.
Store, items, totals, and payment method from receipts.
PO number, vendor, buyer, and SKU-level line items.
Transactions, running balances, and dates for reconciliation.
Box-level data from W-2, 1099, and other tax forms.
Parties, dates, governing law, and key clauses.
Carrier, parties, ports, containers, and cargo.
Credit amounts matched back to the original invoice.
Payments split across invoices for cash application.
Meter readings, charges, and totals from any provider.
Line items and periods from balance sheets and reports.
Earnings, deductions, taxes, and year-to-date totals.
Experience, education, and skills from any CV layout.
Fields and MRZ from passports and ID cards.
Rent, term, deposits, and renewal deadlines.
Claim and policy numbers, dates, and claimed amounts.
Packages and SKU-level lines for receiving.
Ordered versus delivered quantities and sign-off.
Free tier covers your first 100 pages a month. No credit card to start.