{
  "openapi": "3.0.1",
  "info": {
    "title": "US Property Assessment Scraper — Values, Owners & Sale Price",
    "description": "County assessor data from 13 states and 45.5M parcels: assessed value, market value, land and improvement value, tax year, last sale date and price, owner, acreage, year built, mailing address. Search by address, parcel or owner; each owner search returns a free portfolio row with absentee count.",
    "version": "0.27",
    "x-build-id": "JIfaODtRzKTy2mzDI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ai-lead-gen-tools~united-states-property-owner-address-parcel-records-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ai-lead-gen-tools-united-states-property-owner-address-parcel-records-scraper",
        "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/ai-lead-gen-tools~united-states-property-owner-address-parcel-records-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ai-lead-gen-tools-united-states-property-owner-address-parcel-records-scraper",
        "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/ai-lead-gen-tools~united-states-property-owner-address-parcel-records-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ai-lead-gen-tools-united-states-property-owner-address-parcel-records-scraper",
        "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": {
          "ownerNames": {
            "title": "Owner names",
            "type": "array",
            "description": "Owner-name search, one name per row. Partial matches are allowed — \"SILVER PINES\" finds \"SILVER PINES PROPERTIES LLC\". The source columns hold the name as the county recorded it, so try the surname first, then the full entity name.",
            "items": {
              "type": "string",
              "minLength": 3
            }
          },
          "addresses": {
            "title": "Property addresses",
            "type": "array",
            "description": "Situs (property) address search, one address per row. A partial street with no city works because the fallback matches the street line alone: \"609 MAIN ST\" is a better input than \"609 Main Street, Raleigh, NC 27601\". When you leave States empty and every address ends in a state (\"... Lakeland, FL 33813\"), that state is used and the other twelve are not queried — the run summary reports which states it picked.",
            "items": {
              "type": "string",
              "minLength": 4
            }
          },
          "parcelIds": {
            "title": "Parcel numbers",
            "type": "array",
            "description": "Parcel number as the county writes it. Punctuation and spacing are handled: 1234-56-789, 123456789 and 1234 56 789 are all tried. New York wants the PRINT_KEY value (SWIS plus print key); every other state takes the parcel number as its own layer publishes it. Check the run summary if a parcel is not found — it says which column each state searches.",
            "items": {
              "type": "string",
              "minLength": 3
            }
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "Which states to query. Leave empty to take the state from the addresses when all of them name one, and otherwise to query every state that works. Thirteen states serve property records; each one was probed live and the coverage shown is the measured one, not the advertised one. Texas and nine other states were measured and their layers refuse queries or lack owner and address columns, so asking for one of them is an error rather than an empty result.",
            "items": {
              "type": "string",
              "enum": [
                "NC",
                "NY",
                "WV",
                "AR",
                "CA",
                "CO",
                "CT",
                "MA",
                "MD",
                "UT",
                "VA",
                "WA",
                "WI"
              ],
              "enumTitles": [
                "North Carolina — 100 of 100 counties, 5 938 804 parcels, owner + situs + mailing",
                "New York — 62 of 62 counties, 5 510 061 parcels, owner + situs + mailing",
                "West Virginia — 55 of 55 counties, 1 394 081 parcels, owner and street line only",
                "Arkansas — 75 of 75 counties, 2 149 448 parcels, owner + situs, no mailing",
                "California — 58 of 58 counties, 13 138 000 parcels, address and parcel only, no owner",
                "Colorado — 44 of 64 counties, 2 599 937 parcels, owner + situs + mailing",
                "Connecticut — 8 of 8 counties, 1 282 833 parcels, owner + situs + mailing",
                "Massachusetts — 351 of 351 municipalities, 2 559 749 parcels, owner + situs + mailing",
                "Maryland — 24 of 24 jurisdictions, 2 395 737 parcels, situs + mailing, no owner",
                "Utah — 29 of 29 counties, 1 600 062 parcels, address and parcel only, no owner",
                "Virginia — 76 957 parcels, owner + mailing, no situs address",
                "Washington — 39 of 39 counties, 3 321 859 parcels, address and parcel only, no owner",
                "Wisconsin — 72 of 72 counties, 3 574 646 parcels, owner + situs + mailing"
              ]
            },
            "default": []
          },
          "bulk": {
            "title": "Bulk sample (no lookups)",
            "type": "boolean",
            "description": "Ignore the lookup lists and instead sample rows directly from the layer. Useful to inspect what a state publishes before spending money on a lookup list. The summary reports the layer's total row count and states plainly that the sample is a sample.",
            "default": false
          },
          "bulkCount": {
            "title": "Bulk sample size",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many rows to sample per state when Bulk sample is on. The layer's own maximum is respected; asking for more than it returns is reported as truncated, never silently.",
            "default": 50
          },
          "maxRecords": {
            "title": "Max records",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap for the whole run, across all states and all lookups. You are charged per record pushed, so this is also your cost cap. Maximum 1000.",
            "default": 50
          },
          "maxRecordsPerLookup": {
            "title": "Max records per lookup",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many parcels one owner name or one address may return. An owner name like \"SMITH\" can match hundreds of parcels; this stops one lookup from consuming the whole run's budget.",
            "default": 10
          },
          "ownerPortfolio": {
            "title": "Free owner portfolio row",
            "type": "boolean",
            "description": "When on, every owner search also pushes one free summary row: how many parcels came back, how many counties, the assessed and market value totals with the number of records behind each total, the acreage, and how many parcels are absentee (the owner's mailing state differs from the parcel state). This row is never charged. On by default because a list of parcels does not tell you whether you found a landlord or a resident.",
            "default": true
          },
          "includeRaw": {
            "title": "Include raw source row",
            "type": "boolean",
            "description": "Add the untouched layer attributes to each record under `raw`. Useful when a column you need is not in the mapped set yet. Off by default to keep the dataset light.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Concurrent lookups",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many lookups run in parallel. The layers are public and unauthenticated; 2 is polite and fast enough. Raising it to 8 may get you throttled by the source.",
            "default": 2
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Per-request timeout. New York's layer answers a lookup in 6–8 seconds from the platform, so do not set this below 20.",
            "default": 45
          },
          "runBudgetSecs": {
            "title": "Run budget (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "How long this run may take before it stops and returns what it has. Leave it empty (recommended) and the run uses the whole timeout you set for it, so asking for every state is not cut short. Set a number only to stop earlier. Stopping early is not a failure: the summary lists the states it did not reach under `statesSkippedForBudget`, and you can re-run for them."
          },
          "chargePerRecord": {
            "title": "Charge per record",
            "type": "boolean",
            "description": "Emits one billing event per distinct record pushed to the dataset. Missed lookups are never charged. Turn off only for debugging.",
            "default": true
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}