Properties
| Name | Type | Description |
|---|---|---|
| id | string | PropRaven parcel UUID. Accepted by GET /parcels/{id}. |
| county_fips | string | 3-digit within-state county FIPS code (the 5-digit form is `state_fips` + `county_fips`). |
| state_fips | string | 2-digit state FIPS code. |
| parcel_id | string | County-assigned parcel identifier (APN as the county publishes it). The canonical id is `state_fips:county_fips:parcel_id`. |
| address | stringnull | |
| normalized_address | stringnull | |
| city | stringnull | |
| state | stringnull | USPS 2-letter state code of `state_fips` ("37" → "NC"). Always a string; the 2-digit FIPS is `state_fips`. |
| zip | stringnull | |
| zip5 | stringnull | |
| zip_plus4 | stringnull | |
| latitude | numbernull | |
| longitude | numbernull | |
| land_use_code | stringnull | |
| land_use_desc | stringnull | |
| total_assessed_value | numbernull | |
| land_assessed_value | numbernull | |
| improvement_assessed_value | numbernull | |
| last_sale_price | numbernull | Price of the last sale. From the parcel record; where null, filled from the same county-recorder deed that supplies `last_sale_date` (`last_sale_price_basis: county_recorder_deeds`). A nominal conside |
| last_sale_date | stringnull | Date of the last sale. From the parcel record; where the record's date is null or withheld (e.g. a county collection stamp, `site_gate`), filled from the latest arm's-length transfer in the county rec |
| market_value | numbernull | County market value: the market (just / full cash / appraised) value on the county assessor's record, or null when the record carries none. Never PropRaven's model output: a stored value that is the s |
| avm_value | numbernull | PropRaven estimate: PropRaven's own automated valuation (a model output — see `avm_method`, `avm_method_family`, `avm_method_basis`). Not the county's value and not a licensed appraisal. Display it as |
| avm_confidence | stringnull | |
| avm_method | stringnull | |
| tax_amount | numbernull | |
| tax_year | integernull | |
| deal_score | numbernull | Composite deal opportunity score from 0 to 100. |
| price_per_sqft | numbernull | |
| comp_sale_price | numbernull | |
| comp_sale_date | stringnull | |
| comp_similarity_score | numbernull | |
| estimated_monthly_rent | numbernull | |
| estimated_annual_rent | numbernull | |
| rent_yield_pct | numbernull | |
| rental_confidence | stringnull | |
| gross_rent_multiplier | numbernull | |
| land_improvement_ratio | numbernull | |
| improvement_to_land_ratio | numbernull | |
| is_redevelopment_candidate | booleannull | |
| building_sqft | numbernull | |
| year_built | integernull | |
| lot_size_acres | numbernull | |
| lot_size_sqft | numbernull | |
| bedrooms | integernull | |
| bathrooms | numbernull | |
| stories | numbernull | |
| units | integernull | |
| unit_count | integernull | |
| construction_type | stringnull | |
| owner_name | stringnull | |
| owner_address | stringnull | Owner's mailing street line. Read from whichever mailing column family the record fills (owner_address/… or owner_mailing_/…), one family per parcel — the same rule as GET /api/v1/parcels/{id}/owner. |
| owner_city | stringnull | Owner's mailing city, from the same family as `owner_address`. |
| owner_state | stringnull | Owner's mailing state, from the same family as `owner_address`. |
| owner_zip | stringnull | Owner's mailing ZIP, from the same family as `owner_address`. |
| ownership_type | stringnull | |
| owner_entity_type | stringnull | |
| entity_type | stringnull | |
| is_entity_owned | booleannull | |
| is_absentee | booleannull | |
| is_pe_aggregator | booleannull | |
| owner_occupied_flag | booleannull | |
| owner_occupied_flag_basis | string | How the served owner_occupied_flag was derived (one rule with is_absentee, so the row never says both absentee and owner-occupied): `recomputed_from_row` = from this record's own mailing address versu |
| data_quality_score | numbernull | |
| flood_zone | stringnull | |
| is_sfha | booleannull | |
| is_opportunity_zone | booleannull | |
| is_justice40 | booleannull | |
| is_flip | booleannull | |
| deed_count | integernull | |
| permit_count | integernull | |
| permit_count_12mo | integernull | |
| zoning | stringnull | |
| county_name | stringnull | |
| property_type | stringnull | |
| _guards | array | |
| is_flip_basis | string | |
| land_improvement_ratio_stored | numbernull | |
| land_improvement_ratio_basis | string | |
| improvement_to_land_ratio_basis | string | |
| is_absentee_basis | string | |
| owner_state_norm | stringnull | |
| is_out_of_state | booleannull | |
| identity_gate | object | |
| site_gate | object | |
| derived_gate | object | |
| rent_gate | object | |
| county_name_basis | string | |
| avm_method_family | stringnull | |
| avm_method_basis | string | |
| is_flip_dominant_share_pct | numbernull | |
| price_per_sqft_basis | string | What price_per_sqft divides by building_sqft, read from the row (#557): `market_value` (county market value), `avm_value` (PropRaven estimate), `total_assessed_value`, `last_sale_price`, `unreproduced |
| market_value_basis | string | What `market_value` is: `county_record` (the record's market-value column as the county source published it), `propraven_estimate` (the stored value was PropRaven's own estimate, so `market_value` is |
| market_value_note | string | Present when `market_value` was withheld because it was PropRaven's estimate, not the county's value. |
| value_labels | object | The display label for each value field: `market_value` → "County market value", `avm_value` → "PropRaven estimate". |
| last_sale_date_basis | string | Why `last_sale_date` holds what it does: `county_recorder_deeds` when filled from the deeds, or the site gate's reason when the record's own date was withheld (e.g. `sale_date_modal_collection_stamp`) |
| last_sale_date_raw | stringnull | The record's own last-sale date when the site gate withheld it (evidence, not a sale date). |
| last_sale_price_basis | string | `county_recorder_deeds` when `last_sale_price` was filled from the deeds; `nominal_consideration_not_a_price` / `not_recorded_on_deed` when the date was filled but the deed carries no market price; `m |
| last_sale_source | string | Present when a last-sale field was filled from deeds: "County recorder (deeds)". |
| last_sale_transfer_total | number | Present with `last_sale_price_basis: multi_parcel_unallocated`: the total consideration recorded on the last sale's deed, for every parcel it conveys, as the county recorded it. Not this parcel's pric |
| last_sale_transfer_basis | string | What `last_sale_transfer_total` is: `multi_parcel_unallocated` = one price for several parcels, not split by the county. Read from the deed's own fields: the sale type names a multi-parcel conveyance, |
| last_sale_transfer_parcel_count | integernull | How many parcels the multi-parcel deed conveys. Null today: no column of the served deed row carries the count (`last_sale_transfer_parcel_count_basis`). |
| last_sale_transfer_parcel_count_basis | string | Why `last_sale_transfer_parcel_count` is null: `not_on_served_deed_row`. |
| mailing_family_basis | string | Present when the owner mailing fields were read from the `owner_mailing_*` column family because the `owner_address` family is not mail-ready: `owner_mailing`. |
| assessed_value_parts_check | object | Whether land_assessed_value + improvement_assessed_value equals total_assessed_value within 1 % (floor $1). The three values are served as recorded either way (#557). |
| price_per_sqft_note | string | The formula behind price_per_sqft_basis, in words. |
| entity_type_raw | stringnull | The name-pattern entity_type when it was reconciled to owner_entity_type for a government owner (#557). |
| entity_type_basis | string | `reconciled_to_owner_entity_type` when entity_type was overridden. |
| entity_type_note | string | |
| land_use_code_raw | stringnull | The stored land_use_code when the code/description pair was swapped at source and served swapped back. |
| land_use_desc_raw | stringnull | The stored land_use_desc when it was a code (withheld) or part of a swapped pair. |
| land_use_basis | string | `swapped_at_source`: land_use_code and land_use_desc were stored in each other's fields. |
| land_use_desc_basis | string | `code_not_description`: the source's description field holds a code (e.g. DC tax class, a second NY property-class code); withheld, kept as land_use_desc_raw. |
| land_use_desc_note | string | |
| last_sale_price_raw | number | The stored sale price when it is a sentinel ($0 / $1 / $100) served as null. |
| last_sale_price_flag | string | |
| is_redevelopment_candidate_raw | booleanstringnull | The stored flag when it was served false for a government-owned parcel. |
| is_redevelopment_candidate_basis | string | `government_owner`: a government-owned parcel is not a redevelopment candidate. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/propraven-com/json-schema/propraven-com-parcel-schema.json",
"title": "Parcel",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/propraven-com-openapi.json#/components/schemas/Parcel",
"type": "object",
"required": [
"id",
"county_fips",
"state_fips",
"parcel_id",
"address",
"normalized_address",
"city",
"state",
"zip",
"zip5",
"zip_plus4",
"latitude",
"longitude",
"land_use_code",
"land_use_desc",
"total_assessed_value",
"land_assessed_value",
"improvement_assessed_value",
"last_sale_price",
"last_sale_date",
"market_value",
"avm_value",
"avm_confidence",
"avm_method",
"tax_amount",
"tax_year",
"deal_score",
"price_per_sqft",
"comp_sale_price",
"comp_sale_date",
"comp_similarity_score",
"estimated_monthly_rent",
"estimated_annual_rent",
"rent_yield_pct",
"rental_confidence",
"gross_rent_multiplier",
"land_improvement_ratio",
"improvement_to_land_ratio",
"is_redevelopment_candidate",
"building_sqft",
"year_built",
"lot_size_acres",
"lot_size_sqft",
"bedrooms",
"bathrooms",
"stories",
"units",
"unit_count",
"construction_type",
"owner_name",
"owner_address",
"owner_city",
"owner_state",
"owner_zip",
"ownership_type",
"owner_entity_type",
"entity_type",
"is_entity_owned",
"is_absentee",
"is_pe_aggregator",
"owner_occupied_flag",
"data_quality_score",
"flood_zone",
"is_sfha",
"is_opportunity_zone",
"is_justice40",
"is_flip",
"deed_count",
"permit_count",
"permit_count_12mo",
"zoning",
"county_name",
"property_type",
"_guards",
"is_flip_basis",
"land_improvement_ratio_stored",
"land_improvement_ratio_basis",
"improvement_to_land_ratio_basis",
"is_absentee_basis",
"owner_state_norm",
"is_out_of_state",
"identity_gate",
"site_gate",
"derived_gate",
"rent_gate",
"county_name_basis",
"avm_method_family",
"avm_method_basis"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "PropRaven parcel UUID. Accepted by GET /parcels/{id}."
},
"county_fips": {
"type": "string",
"description": "3-digit within-state county FIPS code (the 5-digit form is `state_fips` + `county_fips`)."
},
"state_fips": {
"type": "string",
"description": "2-digit state FIPS code."
},
"parcel_id": {
"type": "string",
"description": "County-assigned parcel identifier (APN as the county publishes it). The canonical id is `state_fips:county_fips:parcel_id`."
},
"address": {
"type": [
"string",
"null"
]
},
"normalized_address": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"state": {
"type": [
"string",
"null"
],
"pattern": "^[A-Z]{2}$",
"description": "USPS 2-letter state code of `state_fips` (\"37\" → \"NC\"). Always a string; the 2-digit FIPS is `state_fips`."
},
"zip": {
"type": [
"string",
"null"
]
},
"zip5": {
"type": [
"string",
"null"
]
},
"zip_plus4": {
"type": [
"string",
"null"
]
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"land_use_code": {
"type": [
"string",
"null"
]
},
"land_use_desc": {
"type": [
"string",
"null"
]
},
"total_assessed_value": {
"type": [
"number",
"null"
]
},
"land_assessed_value": {
"type": [
"number",
"null"
]
},
"improvement_assessed_value": {
"type": [
"number",
"null"
]
},
"last_sale_price": {
"type": [
"number",
"null"
],
"description": "Price of the last sale. From the parcel record; where null, filled from the same county-recorder deed that supplies `last_sale_date` (`last_sale_price_basis: county_recorder_deeds`). A nominal consideration (≤ $1,000) is never served as a price. A multi-parcel deed's consideration is the whole bundle's, so it is never served as this parcel's price, whatever the county's arm's-length verdict: the price stays null with `last_sale_price_basis: multi_parcel_unallocated` and the bundle is served as `last_sale_transfer_total`. A sentinel price ($0, $1 or $100) is served as null with `last_sale_price_raw` and `last_sale_price_flag: sentinel_value` (#557)."
},
"last_sale_date": {
"type": [
"string",
"null"
],
"format": "date",
"description": "Date of the last sale. From the parcel record; where the record's date is null or withheld (e.g. a county collection stamp, `site_gate`), filled from the latest arm's-length transfer in the county recorder's per-deed rows (`last_sale_date_basis: county_recorder_deeds`, `last_sale_source: \"County recorder (deeds)\"`)."
},
"market_value": {
"type": [
"number",
"null"
],
"description": "County market value: the market (just / full cash / appraised) value on the county assessor's record, or null when the record carries none. Never PropRaven's model output: a stored value that is the same figure as `avm_value` (and not the county's own assessed value) is withheld here and `market_value_basis` says so. PropRaven's model is `avm_value` (\"PropRaven estimate\")."
},
"avm_value": {
"type": [
"number",
"null"
],
"description": "PropRaven estimate: PropRaven's own automated valuation (a model output — see `avm_method`, `avm_method_family`, `avm_method_basis`). Not the county's value and not a licensed appraisal. Display it as \"PropRaven estimate\", never as \"market value\"."
},
"avm_confidence": {
"type": [
"string",
"null"
]
},
"avm_method": {
"type": [
"string",
"null"
]
},
"tax_amount": {
"type": [
"number",
"null"
]
},
"tax_year": {
"type": [
"integer",
"null"
]
},
"deal_score": {
"type": [
"number",
"null"
],
"description": "Composite deal opportunity score from 0 to 100."
},
"price_per_sqft": {
"type": [
"number",
"null"
]
},
"comp_sale_price": {
"type": [
"number",
"null"
]
},
"comp_sale_date": {
"type": [
"string",
"null"
]
},
"comp_similarity_score": {
"type": [
"number",
"null"
]
},
"estimated_monthly_rent": {
"type": [
"number",
"null"
]
},
"estimated_annual_rent": {
"type": [
"number",
"null"
]
},
"rent_yield_pct": {
"type": [
"number",
"null"
]
},
"rental_confidence": {
"type": [
"string",
"null"
]
},
"gross_rent_multiplier": {
"type": [
"number",
"null"
]
},
"land_improvement_ratio": {
"type": [
"number",
"null"
]
},
"improvement_to_land_ratio": {
"type": [
"number",
"null"
]
},
"is_redevelopment_candidate": {
"type": [
"boolean",
"null"
]
},
"building_sqft": {
"type": [
"number",
"null"
]
},
"year_built": {
"type": [
"integer",
"null"
]
},
"lot_size_acres": {
"type": [
"number",
"null"
]
},
"lot_size_sqft": {
"type": [
"number",
"null"
]
},
"bedrooms": {
"type": [
"integer",
"null"
]
},
"bathrooms": {
"type": [
"number",
"null"
]
},
"stories": {
"type": [
"number",
"null"
]
},
"units": {
"type": [
"integer",
"null"
]
},
"unit_count": {
"type": [
"integer",
"null"
]
},
"construction_type": {
"type": [
"string",
"null"
]
},
"owner_name": {
"type": [
"string",
"null"
]
},
"owner_address": {
"type": [
"string",
"null"
],
"description": "Owner's mailing street line. Read from whichever mailing column family the record fills (owner_address/… or owner_mailing_/…), one family per parcel — the same rule as GET /api/v1/parcels/{id}/owner. People data: requires an account; metered and logged (see `owner_mailing_fields`)."
},
"owner_city": {
"type": [
"string",
"null"
],
"description": "Owner's mailing city, from the same family as `owner_address`."
},
"owner_state": {
"type": [
"string",
"null"
],
"description": "Owner's mailing state, from the same family as `owner_address`."
},
"owner_zip": {
"type": [
"string",
"null"
],
"description": "Owner's mailing ZIP, from the same family as `owner_address`."
},
"ownership_type": {
"type": [
"string",
"null"
]
},
"owner_entity_type": {
"type": [
"string",
"null"
]
},
"entity_type": {
"type": [
"string",
"null"
]
},
"is_entity_owned": {
"type": [
"boolean",
"null"
]
},
"is_absentee": {
"type": [
"boolean",
"null"
]
},
"is_pe_aggregator": {
"type": [
"boolean",
"null"
]
},
"owner_occupied_flag": {
"type": [
"boolean",
"null"
]
},
"owner_occupied_flag_basis": {
"type": "string",
"description": "How the served owner_occupied_flag was derived (one rule with is_absentee, so the row never says both absentee and owner-occupied): `recomputed_from_row` = from this record's own mailing address versus its situs; `input_missing` = the record lacks those inputs and owner_occupied_flag is null. Present whenever owner_occupied_flag is served and the derivation ran."
},
"data_quality_score": {
"type": [
"number",
"null"
]
},
"flood_zone": {
"type": [
"string",
"null"
]
},
"is_sfha": {
"type": [
"boolean",
"null"
]
},
"is_opportunity_zone": {
"type": [
"boolean",
"null"
]
},
"is_justice40": {
"type": [
"boolean",
"null"
]
},
"is_flip": {
"type": [
"boolean",
"null"
]
},
"deed_count": {
"type": [
"integer",
"null"
]
},
"permit_count": {
"type": [
"integer",
"null"
]
},
"permit_count_12mo": {
"type": [
"integer",
"null"
]
},
"zoning": {
"type": [
"string",
"null"
]
},
"county_name": {
"type": [
"string",
"null"
]
},
"property_type": {
"type": [
"string",
"null"
]
},
"_guards": {
"type": "array",
"items": {
"type": "string"
}
},
"is_flip_basis": {
"type": "string"
},
"land_improvement_ratio_stored": {
"type": [
"number",
"null"
]
},
"land_improvement_ratio_basis": {
"type": "string"
},
"improvement_to_land_ratio_basis": {
"type": "string"
},
"is_absentee_basis": {
"type": "string"
},
"owner_state_norm": {
"type": [
"string",
"null"
]
},
"is_out_of_state": {
"type": [
"boolean",
"null"
]
},
"identity_gate": {
"type": "object",
"required": [
"applied",
"suppressed",
"reason",
"join_key_basis",
"twins_in_other_counties",
"coords_basis",
"unmeasured",
"served_under_doubt",
"note"
],
"properties": {
"applied": {
"type": [
"boolean",
"null"
]
},
"suppressed": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"reason": {
"type": [
"string",
"null"
]
},
"join_key_basis": {
"type": "string"
},
"twins_in_other_counties": {
"type": [
"integer",
"null"
]
},
"coords_basis": {
"type": "string"
},
"unmeasured": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"served_under_doubt": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"note": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"site_gate": {
"type": "object",
"required": [
"applied",
"suppressed",
"reason",
"labelled",
"mailing_basis",
"note"
],
"properties": {
"applied": {
"type": [
"boolean",
"null"
]
},
"suppressed": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"reason": {
"type": [
"string",
"null"
]
},
"labelled": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"mailing_basis": {
"type": "string"
},
"note": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"derived_gate": {
"type": "object",
"required": [
"applied",
"suppressed",
"recomputed",
"unevaluated",
"reason",
"note"
],
"properties": {
"applied": {
"type": [
"boolean",
"null"
]
},
"suppressed": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"recomputed": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"unevaluated": {
"type": "array"
},
"reason": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"rent_gate": {
"type": "object",
"required": [
"applied",
"suppressed",
"reason",
"rental_confidence",
"note"
],
"properties": {
"applied": {
"type": [
"boolean",
"null"
]
},
"suppressed": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
}
},
"reason": {
"type": [
"string",
"null"
]
},
"rental_confidence": {
"type": [
"string",
"null"
]
},
"note": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"county_name_basis": {
"type": "string"
},
"avm_method_family": {
"type": [
"string",
"null"
]
},
"avm_method_basis": {
"type": "string"
},
"is_flip_dominant_share_pct": {
"type": [
"number",
"null"
]
},
"price_per_sqft_basis": {
"type": "string",
"description": "What price_per_sqft divides by building_sqft, read from the row (#557): `market_value` (county market value), `avm_value` (PropRaven estimate), `total_assessed_value`, `last_sale_price`, `unreproduced` (no served value reproduces it), or `input_missing` (no building_sqft; the ratio is withheld)."
},
"market_value_basis": {
"type": "string",
"enum": [
"county_record",
"propraven_estimate",
"unavailable"
],
"description": "What `market_value` is: `county_record` (the record's market-value column as the county source published it), `propraven_estimate` (the stored value was PropRaven's own estimate, so `market_value` is null; the estimate is in `avm_value`), or `unavailable`."
},
"market_value_note": {
"type": "string",
"description": "Present when `market_value` was withheld because it was PropRaven's estimate, not the county's value."
},
"value_labels": {
"type": "object",
"properties": {
"market_value": {
"type": "string",
"const": "County market value"
},
"avm_value": {
"type": "string",
"const": "PropRaven estimate"
}
},
"required": [
"market_value",
"avm_value"
],
"additionalProperties": false,
"description": "The display label for each value field: `market_value` → \"County market value\", `avm_value` → \"PropRaven estimate\"."
},
"last_sale_date_basis": {
"type": "string",
"description": "Why `last_sale_date` holds what it does: `county_recorder_deeds` when filled from the deeds, or the site gate's reason when the record's own date was withheld (e.g. `sale_date_modal_collection_stamp`)."
},
"last_sale_date_raw": {
"type": [
"string",
"null"
],
"description": "The record's own last-sale date when the site gate withheld it (evidence, not a sale date)."
},
"last_sale_price_basis": {
"type": "string",
"description": "`county_recorder_deeds` when `last_sale_price` was filled from the deeds; `nominal_consideration_not_a_price` / `not_recorded_on_deed` when the date was filled but the deed carries no market price; `multi_parcel_unallocated` when the last sale's deed conveys more than this parcel for one price and the county did not split it (the price is null; the bundle is `last_sale_transfer_total`)."
},
"last_sale_source": {
"type": "string",
"const": "County recorder (deeds)",
"description": "Present when a last-sale field was filled from deeds: \"County recorder (deeds)\"."
},
"last_sale_transfer_total": {
"type": "number",
"description": "Present with `last_sale_price_basis: multi_parcel_unallocated`: the total consideration recorded on the last sale's deed, for every parcel it conveys, as the county recorded it. Not this parcel's price and not apportioned (a five-parcel $10M deed is $10M here on each of the five parcels)."
},
"last_sale_transfer_basis": {
"type": "string",
"enum": [
"multi_parcel_unallocated"
],
"description": "What `last_sale_transfer_total` is: `multi_parcel_unallocated` = one price for several parcels, not split by the county. Read from the deed's own fields: the sale type names a multi-parcel conveyance, or the deed carries no per-parcel `sale_price` beside a market consideration."
},
"last_sale_transfer_parcel_count": {
"type": [
"integer",
"null"
],
"description": "How many parcels the multi-parcel deed conveys. Null today: no column of the served deed row carries the count (`last_sale_transfer_parcel_count_basis`)."
},
"last_sale_transfer_parcel_count_basis": {
"type": "string",
"enum": [
"not_on_served_deed_row"
],
"description": "Why `last_sale_transfer_parcel_count` is null: `not_on_served_deed_row`."
},
"mailing_family_basis": {
"type": "string",
"enum": [
"owner_mailing"
],
"description": "Present when the owner mailing fields were read from the `owner_mailing_*` column family because the `owner_address` family is not mail-ready: `owner_mailing`."
},
"assessed_value_parts_check": {
"type": "object",
"required": [
"status",
"land_plus_improvement",
"total_assessed_value",
"difference",
"difference_pct",
"tolerance_pct"
],
"properties": {
"status": {
"type": "string",
"enum": [
"within_tolerance",
"parts_do_not_sum"
]
},
"land_plus_improvement": {
"type": "number"
},
"total_assessed_value": {
"type": "number"
},
"difference": {
"type": "number"
},
"difference_pct": {
"type": [
"number",
"null"
]
},
"tolerance_pct": {
"type": "number"
},
"note": {
"type": "string"
}
},
"additionalProperties": false,
"description": "Whether land_assessed_value + improvement_assessed_value equals total_assessed_value within 1 % (floor $1). The three values are served as recorded either way (#557)."
},
"price_per_sqft_note": {
"type": "string",
"description": "The formula behind price_per_sqft_basis, in words."
},
"entity_type_raw": {
"type": [
"string",
"null"
],
"description": "The name-pattern entity_type when it was reconciled to owner_entity_type for a government owner (#557)."
},
"entity_type_basis": {
"type": "string",
"description": "`reconciled_to_owner_entity_type` when entity_type was overridden."
},
"entity_type_note": {
"type": "string"
},
"land_use_code_raw": {
"type": [
"string",
"null"
],
"description": "The stored land_use_code when the code/description pair was swapped at source and served swapped back."
},
"land_use_desc_raw": {
"type": [
"string",
"null"
],
"description": "The stored land_use_desc when it was a code (withheld) or part of a swapped pair."
},
"land_use_basis": {
"type": "string",
"description": "`swapped_at_source`: land_use_code and land_use_desc were stored in each other's fields."
},
"land_use_desc_basis": {
"type": "string",
"description": "`code_not_description`: the source's description field holds a code (e.g. DC tax class, a second NY property-class code); withheld, kept as land_use_desc_raw."
},
"land_use_desc_note": {
"type": "string"
},
"last_sale_price_raw": {
"type": "number",
"description": "The stored sale price when it is a sentinel ($0 / $1 / $100) served as null."
},
"last_sale_price_flag": {
"type": "string",
"enum": [
"sentinel_value"
]
},
"is_redevelopment_candidate_raw": {
"type": [
"boolean",
"string",
"null"
],
"description": "The stored flag when it was served false for a government-owned parcel."
},
"is_redevelopment_candidate_basis": {
"type": "string",
"description": "`government_owner`: a government-owned parcel is not a redevelopment candidate."
}
},
"additionalProperties": false
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/propraven-com-parcel"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.