---
title: "Single parcel by spine key. Point lookup. Charges record_reveal (1)."
method: GET
path: "/v1/parcels/{fips}/{parcel_id}"
tags: ["query"]
---

# Single parcel by spine key. Point lookup. Charges record_reveal (1).

`GET /v1/parcels/{fips}/{parcel_id}`

## Request

- Base URL: `https://api.premiumpin.com`
- URL: `https://api.premiumpin.com/v1/parcels/{fips}/{parcel_id}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `pp_session`

An absent county table returns 400 county-not-held, distinct from the existing suppression-sensitive 404 for a parcel not found in a held county. MCP batch propagates county-not-held rather than converting it to found=false.

## Path parameters

- `fips` string, required
- `parcel_id` string, required

## Response `200`

one parcel record (projected, PII-gated, suppression-checked)

- object
  - `field_notes` FieldSourceNote[]
    - `capture_receipt_sha256` string, required
    - `effective_year` integer, nullable, required: Null when the field's effective year is unknown.
    - `field` string, required
    - `fieldbook_sha256` string, required
    - `fips` string, required
    - `parcel_universe_year` integer, required: Dataset membership year, not field effective year.
    - `release_manifest_sha256` string, required
    - `source_field` string, required
    - `source_url` string, uri, required
    - `stage_sha256` string, required
    - `warning` string, required
  - `parcel` Parcel: All canonical parcel fields. The build step supplies nullable typed properties.
    - `access_type` string, nullable
    - `acres` number, nullable
    - `ag_value` number, nullable
    - `assessed_value` number, nullable
    - `bedrooms` integer, nullable
    - `block` string, nullable
    - `building_type` string, nullable
    - `calc_area` number, nullable
    - `census_tract` string, nullable
    - `census_tract_name` string, nullable
    - `cooling` string, nullable
    - `county_fips` string, nullable
    - `county_name` string, nullable
    - `county_sub_fips` string, nullable
    - `county_sub_name` string, nullable
    - `deed_book` string, nullable
    - `deed_instrument` string, nullable
    - `deed_page` string, nullable
    - `elev_avg` number, nullable
    - `elev_max` number, nullable
    - `elev_min` number, nullable
    - `epa_dfr_url` string, nullable
    - `epa_frs_id` string, nullable
    - `fips` string, nullable
    - `fireplaces` integer, nullable
    - `firm_date` string, date, nullable
    - `firm_id` string, nullable
    - `flood_zone` string, nullable
    - `foundation` string, nullable
    - `full_baths` integer, nullable
    - `half_baths` integer, nullable
    - `heat_fuel` string, nullable
    - `heating` string, nullable
    - `improvement_value` number, nullable
    - `iucn_class` string, nullable
    - `land_use` string, nullable
    - `land_use_desc` string, nullable
    - `land_value` number, nullable
    - `legal_desc` string, nullable
    - `living_area_sqft` number, nullable
    - `lot` string, nullable
    - `market_value` number, nullable
    - `naics_code` string, nullable
    - `num_buildings` integer, nullable
    - `num_floors` integer, nullable
    - `num_units` integer, nullable
    - `owner_address` string, nullable
    - `owner_city` string, nullable
    - `owner_country` string, nullable
    - `owner_name` string, nullable
    - `owner_state` string, nullable
    - `owner_type` string, nullable
    - `owner_zip` string, nullable
    - `parcel_id` string, nullable
    - `parcel_id_alt` string, nullable
    - `parcel_id_original` string, nullable
    - `parcel_id_original_alt` string, nullable
    - `parcel_type` string, nullable
    - `parent_parcel_id` string, nullable
    - `permit_caa` string, nullable
    - `permit_cwa` string, nullable
    - `permit_rcra` string, nullable
    - `place_name` string, nullable
    - `place_type` string, nullable
    - `plss_desc` string, nullable
    - `prior_deed_book` string, nullable
    - `prior_deed_page` string, nullable
    - `quarter_section` string, nullable
    - `range` string, nullable
    - `roof_cover` string, nullable
    - `sale_date` string, date, nullable
    - `sale_price` number, nullable
    - `section` string, nullable
    - `siding` string, nullable
    - `site_address` string, nullable
    - `site_city` string, nullable
    - `site_state` string, nullable
    - `site_zip` string, nullable
    - `source_updated` string, date, nullable
    - `source_vintage` string, nullable
    - `stack_id` string, nullable
    - `state_fips` string, nullable
    - `static_bfe` number, nullable
    - `tax_account` string, nullable
    - `tax_district` string, nullable
    - `tax_year` integer, nullable
    - `township` string, nullable
    - `year_built` integer, nullable
    - `zoning_code` string, nullable
    - `zoning_desc` string, nullable
    - `zoning_subtype` string, nullable
  - `store_version` string

## Other responses

- `400`: bad filter / no scope / unknown field or op / malformed cursor / county-not-held for wholly unloaded search or absent lookup table
- `401`: missing or invalid API key / session
- `402`: metered quota exhausted (hard cap). Includes upgrade_url.
- `404`: parcel or key not found
- `429`: too many requests; retry after the window

---

[API](https://skmtc.dev/premiumpin/apis/premiumpin-property-records-api.md) · [All operations](https://skmtc.dev/premiumpin/apis/premiumpin-property-records-api/llms.txt) · [OpenAPI document](https://skmtc.dev/premiumpin/apis/premiumpin-property-records-api/revisions/18f5ec1c629c?raw)
