*** September 2026 Major Release ***Read and watch
Document type

Extracting data from purchase contracts

Most home sales are written on a state REALTOR association's purchase contract, filled in and signed by buyer and seller with addenda attached. Escrow officers and mortgage lenders open a file on every one, receiving the executed contract as an e-signed PDF from the agent or transaction coordinator.

Escrow needs the parties, the property and parcel number, the purchase price, the earnest money and the closing date. The title production system opens the order from those, and the lender sets the loan amount from the price.

Page 1 of a sample Purchase and Sale Agreement, with extracted values outlined
56,915Markdown characters
395parse blocks
47fields extracted
The problem

What makes purchase and sale agreements hard

A different form in every state

Each state REALTOR association publishes its own purchase contract, with its own section numbering, so the price sits on a different line in each.

Typed values on a printed form

Filled-in values sit in numbered blanks threaded through printed form text, and a date is often split across separate month, day and year blanks.

Later documents change the terms

Counteroffers and addenda can change the price or the closing date the contract sets, so the final terms may sit in a later document.

How it works

Parse, extract, verify

1

Parse

Parse turns the document into reading-order Markdown and a hierarchy of blocks (text, tables, figures), and grounds each block to its exact location on the page.

2

Extract

You define the fields in a JSON schema, and Extract returns their values in a consistent, structured format, each linked back to where it appears in the Markdown.

3

Verify

Each value links back to where it appears, down to the character range in the Markdown, and the page and bounding box in the source document, so every result can be verified.

Worked example

One purchase and sale agreement, end to end

About this document: A fully executed Arizona Association of REALTORS residential resale purchase contract, filed publicly on SEC EDGAR as a material contract of a real estate offering. An LLC buys a single-family home from another LLC, all cash. Ten portrait pages with e-signatures and initials on each. Page 1 is featured. Both parties are companies.

Processing objective: The objective is to read the deal from page 1: the parcel being sold and how its price is paid. Earnest money plus the cash due at closing makes up the full price, and each value grounds to its numbered line.

Demonstration fields: Full purchase price, Earnest money, Cash due at closing, Assessor's parcel number, Legal description

The document

4 of 10 pages
  • Page 1 of the sample Purchase and Sale AgreementPage 1shown below
  • Page 3 of the sample Purchase and Sale AgreementPage 3
  • Page 8 of the sample Purchase and Sale AgreementPage 8
  • Page 10 of the sample Purchase and Sale AgreementPage 10

Where each value came from

Page 1 of the sample Purchase and Sale Agreement, with every featured field outlined
Full purchase priceprice_and_payment.full_purchase_price
845,000
The region of the sample Purchase and Sale Agreement containing Full purchase price, with the extracted value outlined
extraction_metadata["price_and_payment.full_purchase_price"]
{
  "value": 845000,
  "page": 1,
  "range": {
    "end": 1366,
    "start": 1301
  },
  "box": {
    "xmin": 0.03153,
    "ymin": 0.41395,
    "xmax": 0.56284,
    "ymax": 0.43011
  }
}
Earnest moneyprice_and_payment.earnest_money
10,000
The region of the sample Purchase and Sale Agreement containing Earnest money, with the extracted value outlined
extraction_metadata["price_and_payment.earnest_money"]
{
  "value": 10000,
  "page": 1,
  "range": {
    "end": 1434,
    "start": 1367
  },
  "box": {
    "xmin": 0.05786,
    "ymin": 0.43134,
    "xmax": 0.96408,
    "ymax": 0.44833
  }
}
Cash due at closingprice_and_payment.cash_at_closing
835,000
The region of the sample Purchase and Sale Agreement containing Cash due at closing, with the extracted value outlined
extraction_metadata["price_and_payment.cash_at_closing"]
{
  "value": 835000,
  "page": 1,
  "range": {
    "end": 1473,
    "start": 1435
  },
  "box": {
    "xmin": 0.0581,
    "ymin": 0.44881,
    "xmax": 0.96421,
    "ymax": 0.46553
  }
}
Assessor's parcel numberpremises.assessor_parcel_number
114-18-0490
The region of the sample Purchase and Sale Agreement containing Assessor's parcel number, with the extracted value outlined
extraction_metadata["premises.assessor_parcel_number"]
{
  "value": "114-18-0490",
  "page": 1,
  "range": {
    "end": 1195,
    "start": 1121
  },
  "box": {
    "xmin": 0.03288,
    "ymin": 0.32744,
    "xmax": 0.96268,
    "ymax": 0.34325
  }
}
Legal descriptionpremises.legal_description
Rockcliff Lot 37
The region of the sample Purchase and Sale Agreement containing Legal description, with the extracted value outlined
extraction_metadata["premises.legal_description"]
{
  "value": "Rockcliff Lot 37",
  "page": 1,
  "range": {
    "end": 1292,
    "start": 1253
  },
  "box": {
    "xmin": 0.06553,
    "ymin": 0.36179,
    "xmax": 0.96446,
    "ymax": 0.37822
  }
}

How to try it yourself

Everything on this page is reproducible. The sample, its schema, and the Parse and Extract API outputs are published. You can repeat the same two calls from whichever surface you already build on.

  • Claude Skilldescribe the job; the agent writes it
  • CLIno code at all
  • MCPexpose ADE docs as an agent tool
  • REST APIany language
  • Pythonlandingai-ade
  • TypeScriptlandingai-ade
Why LandingAI?

Documents into data

Accurate

The best accuracy on the difficult documents other tools get wrong, such as messy scans, complicated tables, checkboxes and handwriting.

Auditable

Every answer cites its sources. Values come back with an audit trail (page, bounding box, character range) so a human can review them.

Agentic

Applies multi-step reasoning, and plans before it acts. Handles documents it has never seen before and adapts to variations.

API-first

Composable APIs that drop into any tech stack and can be called from anywhere. Easy to build on and embed in your pipelines and products.

Affordable

Cost-competitive rates with complete price transparency. Spend controls before you run, and every job reports its exact cost.

Enterprise-grade

Built for production and scale from day one. Fully observable and monitored, running securely in our cloud or yours.

Built for high-volume, high-throughput production

  • Zero data retention
  • Priority rate limits
  • Enhanced support
  • VPC and on-prem deployment

Available on Team and Enterprise plans.

Compare plans
Capabilities

Purchase and Sale Agreement processing highlights

Purchase price and earnest money
Cash due at closing
Parcel number and legal description
Buyer and seller parties
Close of escrow date
Financing and all-cash terms
Inspection and due diligence periods
Escrow company details
Image-only filled-in values
Dates split across blanks
No per-state templates
Bounding box for every value
FAQs

Questions, answered

Yes. Parsing works from the rendered page, so values drawn onto a form with no text layer read the same way as the printed text around them. Each grounds to the line where it was filled in.

Yes. Describe the purchase price, the earnest money and the cash due at closing as fields in your schema. Each comes back as a number from its own numbered line, so the parts can be checked against the whole.

Yes. Describe the parcel number and the legal description alongside the address. Each comes back as its own value, so a title search can run on the parcel identifier the contract names.

No. A schema names the fields you want and describes them in plain language. Extraction reads the parsed contract for meaning, so one schema covers each state association's own form and numbering.

Every extracted value carries the character range it was quoted from in the parsed Markdown. The Ground API maps that range to a page and a bounding box, so a reviewer sees each value on the line that printed it.

Start extracting purchase and sale agreement data

Reliable, structured outputs with full traceability in minutes