# Extract contract terms to JSON with page anchors

**Use case:** 

Runs the bundled sample services agreement in extract mode against a four field schema: effective date, annual fee, notice period and governing law. Every value comes back typed, with the page and the quoted sentence it was taken from, so you can check the answer instead of trusting it. Scans are read with OCR. About $0.035 per run.

## Input

```json
{
  "mode": "extract",
  "sample": "english-services-agreement",
  "documentUrl": "https://example.com/contract.pdf",
  "keyValueStoreRecordKey": "uploaded-contract.pdf",
  "fileName": "contract.pdf",
  "schema": {
    "type": "object",
    "properties": {
      "effective_date": {
        "type": "string",
        "format": "date",
        "description": "the date the agreement takes effect"
      },
      "annual_fee": {
        "type": "number",
        "description": "the fixed annual fee payable by the client"
      },
      "notice_period_days": {
        "type": "integer",
        "description": "days of written notice required for non renewal",
        "x-keywords": [
          "notice of non-renewal"
        ]
      },
      "governing_law": {
        "type": "string",
        "description": "the law governing the agreement",
        "x-keywords": [
          "governed by"
        ]
      }
    },
    "required": [
      "effective_date"
    ]
  },
  "ocr": true,
  "ocrLanguages": [
    "eng",
    "ara"
  ]
}
```

## Output

```json
{
  "fileName": {
    "label": "File name",
    "format": "string"
  },
  "fields": {
    "label": "Extracted fields",
    "format": "object"
  },
  "fieldsFound": {
    "label": "Fields found",
    "format": "number"
  },
  "fieldsRequested": {
    "label": "Fields requested",
    "format": "number"
  },
  "complete": {
    "label": "Complete",
    "format": "boolean"
  },
  "missingRequired": {
    "label": "Missing required",
    "format": "array"
  },
  "fieldReports": {
    "label": "Field reports",
    "format": "array"
  },
  "mode": {
    "label": "Mode",
    "format": "string"
  }
}
```

## About this Actor

This example demonstrates how to use [Document to JSON Extractor (Arabic and English)](https://apify.com/omargnagy/document-to-json-extractor.md) with a specific input configuration. Visit the [Actor detail page](https://apify.com/omargnagy/document-to-json-extractor.md) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
This Task's input is already configured above — use it as-is rather than inventing a new one.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/omargnagy/document-to-json-extractor.md

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).
