Contract data extraction API

Contracts hide the data legal and finance teams need — parties, effective and renewal dates, value, term length, governing law, and specific clauses — inside dozens of pages of prose. The AIDataParser contract data extraction API reads a contract PDF and returns those points as structured JSON that matches a schema you define. Instead of paralegals combing documents by hand, you get key terms as named, typed fields in one API call.

Schema-first extraction is what makes this reliable for legal-tech: you specify exactly which provisions to pull — effective_date, renewal_date, contract_value, auto_renewal, termination_notice_days — and each is validated on return. Parties come back as a structured array with names and roles, so a contract-lifecycle-management (CLM) system can populate its metadata without manual data entry, and obligations can be tracked against real dates.

For CLM platforms, procurement teams, and diligence agents reviewing document sets, this is the ingestion layer that turns a folder of PDFs into a queryable dataset. POST the contract, get structured terms back for one credit, and lean on review_needed to route high-stakes or ambiguous clauses to a lawyer. Documents aren't retained after the request, which matters for confidential agreements.

Fields you can extract from a contract

partiesarray

Names and roles of signatories.

effective_datestring

When the contract starts.

renewal_datestring

Next renewal date.

termstring

Contract length/term.

contract_valuenumber

Total value if stated.

governing_lawstring

Governing jurisdiction.

Example request

POST the contract by URL, upload, or base64, with a JSON Schema describing the output you want.

curl -X POST https://aidataparser.com/v1/parse/document \
  -H "Authorization: Bearer adp_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/contract.pdf",
    "schema": {
      "type": "object",
      "properties": {
        "parties": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "role": {
                "type": "string"
              }
            }
          }
        },
        "effective_date": {
          "type": "string"
        },
        "renewal_date": {
          "type": "string"
        },
        "contract_value": {
          "type": "number"
        },
        "governing_law": {
          "type": "string"
        }
      }
    }
  }'

Example response

The data field is guaranteed to match your schema.

{
  "object": "parse.document",
  "data": {
    "parties": [
      {
        "name": "Acme Corp",
        "role": "Provider"
      },
      {
        "name": "Globex Inc",
        "role": "Customer"
      }
    ],
    "effective_date": "2026-07-01",
    "renewal_date": "2027-07-01",
    "contract_value": 48000,
    "governing_law": "Delaware, USA"
  },
  "confidence": "high",
  "review_needed": false,
  "credits_charged": 1,
  "credits_remaining": 49
}

FAQ

Can it pull specific clauses like auto-renewal or termination notice?

Yes. Add fields such as auto_renewal or termination_notice_days to your schema and the API extracts those provisions as typed values you can track against dates.

How are the contracting parties returned?

As a structured array of objects with name and role, so a CLM system can distinguish provider from customer and populate metadata without manual entry.

Are confidential contracts stored?

No. Contracts are parsed in-request and discarded, and ambiguous or high-stakes clauses set review_needed so a lawyer can verify them. Failed extractions aren't charged.

More document types