---
title: "Neighborhood distress index for a parcel's tract and block group"
method: GET
path: "/api/v1/parcels/{id}/distress"
tags: ["Parcels"]
---

# Neighborhood distress index for a parcel's tract and block group

`GET /api/v1/parcels/{id}/distress`

## Request

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

The neighborhood distress index rows of the parcel's census tract and block group: area-level, describing the neighborhood, not this property. When the parcel has no block group on record, `block_group` is null with `block_group_reason` and the tract is returned alone. Requires an account (API key, MCP OAuth token or signed-in session) and is metered like the other analytics reads; an anonymous caller gets 401 and nothing is read. Before the index's first load the answer is 503 `distress_index_unavailable`.

## Path parameters

- `id` string, required

## Response `200`

The parcel's tract and block group rows.

- ParcelDistress: The index for the parcel's census tract and block group (area-level, not the property). A null side carries its reason.
  - `schema_version` 'neighborhood-distress-v1', required
  - `layer_version` string, required
  - `built_at` string, nullable, required
  - `method` DistressMethod, required
    - `version` string, required
    - `weights` object, required: The published component weights.
    - `missing_components` string, required
    - `scale` string, required
    - `score` string, required
    - `score_local` string, required
  - `notes` string[], required
  - `sources` DistressSource[], required
    - `component` string, required
    - `kind` string, required
    - `native_geo_level` string, required
    - `weight` number, nullable, required
    - `source_id` string, required
    - `title` string, required
    - `publisher` string, required
    - `source_url` string, required
    - `as_of` string, date, nullable, required
    - `vintage` string, required
    - `method_note` string, required
    - `coverage_note` string, required
    - `n_tracts_with_value` integer, required
    - `n_block_groups_with_value` integer, required
  - `coverage` DistressCoverage[], required
    - `county_fips` string, required
    - `state_fips` string, required
    - `component` string, required
    - `n_tracts` integer, required
    - `n_tracts_with_value` integer, required
    - `n_block_groups` integer, required
    - `n_block_groups_with_value` integer, required
    - `note` string, nullable, required
  - `parcel` object, required
    - `id` string, required
    - `county_fips` string, required
  - `tract` DistressArea, required: The index for one census tract or block group. Area-level: it describes the neighborhood, never an address or a person.
    - `geo_level` 'tract' | 'block_group', required
    - `geoid` string, required
    - `state_fips` string, required
    - `county_fips` string, required
    - `tract_geoid` string, required
    - `score` number, nullable, required: 0-100, higher = more distressed; national components only. Null with null_reason when the core ACS components are missing.
    - `score_percentile` number, nullable, required
    - `score_local` number, nullable, required: National plus local components (tax delinquency, code violations, foreclosure) where a local source covers the area; null where none does (never a copy of score).
    - `score_local_reason` string, nullable, required
    - `weight_coverage` number, nullable, required: Share of the published national weight whose component has a value here (1 = all present).
    - `local_weight_coverage` number, nullable, required
    - `n_components` integer, nullable, required
    - `missing_components` string[], required
    - `null_reason` string, nullable, required
    - `as_of_min` string, date, nullable, required
    - `as_of_max` string, date, nullable, required
    - `components` DistressComponent[], required
      - `component` string, required
      - `label` string, required
      - `kind` string, nullable, required: national | local | flag
      - `status` 'ok' | 'missing' | 'suppressed' | 'not_covered' | 'inherited_tract', required
      - `value` number, nullable, required
      - `unit` string, nullable, required
      - `percentile` number, nullable, required: National percentile of the value (0-100); null when there is no value.
      - `weight` number, nullable, required
      - `geo_level` string, nullable, required: tract | block_group | county: the level the source publishes.
      - `source_id` string, nullable, required
      - `publisher` string, nullable, required
      - `source_url` string, nullable, required
      - `as_of` string, date, nullable, required
      - `note` string, required
  - `block_group` DistressArea, required: The index for one census tract or block group. Area-level: it describes the neighborhood, never an address or a person.
    - `geo_level` 'tract' | 'block_group', required
    - `geoid` string, required
    - `state_fips` string, required
    - `county_fips` string, required
    - `tract_geoid` string, required
    - `score` number, nullable, required: 0-100, higher = more distressed; national components only. Null with null_reason when the core ACS components are missing.
    - `score_percentile` number, nullable, required
    - `score_local` number, nullable, required: National plus local components (tax delinquency, code violations, foreclosure) where a local source covers the area; null where none does (never a copy of score).
    - `score_local_reason` string, nullable, required
    - `weight_coverage` number, nullable, required: Share of the published national weight whose component has a value here (1 = all present).
    - `local_weight_coverage` number, nullable, required
    - `n_components` integer, nullable, required
    - `missing_components` string[], required
    - `null_reason` string, nullable, required
    - `as_of_min` string, date, nullable, required
    - `as_of_max` string, date, nullable, required
    - `components` DistressComponent[], required
      - `component` string, required
      - `label` string, required
      - `kind` string, nullable, required: national | local | flag
      - `status` 'ok' | 'missing' | 'suppressed' | 'not_covered' | 'inherited_tract', required
      - `value` number, nullable, required
      - `unit` string, nullable, required
      - `percentile` number, nullable, required: National percentile of the value (0-100); null when there is no value.
      - `weight` number, nullable, required
      - `geo_level` string, nullable, required: tract | block_group | county: the level the source publishes.
      - `source_id` string, nullable, required
      - `publisher` string, nullable, required
      - `source_url` string, nullable, required
      - `as_of` string, date, nullable, required
      - `note` string, required
  - `tract_reason` string, nullable, required
  - `block_group_reason` string, nullable, required
  - `placement` object, required: How the parcel was placed. point_in_polygon: its own coordinates inside the index's TIGER 2024 block groups. parcel_record: the served record's tract / block group, used only when it names a tract in the parcel's own county. null: neither was usable (see tract_reason). A tract outside the parcel's county is never returned.
    - `method` 'point_in_polygon' | 'parcel_record' | 'null', nullable, required
    - `note` string, nullable, required

## Other responses

- `400`: Invalid parameter (`code: invalid_parameter`).
- `401`: Missing, malformed or invalid credential.
- `404`: No served parcel has this identity (`code: parcel_not_found`).
- `405`: The endpoint exists but does not support this method. `Allow` lists the methods it does.
- `429`: Rate limit exceeded.
- `500`: Unexpected server error. The body never carries database or driver text.
- `503`: The data behind this endpoint is temporarily unavailable. Honour `Retry-After` when present.

---

[API](https://skmtc.dev/propraven/apis/propraven-api.md) · [All operations](https://skmtc.dev/propraven/apis/propraven-api/llms.txt) · [OpenAPI document](https://skmtc.dev/propraven/apis/propraven-api/revisions/37f8158c4eda?raw)
