{
  "openapi": "3.0.1",
  "info": {
    "title": "NYC ACRIS Deeds & Mortgages: Bulk Recordings with Parties",
    "description": "Bulk NYC property recordings from ACRIS on NYC Open Data: deeds, mortgages and 120+ other document types with recording date, amount and document id. Optional grantor/grantee and borrower/lender parties and block/lot joins. Filter by date, type, borough, amount or party name.",
    "version": "1.0",
    "x-build-id": "9SfhyLbYr75FZQDpu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jserle~nyc-acris-recordings-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jserle-nyc-acris-recordings-feed",
        "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/jserle~nyc-acris-recordings-feed/runs": {
      "post": {
        "operationId": "runs-sync-jserle-nyc-acris-recordings-feed",
        "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/jserle~nyc-acris-recordings-feed/run-sync": {
      "post": {
        "operationId": "run-sync-jserle-nyc-acris-recordings-feed",
        "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": {
          "recordedFrom": {
            "title": "Recorded from",
            "type": "string",
            "description": "ISO date, for example 2026-07-01. Keeps documents recorded on or after this date. Blank means 30 days before the newest recording in the dataset. The dataset is updated about monthly and its newest recording runs a few weeks behind today."
          },
          "recordedTo": {
            "title": "Recorded to",
            "type": "string",
            "description": "ISO date, for example 2026-07-31. Keeps documents recorded on or before this date. Blank means the newest recording in the dataset."
          },
          "docTypes": {
            "title": "Document types",
            "type": "array",
            "description": "ACRIS document type codes. Default DEED and MTGE. Other frequent codes: SAT (satisfaction of mortgage), ASST (assignment of mortgage), AGMT (agreement), PAT (power of attorney), RPTT&RET (transfer tax returns), DEED, TS (timeshare deed), TL&R / AL&R (lis pendens). An empty list means every document type. The full 126-code table is NYC Open Data dataset 7isb-wh4c.",
            "default": [
              "DEED",
              "MTGE"
            ],
            "items": {
              "type": "string"
            }
          },
          "borough": {
            "title": "Property borough",
            "enum": [
              "any",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "Keeps documents that touch at least one tax lot in this borough. Applied after fetching, using the Legals dataset, so the run scans newest-first until it has enough matches (at most 10,000 documents). Most Staten Island deeds are recorded with the Richmond County Clerk, not ACRIS, so expect few rows there (about 2% of documents).",
            "default": "any"
          },
          "minAmount": {
            "title": "Minimum document amount (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keeps documents whose recorded amount is at least this much. Applied by the source. Many deeds record 0 (transfers between related parties, co-op and timeshare deeds, corrections), so a minimum also removes those.",
            "default": 0
          },
          "partyName": {
            "title": "Party name contains",
            "type": "string",
            "description": "Case-insensitive substring matched against every party on the document (grantor, grantee, borrower, lender, and so on). Example: deephaven. Applied after fetching, using the Parties dataset, with a pre-filter so only documents that can match are joined. Minimum 3 characters."
          },
          "includeParties": {
            "title": "Include parties",
            "type": "boolean",
            "description": "Attach a `parties` array with every party on the document: role (GRANTOR/SELLER, GRANTEE/BUYER, MORTGAGOR/BORROWER, MORTGAGEE/LENDER and so on, from the ACRIS code table), name and address. One extra request per 50 documents. Switched on automatically by the party-name filter.",
            "default": false
          },
          "includeLegals": {
            "title": "Include lots (block and lot)",
            "type": "boolean",
            "description": "Attach a `properties` array with every tax lot the document touches: borough, block, lot, ten-digit BBL, property type code, street address and unit. One extra request per 50 documents. Switched on automatically by the borough filter.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "How many documents to deliver, newest first. You are charged per delivered record, so this is also your cost cap.",
            "default": 100
          },
          "allowPartialResults": {
            "title": "Allow partial results",
            "type": "boolean",
            "description": "Only matters with a borough or party-name filter. Those filters run after fetching and the run scans at most 10,000 documents newest-first. If that cap is reached before maxResults matches are found, the run fails by default (nothing delivered, nothing charged) so you can narrow the window. Set this to true to deliver the matches found so far instead; the run summary then carries stoppedByScanCap: true.",
            "default": false
          },
          "includeRaw": {
            "title": "Include the raw source rows",
            "type": "boolean",
            "description": "Attach a `raw` object with the untouched Socrata rows (master, and parties / legals when joined) under their ACRIS column names. Useful for auditing the normalization; roughly doubles item size.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}