# NYC ACRIS Property Records Scraper — Deeds, Mortgages & Owners (`memo23/nyc-acris-property-records`) Actor

Pull NYC property records (deeds, mortgages, parties, addresses) from ACRIS by borough, document type and date. Fresh buyer/seller/owner leads

- **URL**: https://apify.com/memo23/nyc-acris-property-records.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Real estate, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 property records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

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).


# README

## NYC ACRIS Property Records Scraper — Deeds, Mortgages & Owners

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/nyc-acris-logo.png" alt="NYC ACRIS Property Records Scraper" width="150">
</p>

**Pull recorded NYC property documents — deeds, mortgages, assignments, satisfactions and more — straight from the city's ACRIS system, with the parties on each document (buyers/sellers, borrowers/lenders, _with mailing addresses_), the property (street address + Borough-Block-Lot), and the amount.** Filter by borough, document type, and recording date. Clean JSON or CSV out — no CAPTCHAs, no browser, no legacy ACRIS web app.

Perfect for fresh real-estate leads: new buyers and sellers, recent mortgage activity, cash-vs-financed purchases, and absentee/out-of-state owners.

---

### Why Use This Scraper?

- **Official records, without the clunky ACRIS website.** Same NYC Department of Finance data, pulled cleanly from the city's public NYC Open Data (Socrata) API — fast, reliable, complete across all 5 boroughs. No CAPTCHAs, no broken sessions, no page-by-page clicking.
- **The full transaction, reconstructed.** ACRIS splits every document across three separate datasets. This actor joins the document, its party list, and the property it touches back into **one row** — the work you'd otherwise do by hand.
- **Lead-ready output.** Party names + mailing addresses, buyer/seller roles labeled in plain English, property address + BBL, deal amount, and a permalink back to the official ACRIS record.
- **Accurate borough, not the ACRIS quirk.** The raw ACRIS `recorded_borough` field is unreliable (most recent e-recorded documents default to "Manhattan"). This actor reports the **property's** borough from the authoritative Legals dataset — so a Brooklyn filter returns real Brooklyn properties.
- **Pay only for what you pull.** Billed per record returned, capped by your **Maximum records** setting. Pure HTTP means low, predictable runs.

---

### Overview

The NYC ACRIS (Automated City Register Information System) is New York City's public register of recorded real-property documents — every deed, mortgage, assignment, satisfaction, lease and agreement filed with the Department of Finance since 1966.

This actor reads ACRIS through **NYC Open Data**, the city's official Socrata API, and returns **one row per recorded document**. Each row nests:

- the **document** — type, document date, recording date, amount, CRFN;
- its **parties** — the people/companies on the document, with roles (buyer/seller, borrower/lender), names, and mailing addresses;
- its **property/properties** — street address, unit, and Borough-Block-Lot (BBL).

It is a **recent-activity and lead-generation tool**, not a same-second live feed of just-filed documents — NYC Open Data refreshes the ACRIS datasets on the Department of Finance's schedule, which is ideal for "everything recorded in my neighborhoods in the last 30/60/90 days" lead lists.

---

### Supported Inputs

You describe the slice of ACRIS you want; the actor pages through it. There are no URLs to paste.

| Input | Example | What it does |
|---|---|---|
| **Boroughs** | `["Brooklyn", "Manhattan"]` | Filter to one or more of the 5 boroughs (on the property's borough). Empty = all five. |
| **Document types** | `["DEED", "MORTGAGE"]` | Filter by document type — plain names or raw ACRIS codes. Empty = all types. |
| **Property types** | `["CR", "OF", "RB", "AP"]` | Filter by building type — e.g. **commercial only** (office, retail, industrial, commercial condo/coop, apartment buildings). Empty = all types. |
| **Recorded in the last N days** | `30` | Quick recent-activity pull. |
| **Date from / Date to** | `2026-05-01` → `2026-06-30` | Explicit recorded-date range. Overrides "last N days". |
| **Maximum records** | `2000` | Caps how many documents to return (you're billed per record). |

**Not supported:** documents older than the NYC Open Data ACRIS coverage window, non-NYC counties (ACRIS is a New York **City** system — Nassau, Westchester, etc. are separate systems), and property valuations/tax assessments (that's a different dataset).

---

### Use Cases

| Audience | What they pull |
|---|---|
| **Real-estate agents & brokers** | Every deed recorded in their farm area in the last 30/60/90 days — new owners to prospect, with mailing addresses. |
| **Mortgage & refinance lead-gen** | New mortgages and assignments by area — fresh borrowers, lender names, loan amounts. |
| **Investors & wholesalers** | Cash-vs-financed signals (deed with no matching mortgage), absentee owners, and per-BBL transaction history. |
| **Title & legal researchers** | Chain-of-title work: pull every document tied to a Borough-Block-Lot. |
| **Data & market analysts** | Recording volumes, price trends, and buyer/seller flows across boroughs, straight to JSON/CSV. |
| **Skip-tracers & data enrichers** | Owner names + mailing addresses as a seed for phone/email enrichment. |

---

### How It Works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/nyc-acris-how-it-works.png" alt="How the NYC ACRIS scraper works" width="820">
</p>

1. **Filter.** You pick borough(s), document type(s), and a recorded-date window (a range, or the last N days), plus a max-records cap.
2. **Fetch & join.** The actor queries three official ACRIS datasets on NYC Open Data — **Master** (the document), **Parties** (the names), and **Legals** (the property) — and joins them on `document_id`. Party and property lookups are batched so large pulls stay well under API limits.
3. **Emit.** Each document becomes one row, with `parties[]` and `properties[]` nested, roles auto-labeled, the deal amount parsed, and a permalink back to the official ACRIS record. Borough is taken from the **property** (Legals), never the unreliable Master `recorded_borough`.

> Pure HTTP against the city's public API. No browser, no third-party CAPTCHA-bypass service.

---

### Input Configuration

| Field | Type | Required | Notes |
|---|---|---|---|
| `boroughs` | array | No | Any of `Manhattan`, `Bronx`, `Brooklyn`, `Queens`, `Staten Island`. Empty = all five. |
| `documentTypes` | array | No | Plain names (`DEED`, `MORTGAGE`, `ASSIGNMENT`, `SATISFACTION`, `AGREEMENT`) or raw ACRIS codes (`DEED`, `MTGE`, `ASST`, `SAT`, `AGMT`). Empty = all. |
| `propertyTypes` | array | No | ACRIS property-type codes to keep (filtered on the property). **Commercial-only** = `CR, OF, RB, IB, CC, CP, AP, EA, UT, VN` (+ mixed-use `F1, F4, FS, F5`). Empty = all types. |
| `recordedSinceDays` | integer | No | Return documents recorded within this many days. Default `30`. Ignored if `dateFrom` is set. |
| `dateFrom` | string | No | `YYYY-MM-DD`. Only documents recorded on/after this date. Overrides `recordedSinceDays`. |
| `dateTo` | string | No | `YYYY-MM-DD`. Only documents recorded on/before this date. |
| `maxItems` | integer | No | Max documents to return. Default `1000`. Bounds your spend. |
| `includeParties` | boolean | No | Attach the party list (names + mailing addresses). Default `true`. |
| `includeProperty` | boolean | No | Attach property details (address + BBL). Default `true`. |
| `appToken` | string | No | Optional free NYC Open Data app token for higher rate limits on large pulls. |

#### Example input

```json
{
  "boroughs": ["Brooklyn", "Manhattan"],
  "documentTypes": ["DEED", "MORTGAGE"],
  "recordedSinceDays": 30,
  "maxItems": 2000,
  "includeParties": true,
  "includeProperty": true
}
````

***

### Output Overview

The actor emits **one row per recorded document**. Each row is a flat set of document fields plus two nested arrays — `parties[]` (who) and `properties[]` (what). Roles are auto-labeled for the common document types (deeds → Buyer/Seller, mortgages → Borrower/Lender); the raw ACRIS `partyType` code is always included so nothing is lost.

Two borough fields are returned on purpose:

- **`borough`** — the authoritative borough of the property (from the Legals dataset). Use this one.
- **`recordedBorough`** — the raw Master `recorded_borough` value (often defaults to "Manhattan" for e-recorded documents). Included for transparency only.

***

### Output Samples

#### One recorded document (`DEED`)

```json
{
  "documentId": "2026052800574001",
  "crfn": "2026000181186",
  "borough": "Brooklyn",
  "recordedBorough": "Manhattan",
  "docType": "DEED",
  "documentDate": "2026-05-18T00:00:00.000",
  "recordedDate": "2026-06-30T00:00:00.000",
  "amount": 1250000,
  "parties": [
    { "partyType": "1", "role": "Seller (Grantor)", "name": "PRWG REALTY LLC", "address": "300 CADMAN PLAZA W", "city": "BROOKLYN", "state": "NY", "zip": "11201" },
    { "partyType": "2", "role": "Buyer (Grantee)", "name": "ZOVICH, NICOLAS FRANCIS", "address": "48 NASSAU DRIVE", "city": "NEW HYDE PARK", "state": "NY", "zip": "11040" }
  ],
  "properties": [
    { "bbl": "3-2682-112", "borough": "3", "block": "2682", "lot": "112", "address": "47 MCGUINNESS BOULEVARD", "unit": null, "propertyType": "D3" }
  ],
  "acrisUrl": "https://a836-acris.nyc.gov/DS/DocumentSearch/DocumentDetail?doc_id=2026052800574001"
}
```

***

### Key Output Fields

**Document**
| Field | Description |
|---|---|
| `documentId` | ACRIS document identifier (unique per recorded document). |
| `crfn` | City Register File Number. |
| `docType` | Document type code (e.g. `DEED`, `MTGE`, `ASST`, `SAT`, `AGMT`). |
| `documentDate` | Date the document was executed/dated. |
| `recordedDate` | Date the document was recorded with the city. |
| `amount` | Document amount (sale price / mortgage amount), numeric; `null` if not stated. |
| `borough` | **Authoritative** borough of the property. |
| `recordedBorough` | Raw Master borough value (often unreliable — see Output Overview). |
| `acrisUrl` | Permalink to the official ACRIS document detail page. |

**Parties (`parties[]`)**
| Field | Description |
|---|---|
| `name` | Party name (person or company). |
| `role` | Plain-English role for common doc types (Buyer/Seller, Borrower/Lender), else `null`. |
| `partyType` | Raw ACRIS party-type code. |
| `address`, `city`, `state`, `zip` | Party mailing address. |

**Property (`properties[]`)**
| Field | Description |
|---|---|
| `bbl` | Borough-Block-Lot, e.g. `3-2682-112`. |
| `borough`, `block`, `lot` | BBL components. |
| `address`, `unit` | Property street address and unit. |
| `propertyType` | ACRIS property-type code. |

***

### FAQ

**Is this scraping the ACRIS website?**
No. It reads the same official Department of Finance records through NYC Open Data (the city's public Socrata API) — cleaner, faster, and without the ACRIS web app's sessions or CAPTCHAs.

**Why are there two borough fields?**
ACRIS's raw `recorded_borough` is unreliable — most recent e-recorded documents default to "Manhattan". The trustworthy borough is the **property's** borough, which lives in the Legals dataset. `borough` is that authoritative value; `recordedBorough` is the raw one, included only for transparency. Borough filtering uses the authoritative value.

**How fresh is the data?**
NYC Open Data refreshes the ACRIS datasets on the Department of Finance's schedule (typically within days of recording), not the same second a document is filed. It's built for recent-activity lead lists ("everything recorded in the last 30 days"), not a real-time feed.

**Which document types can I request?**
Any ACRIS type. Use plain names — `DEED`, `MORTGAGE`, `ASSIGNMENT`, `SATISFACTION`, `AGREEMENT` — or raw codes (`DEED`, `MTGE`, `ASST`, `SAT`, `AGMT`, …). Leave it empty for all types.

**Can I pull commercial-only (or residential-only)?**
Yes — use **Property types**. Every ACRIS document carries a property-type code, and this filter keeps only the types you pick. For commercial deals select `CR` (commercial real estate), `OF` (office), `RB` (retail), `IB` (industrial), `CC`/`CP` (commercial condo/coop), `AP` (apartment building), plus the mixed-use store/office types (`F1`, `F4`, `FS`, `F5`). Leave it empty for everything. So "commercial deeds in Brooklyn, last 30 days" is just Borough = Brooklyn, Document types = `DEED`, Property types = the commercial set.

**Do I need an NYC Open Data app token?**
No. The actor works without one. For very large pulls you can add a free Socrata app token (`appToken`) to raise the API rate limit — get one at data.cityofnewyork.us (Profile → Developer Settings).

**Does it cover the whole city?**
Yes — all 5 boroughs (Manhattan, Bronx, Brooklyn, Queens, Staten Island). ACRIS is a New York **City** system; suburban counties (Nassau, Suffolk, Westchester, etc.) use separate systems and are out of scope.

**How is a "record" counted for billing?**
One recorded document = one record = one output row, regardless of how many parties or properties it has. Your **Maximum records** setting is a hard cap on both output and spend.

**Can I get owner phone numbers or emails?**
ACRIS provides names and mailing addresses only. Those are an excellent seed for skip-tracing/enrichment — pair the output with a phone/email enrichment step.

***

### Support

Questions, a bug, or a custom pull (e.g. a specific block, a longer historical range, or a scheduled daily feed)? Contact **muhameddidovic@gmail.com** or open an issue on the actor's Issues tab. Response is typically within one business day.

***

### Additional Services

Need something beyond the standard run? Available on request:

- **Scheduled feeds** — a daily/weekly ACRIS pull for your farm areas delivered to a webhook, S3, or database.
- **Enrichment** — owner names + mailing addresses matched to phones/emails.
- **Custom joins** — combine ACRIS with tax/assessment data, or filter on specific blocks/lots.

***

### Explore More Scrapers

Building real-estate or lead-gen pipelines? See the full catalog at **[apify.com/memo23](https://apify.com/memo23)** — including scrapers for:

- **Zillow** — agents, listings, property managers, and lenders
- **Redfin** — agents and listings
- **Realtor.com** — agents and listings
- **Crexi & LoopNet** — commercial real estate and brokers

***

### ⚠️ Disclaimer

This Actor accesses **publicly available government records** published by the New York City Department of Finance through NYC Open Data, for legitimate research, market-intelligence, and business-analysis purposes. Use of this Actor must comply with the [NYC Open Data Terms of Use](https://opendata.cityofnewyork.us/overview/) and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.) where they apply to any personal data (party names and mailing addresses) in the output. Users must:

- Respect the NYC Open Data API rate limits and avoid overloading the service.
- Not use party names or addresses to harass individuals or in violation of privacy laws.
- Comply with applicable jurisdictions when storing or processing the data.
- Not represent the data as anything other than public recorded documents.

This Actor is **not affiliated with, endorsed by, or connected to** the City of New York or the New York City Department of Finance. "ACRIS" is a system operated by the City of New York. We do not store your scraped data; the Actor returns it directly to your Apify dataset for your authorized use.

***

### SEO Keywords

nyc acris scraper, acris property records, nyc deed scraper, nyc mortgage records scraper, nyc property records api, acris api alternative, nyc open data scraper, nyc real estate leads, buyer seller leads nyc, nyc property owner data, deed records scraper, mortgage records extraction, borough block lot lookup, bbl lookup, nyc department of finance records, real estate lead generation, property data extraction, nyc recorded documents, absentee owner leads, nyc land records, title research data, nyc json csv export

# Actor input Schema

## `boroughs` (type: `array`):

Which NYC boroughs to pull. Leave empty for all five.

## `documentTypes` (type: `array`):

Document types to include. Use plain names — DEED, MORTGAGE, ASSIGNMENT, SATISFACTION, AGREEMENT — or the raw ACRIS codes (DEED, MTGE, ASST, SAT, AGMT). Leave empty for all types.

## `propertyTypes` (type: `array`):

Filter by the property's building type (ACRIS Legals property-type code). Leave empty for ALL types. For COMMERCIAL-only, select the top group: Commercial real estate (CR), Office (OF), Retail (RB), Industrial (IB), Commercial condo (CC), Commercial coop (CP), Apartment building (AP), Entertainment (EA), Utility (UT), Non-residential vacant land (VN) — plus the mixed-use store/office types (F1/F4/FS/F5) if you want mixed-use included.

## `recordedSinceDays` (type: `integer`):

Return documents recorded within this many days. A simple way to pull recent activity. Ignored if you set an explicit Date from below.

## `dateFrom` (type: `string`):

Only documents recorded on or after this date. Overrides "Recorded in the last N days".

## `dateTo` (type: `string`):

Only documents recorded on or before this date. Optional.

## `maxItems` (type: `integer`):

Maximum number of documents to return. You are billed per record, so this bounds your spend.

## `includeParties` (type: `boolean`):

Attach the party list for each document — buyers/sellers, borrowers/lenders — with their names and mailing addresses. This is the lead data.

## `includeProperty` (type: `boolean`):

Attach the property each document ties to — street address, unit, and Borough-Block-Lot (BBL).

## `appToken` (type: `string`):

A free Socrata/NYC Open Data app token raises the API rate limit for large pulls. Optional — the actor works without one. Get one at data.cityofnewyork.us (Profile → Developer Settings).

## Actor input object example

```json
{
  "boroughs": [],
  "documentTypes": [
    "DEED",
    "MORTGAGE"
  ],
  "propertyTypes": [],
  "recordedSinceDays": 30,
  "maxItems": 1000,
  "includeParties": true,
  "includeProperty": true
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "documentTypes": [
        "DEED",
        "MORTGAGE"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/nyc-acris-property-records").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "documentTypes": [
        "DEED",
        "MORTGAGE",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/nyc-acris-property-records").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "documentTypes": [
    "DEED",
    "MORTGAGE"
  ]
}' |
apify call memo23/nyc-acris-property-records --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/nyc-acris-property-records",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NYC ACRIS Property Records Scraper — Deeds, Mortgages & Owners",
        "description": "Pull NYC property records (deeds, mortgages, parties, addresses) from ACRIS by borough, document type and date. Fresh buyer/seller/owner leads",
        "version": "0.0",
        "x-build-id": "clPtucEXHsPE0viK4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~nyc-acris-property-records/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-nyc-acris-property-records",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/memo23~nyc-acris-property-records/runs": {
            "post": {
                "operationId": "runs-sync-memo23-nyc-acris-property-records",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/memo23~nyc-acris-property-records/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-nyc-acris-property-records",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "boroughs": {
                        "title": "Boroughs",
                        "type": "array",
                        "description": "Which NYC boroughs to pull. Leave empty for all five.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Manhattan",
                                "Bronx",
                                "Brooklyn",
                                "Queens",
                                "Staten Island"
                            ],
                            "enumTitles": [
                                "Manhattan",
                                "Bronx",
                                "Brooklyn",
                                "Queens",
                                "Staten Island"
                            ]
                        },
                        "default": []
                    },
                    "documentTypes": {
                        "title": "Document types",
                        "type": "array",
                        "description": "Document types to include. Use plain names — DEED, MORTGAGE, ASSIGNMENT, SATISFACTION, AGREEMENT — or the raw ACRIS codes (DEED, MTGE, ASST, SAT, AGMT). Leave empty for all types.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "propertyTypes": {
                        "title": "Property types (commercial / residential filter)",
                        "type": "array",
                        "description": "Filter by the property's building type (ACRIS Legals property-type code). Leave empty for ALL types. For COMMERCIAL-only, select the top group: Commercial real estate (CR), Office (OF), Retail (RB), Industrial (IB), Commercial condo (CC), Commercial coop (CP), Apartment building (AP), Entertainment (EA), Utility (UT), Non-residential vacant land (VN) — plus the mixed-use store/office types (F1/F4/FS/F5) if you want mixed-use included.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "CR",
                                "OF",
                                "RB",
                                "IB",
                                "CC",
                                "CP",
                                "AP",
                                "EA",
                                "UT",
                                "VN",
                                "RS",
                                "F1",
                                "F4",
                                "FS",
                                "F5",
                                "RE",
                                "R1",
                                "R2",
                                "D1",
                                "D2",
                                "D3",
                                "D4",
                                "D5",
                                "D6",
                                "SC",
                                "MC",
                                "SP",
                                "MP",
                                "RG",
                                "RP",
                                "RV",
                                "GR",
                                "VR",
                                "HC",
                                "CA",
                                "SA",
                                "BS",
                                "SM",
                                "CK",
                                "MR",
                                "SR",
                                "PS",
                                "TS",
                                "MU",
                                "VL",
                                "OT",
                                "PA",
                                "NA"
                            ],
                            "enumTitles": [
                                "Commercial real estate (CR)",
                                "Office building (OF)",
                                "Retail building (RB)",
                                "Industrial building (IB)",
                                "Commercial condo unit(s) (CC)",
                                "Commercial coop unit(s) (CP)",
                                "Apartment building (AP)",
                                "Entertainment / amusement (EA)",
                                "Utility (UT)",
                                "Non-residential vacant land (VN)",
                                "Religious structure (RS)",
                                "1-3 family with store/office (F1)",
                                "4-6 family with store/office (F4)",
                                "4 family with store/office (FS)",
                                "5-6 family with store/office (F5)",
                                "Real estate investment trust (RE)",
                                "REIT 1-3 family (R1)",
                                "REIT 4-6 family & commercial (R2)",
                                "Dwelling - 1 family (D1)",
                                "Dwelling - 2 family (D2)",
                                "Dwelling - 3 family (D3)",
                                "Dwelling - 4 family (D4)",
                                "Dwelling - 5 family (D5)",
                                "Dwelling - 6 family (D6)",
                                "Single residential condo (SC)",
                                "Multiple residential condo (MC)",
                                "Single residential coop (SP)",
                                "Multiple residential coop (MP)",
                                "1-2 family dwelling w/ garage (RG)",
                                "1-2 family w/ garage &/or vacant land (RP)",
                                "1-2 family dwelling w/ vacant land (RV)",
                                "Garage, 1-2 family (GR)",
                                "Residential vacant land (VR)",
                                "HDFC exemption property (HC)",
                                "Adjacent condo to combine (CA)",
                                "Adjacent coop to combine (SA)",
                                "Bulk sale of condominiums (BS)",
                                "Under $1M condo in $1M+ sale (SM)",
                                "Condo unit without kitchen (CK)",
                                "Maids room (MR)",
                                "Storage room (SR)",
                                "Parking space (PS)",
                                "Timeshare (TS)",
                                "Multiple properties (MU)",
                                "Vacant land (VL)",
                                "Other (OT)",
                                "Pre-ACRIS (PA)",
                                "Not applicable (NA)"
                            ]
                        },
                        "default": []
                    },
                    "recordedSinceDays": {
                        "title": "Recorded in the last N days",
                        "type": "integer",
                        "description": "Return documents recorded within this many days. A simple way to pull recent activity. Ignored if you set an explicit Date from below.",
                        "default": 30
                    },
                    "dateFrom": {
                        "title": "Date from (recorded, YYYY-MM-DD)",
                        "type": "string",
                        "description": "Only documents recorded on or after this date. Overrides \"Recorded in the last N days\"."
                    },
                    "dateTo": {
                        "title": "Date to (recorded, YYYY-MM-DD)",
                        "type": "string",
                        "description": "Only documents recorded on or before this date. Optional."
                    },
                    "maxItems": {
                        "title": "Maximum records",
                        "type": "integer",
                        "description": "Maximum number of documents to return. You are billed per record, so this bounds your spend.",
                        "default": 1000
                    },
                    "includeParties": {
                        "title": "Include parties (names + addresses)",
                        "type": "boolean",
                        "description": "Attach the party list for each document — buyers/sellers, borrowers/lenders — with their names and mailing addresses. This is the lead data.",
                        "default": true
                    },
                    "includeProperty": {
                        "title": "Include property (address + BBL)",
                        "type": "boolean",
                        "description": "Attach the property each document ties to — street address, unit, and Borough-Block-Lot (BBL).",
                        "default": true
                    },
                    "appToken": {
                        "title": "NYC Open Data app token (optional)",
                        "type": "string",
                        "description": "A free Socrata/NYC Open Data app token raises the API rate limit for large pulls. Optional — the actor works without one. Get one at data.cityofnewyork.us (Profile → Developer Settings)."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
