NYC ACRIS Property Records Scraper avatar

NYC ACRIS Property Records Scraper

Pricing

from $1.68 / 1,000 acris property records

Go to Apify Store
NYC ACRIS Property Records Scraper

NYC ACRIS Property Records Scraper

Search and export official NYC ACRIS deeds, mortgages, assignments, parties, recorded amounts, parcels, and source links for title research.

Pricing

from $1.68 / 1,000 acris property records

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Search and export NYC ACRIS property records from the official NYC Open Data ACRIS datasets. Find deeds, mortgages, assignments, and other recorded documents by parcel, address, party name, document ID, document type, or recording date.

Each result is a normalized property-document record with its document ID, CRFN, recording date, amount, transfer percentage, parcels, parties, references, and canonical source links. This is useful for title research, transaction research, real-estate intelligence, and repeatable data pipelines.

What does this Actor do?

The Actor joins four official ACRIS data surfaces:

  • Real Property Master records
  • Real Property Legals and parcel addresses
  • Real Property Parties
  • Real Property References

It turns those separate tables into one dataset row per ACRIS document. You do not need to download and join large citywide files yourself.

Supported searches include:

  • borough, block, and lot (BBL)
  • street name and optional exact street number
  • recorded party name or leading-name prefix
  • one or more current or legacy ACRIS document IDs
  • recording-date range
  • document-type codes such as DEED, MTGE, ASST, and SAT

Who is it for?

Title researchers can retrieve the document chain, parties, parcel references, and source links for a known property.

Real-estate analysts can export deeds or mortgages recorded during a selected period and compare transaction amounts.

Proptech teams can feed normalized ACRIS documents into warehouses, enrichment jobs, and internal search tools.

Brokerage and investment teams can research recorded parties and connect documents back to BBLs and addresses.

Legal and compliance teams can preserve source-attributed public-record extracts for a defined research question.

Why use this Actor?

  • Uses official NYC Open Data rather than scraping a rendered search page.
  • Joins documents, parcels, parties, and references into one usable record.
  • Supports precise parcel and document-ID workflows as well as date searches.
  • Returns stable identifiers and both ACRIS and NYC Open Data source URLs.
  • Applies bounded retries for transient NYC Open Data rate limits or server errors.
  • Charges only for dataset rows actually produced; joined parties and parcels have no separate event charge.

What data can I extract?

FieldDescription
documentIdCurrent 16-digit or legacy ACRIS document identifier
crfnCity Register File Number, when assigned
documentTypeACRIS document-type code, such as DEED or MTGE
documentDateDate stated on the document
recordedDateDate recorded or filed
recordedAmountDocument amount reported by ACRIS
percentTransferredTransfer percentage when available
recordedBoroughNameHuman-readable master-record borough
parcelsBBL, address, unit, property type, and partial-lot status
partiesParty role, name, and public mailing-address fields
referencesReferenced CRFN, document ID, or legacy reel/page
acrisDocumentUrlCanonical ACRIS document-view link
sourceUrlOfficial NYC Open Data API link for the record
sourceGoodThroughDateFreshness date reported by the source
scrapedAtUTC extraction timestamp

Null values mean the official source did not provide that value for the document. Empty parties or references arrays can also result when those joins are disabled.

How to search ACRIS by borough, block, and lot

Use borough code 1 through 5 with both block and lot:

{
"borough": 4,
"block": 12992,
"lot": 42,
"documentTypes": ["DEED", "MTGE"],
"includeParties": true,
"includeReferences": true,
"maxItems": 10
}

Borough codes are:

  1. Manhattan
  2. Bronx
  3. Brooklyn
  4. Queens
  5. Staten Island

The Actor searches the legal/parcel table first and then joins matching master documents and parties.

How to search ACRIS by party name

Supply a full recorded name or a leading-name prefix:

{
"partyName": "HILLSIDE BUYERS LLC",
"includeParties": true,
"includeReferences": true,
"maxItems": 20
}

Party matching follows the text recorded in ACRIS. Corporate suffixes, punctuation, initials, and name order can affect results. Start with the exact recorded name when possible, then shorten from the end if needed.

How to export recent deeds and mortgages

Use a recording-date range with document types:

{
"borough": 1,
"documentTypes": ["DEED", "MTGE"],
"recordedFrom": "2026-07-01",
"recordedTo": "2026-07-31",
"includeParties": true,
"includeReferences": true,
"maxItems": 100
}

Dates use YYYY-MM-DD. recordedFrom is inclusive and recordedTo includes the complete selected day.

Input parameters

InputTypeDefaultNotes
boroughintegernoneOptional borough code from 1 to 5
blockintegernoneMust be supplied together with lot
lotintegernoneMust be supplied together with block
streetNumberstringnoneExact house number; requires streetName
streetNamestringnoneLeading street-name text
partyNamestringnoneFull party name or leading-name prefix
documentIdsstring arraynoneCurrent 16-digit or legacy FT_/BK_ IDs
documentTypesstring arraynoneACRIS document-type codes
recordedFromdate stringnoneInclusive recording-date lower bound
recordedTodate stringnoneInclusive recording-date upper bound
includePartiesbooleantrueInclude joined party rows
includeReferencesbooleantrueInclude referenced document/reel rows
maxItemsinteger20From 1 to 10,000 result documents

Provide at least one search selector: document IDs, party name, street name, block and lot, or a recording-date bound.

Output example

The default dataset contains one object per matched document:

{
"documentId": "2026072400844001",
"crfn": "2026000215302",
"recordType": "A",
"documentType": "DEED",
"documentDate": "2026-07-16",
"recordedDate": "2026-07-31",
"modifiedDate": "2026-07-31",
"recordedAmount": 570220,
"percentTransferred": 100,
"recordedBorough": 1,
"recordedBoroughName": "Manhattan",
"reelYear": 0,
"reelNumber": 0,
"reelPage": 0,
"parcels": [
{
"borough": 4,
"boroughName": "Queens",
"block": 12992,
"lot": 42,
"bbl": "4129920042",
"streetNumber": "178-35",
"streetName": "137 AVENUE",
"unit": null,
"propertyType": "D1",
"partialLot": false
}
],
"parties": [
{
"partyType": "2",
"name": "HILLSIDE BUYERS LLC",
"address": "147-20 HILLSIDE AVENUE",
"city": "JAMAICA",
"state": "NY",
"zip": "11435",
"country": "US"
}
],
"references": [],
"acrisDocumentUrl": "https://a836-acris.nyc.gov/DS/DocumentSearch/DocumentImageView?doc_id=2026072400844001",
"sourceUrl": "https://data.cityofnewyork.us/resource/bnx9-e6tj.json?document_id=2026072400844001",
"sourceDataset": "NYC Open Data — ACRIS Real Property",
"sourceGoodThroughDate": "2026-07-31",
"scrapedAt": "2026-09-01T06:20:00.000Z"
}

This is a public-record example. Mailing-address fields come from ACRIS and may be absent or historical.

How much does it cost to export NYC ACRIS property records?

Pay-per-event pricing consists of:

  • $0.005 per run for the start event
  • $0.0028 per property record on the BRONZE plan

The per-record rate decreases on higher Apify plans. Parties, parcels, and references included inside a property-record row do not trigger separate events.

Example BRONZE costs:

Useful recordsEstimated Actor charge
1$0.0078
10$0.033
100$0.285
1,000$2.805

These examples cover Actor events, not any separate Apify platform usage charged under your account plan. A no-result run normally incurs only the start event.

Getting started

  1. Open the Actor in Apify Console.
  2. Choose a parcel, party, document, address, or recording-date search.
  3. Keep maxItems small for the first run.
  4. Decide whether party and reference joins are needed.
  5. Click Start.
  6. Inspect the Dataset tab.
  7. Export results as JSON, CSV, Excel, XML, or RSS through Apify dataset tools.
  8. Save the configuration as an Apify Task if you will run it repeatedly.

Useful workflows

Parcel title research

Start with a known BBL. Export all matching documents, sort by recordedDate, and follow references and acrisDocumentUrl for source review.

Recent transaction feed

Schedule a Task with a narrow recording-date window and selected document types. Load the dataset into a warehouse and deduplicate by documentId.

Party-to-property research

Search a recorded business or person name, then expand each result's parcels array to obtain BBL and address context.

Document enrichment

Supply known documentIds from another system. The Actor returns normalized master, parcel, party, and reference fields for downstream processing.

Scheduling and integrations

Apify Tasks can run on a schedule. Common destinations include:

  • Google Sheets through Make or Zapier
  • webhooks for internal automation
  • Amazon S3, Google Drive, or Dropbox exports
  • SQL warehouses and BI pipelines
  • Python or JavaScript data-processing jobs

For incremental pipelines, persist the last accepted recordedDate and documentId. Advance the checkpoint only after downstream storage succeeds.

Run with the Apify API using cURL

Replace APIFY_TOKEN with your token:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~nyc-acris-property-records-scraper/runs?token=APIFY_TOKEN&waitForFinish=300" \
-H "Content-Type: application/json" \
-d '{
"borough": 1,
"documentTypes": ["DEED", "MTGE"],
"recordedFrom": "2026-07-01",
"recordedTo": "2026-07-31",
"maxItems": 25
}'

The run response includes defaultDatasetId. Fetch its records from /v2/datasets/{datasetId}/items.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/nyc-acris-property-records-scraper').call({
borough: 4,
block: 12992,
lot: 42,
documentTypes: ['DEED', 'MTGE'],
includeParties: true,
maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/nyc-acris-property-records-scraper').call(run_input={
'partyName': 'HILLSIDE BUYERS LLC',
'includeParties': True,
'includeReferences': True,
'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI assistants

Add the Actor to Claude Code through Apify MCP:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/nyc-acris-property-records-scraper"

Claude Desktop, Cursor, and VS Code setup

Desktop and editor clients can use this Apify MCP server configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/nyc-acris-property-records-scraper"
}
}
}

Example prompts:

  • "Export Manhattan deeds and mortgages recorded in July 2026, maximum 25 records."
  • "Find ACRIS documents for Queens block 12992 lot 42 and include parties."
  • "Research documents recorded under HILLSIDE BUYERS LLC and summarize the parcels."

Verify source links before relying on an AI-generated legal or financial conclusion.

Reliability and retries

The Actor uses the official public Socrata JSON API and does not require a browser, login, or proxy. Each API call has a timeout and up to three attempts for transient failures.

A deterministic invalid query fails immediately. HTTP 429 and server errors receive bounded exponential backoff. If all attempts fail, the run exits as failed rather than returning a misleading partial success.

Use narrower filters when a broad party or street prefix scans too many source records. For repeat runs, keep each date interval bounded.

Limits and source freshness

  • ACRIS covers recorded property documents, not every fact about a property.
  • Party names and addresses reflect recorded source text and can be historical.
  • Document-type codes are ACRIS codes, not expanded legal interpretations.
  • A master record can reference parcels in a different borough than its master recordedBorough; inspect parcels for property location.
  • The Actor returns up to 10,000 documents per run.
  • Source updates are controlled by NYC, and sourceGoodThroughDate reports the available freshness boundary.
  • Naturally empty queries produce no dataset items.
  • This Actor does not download document images or PDFs.
  • This Actor does not provide title insurance, legal advice, ownership certification, or a complete title opinion.

Responsible use and legality

ACRIS and NYC Open Data are public government-record sources. Public availability does not remove your obligations.

Use the data for lawful research. Respect applicable privacy, fair-housing, consumer-reporting, marketing, and data-retention rules. Do not use public mailing addresses for harassment, unlawful discrimination, or unsupported identity conclusions.

Names can collide, entities can use variants, and recordings can be corrected. Confirm material decisions against the canonical source document and consult a qualified professional for legal title work.

FAQ

No. It exports public ACRIS records for research. Confirm material conclusions against source documents and use a qualified title or legal professional when needed.

Can I schedule an incremental ACRIS feed?

Yes. Save the input as an Apify Task, use narrow recording-date windows, schedule the Task, and deduplicate downstream by documentId.

Troubleshooting

The run says I must provide a selector

Add at least one of: documentIds, partyName, streetName, block plus lot, recordedFrom, or recordedTo.

My block search fails

Supply both block and lot. Add the correct borough code for a precise BBL.

A party search returns no results

Use the recorded name spelling and remove words from the end. The search supports full names and leading prefixes, not arbitrary middle-of-name substrings.

I received zero records

Check date bounds, borough, document-type codes, and source freshness. Remove one optional filter at a time. A zero-result search is not retried because it can be a valid source response.

The source timed out

Retry after a short interval or narrow a broad search. The Actor already retries transient requests three times, so repeated failures usually indicate a temporary NYC Open Data problem or an expensive unindexed query.

Why are parties or references empty?

The document may have no matching rows, or the relevant include option may be disabled. Empty joined arrays are not charged separately.

Use ACRIS for recorded deeds, mortgages, parties, and parcels. Use the related Actors only when the buyer job also needs those separate public-record domains.

Data provenance

Primary datasets:

  • ACRIS - Real Property Master (bnx9-e6tj)
  • ACRIS - Real Property Parties (636b-3b5g)
  • ACRIS - Real Property Legals (8h5j-fqxa)
  • ACRIS - Real Property References (pwkr-dpni)

Every dataset item retains official source URLs, source freshness, and the extraction timestamp so downstream users can audit where the record came from.