Parcels

Get parcel by ID

Retrieve a single parcel by its composite ID (county_fips:parcel_id).

get/api/v1/parcels/{id}

Request

  • Base URL: https://propraven.com
  • URL: https://propraven.com/api/v1/parcels/{id}
  • Auth: HTTP bearer

Path parameters

idstring required
Example:37:119:12104406

Composite parcel identifier in the format county_fips:parcel_id (e.g., 37:119:12104406).

Response

Parcel found.

idstring uuid required

PropRaven parcel UUID. Accepted by GET /parcels/{id}.

county_fipsstring required

3-digit within-state county FIPS code (the 5-digit form is state_fips + county_fips).

state_fipsstring required

2-digit state FIPS code.

parcel_idstring required

County-assigned parcel identifier (APN as the county publishes it). The canonical id is state_fips:county_fips:parcel_id.

addressstring nullable required
normalized_addressstring nullable required
citystring nullable required
statestring nullable required

USPS 2-letter state code of state_fips ("37" → "NC"). Always a string; the 2-digit FIPS is state_fips.

zipstring nullable required
zip5string nullable required
zip_plus4string nullable required
latitudenumber nullable required
longitudenumber nullable required
land_use_codestring nullable required
land_use_descstring nullable required
total_assessed_valuenumber nullable required
land_assessed_valuenumber nullable required
improvement_assessed_valuenumber nullable required
last_sale_pricenumber nullable required

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 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_datestring date nullable required

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_valuenumber nullable required

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_valuenumber nullable required

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_confidencestring nullable required
avm_methodstring nullable required
tax_amountnumber nullable required
tax_yearinteger nullable required
deal_scorenumber nullable required

Composite deal opportunity score from 0 to 100.

price_per_sqftnumber nullable required
comp_sale_pricenumber nullable required
comp_sale_datestring nullable required
comp_similarity_scorenumber nullable required
estimated_monthly_rentnumber nullable required
estimated_annual_rentnumber nullable required
rent_yield_pctnumber nullable required
rental_confidencestring nullable required
gross_rent_multipliernumber nullable required
land_improvement_rationumber nullable required
improvement_to_land_rationumber nullable required
is_redevelopment_candidateboolean nullable required
building_sqftnumber nullable required
year_builtinteger nullable required
lot_size_acresnumber nullable required
lot_size_sqftnumber nullable required
bedroomsinteger nullable required
bathroomsnumber nullable required
storiesnumber nullable required
unitsinteger nullable required
unit_countinteger nullable required
construction_typestring nullable required
owner_namestring nullable required
owner_addressstring nullable required

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_citystring nullable required

Owner's mailing city, from the same family as owner_address.

owner_statestring nullable required

Owner's mailing state, from the same family as owner_address.

owner_zipstring nullable required

Owner's mailing ZIP, from the same family as owner_address.

ownership_typestring nullable required
owner_entity_typestring nullable required
entity_typestring nullable required
is_entity_ownedboolean nullable required
is_absenteeboolean nullable required
is_pe_aggregatorboolean nullable required
owner_occupied_flagboolean nullable required
owner_occupied_flag_basisstring

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_scorenumber nullable required
flood_zonestring nullable required
is_sfhaboolean nullable required
is_opportunity_zoneboolean nullable required
is_justice40boolean nullable required
is_flipboolean nullable required
deed_countinteger nullable required
permit_countinteger nullable required
permit_count_12mointeger nullable required
zoningstring nullable required
county_namestring nullable required
property_typestring nullable required
_guardsstring[] required
is_flip_basisstring required
land_improvement_ratio_storednumber nullable required
land_improvement_ratio_basisstring required
improvement_to_land_ratio_basisstring required
is_absentee_basisstring required
owner_state_normstring nullable required
is_out_of_stateboolean nullable required
county_name_basisstring required
avm_method_familystring nullable required
avm_method_basisstring required
is_flip_dominant_share_pctnumber nullable
price_per_sqft_basisstring

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'county_record' | 'propraven_estimate' | 'unavailable'

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_notestring

Present when market_value was withheld because it was PropRaven's estimate, not the county's value.

last_sale_date_basisstring

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_rawstring nullable

The record's own last-sale date when the site gate withheld it (evidence, not a sale date).

last_sale_price_basisstring

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.

last_sale_source'County recorder (deeds)'

Present when a last-sale field was filled from deeds: "County recorder (deeds)".

mailing_family_basis'owner_mailing'

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.

price_per_sqft_notestring

The formula behind price_per_sqft_basis, in words.

entity_type_rawstring nullable

The name-pattern entity_type when it was reconciled to owner_entity_type for a government owner (#557).

entity_type_basisstring

reconciled_to_owner_entity_type when entity_type was overridden.

entity_type_notestring
land_use_code_rawstring nullable

The stored land_use_code when the code/description pair was swapped at source and served swapped back.

land_use_desc_rawstring nullable

The stored land_use_desc when it was a code (withheld) or part of a swapped pair.

land_use_basisstring

swapped_at_source: land_use_code and land_use_desc were stored in each other's fields.

land_use_desc_basisstring

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_notestring
last_sale_price_rawnumber

The stored sale price when it is a sentinel ($0 / $1 / $100) served as null.

last_sale_price_flag'sentinel_value'
is_redevelopment_candidate_basisstring

government_owner: a government-owned parcel is not a redevelopment candidate.

Example response

{
  "county_fips": "119",
  "state_fips": "37",
  "parcel_id": "12104406",
  "address": "123 Main St",
  "city": "Raleigh",
  "state": "NC",
  "zip": "27601",
  "latitude": 35.7796,
  "longitude": -78.6382,
  "last_sale_price": 295000,
  "last_sale_date": "2021-06-15",
  "market_value": 310000,
  "deal_score": 72,
  "year_built": 1998,
  "owner_name": "SMITH JOHN A",
  "zoning": "R-6",
  "county_name": "Wake"
}

Changes

No recorded changes to this operation across all 1 revision of this API.