---
title: "Get recorded annual assessment history"
method: GET
path: "/api/v1/parcels/{id}/assessment-history"
tags: ["Parcels"]
---

# Get recorded annual assessment history

`GET /api/v1/parcels/{id}/assessment-history`

## Request

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

Returns source-backed historical assessment observations from published county history. Uses exact national parcel identity. Never substitutes the current parcel snapshot. Unknown assessment years remain null; vintage years and tax years are distinct. Missing years are not interpolated. County coverage can be partial by town and year. Unpublished coverage and failed reads return 503, not an empty history. Requires normal API or first-party session authentication.

## Path parameters

- `id` string, required

## Response `200`

Known published coverage; records may be empty for this parcel.

- AssessmentHistory
  - `canonical_id` string, required
  - `status` 'ok' | 'empty', required
  - `records` AssessmentHistoryRecord[], required
    - `assessment_year` integer, nullable, required: Source-stated year; null means unknown. Never inferred from a snapshot or capture date.
    - `tax_year` integer, nullable, required: Source-stated year; null means unknown. Never inferred from a snapshot or capture date.
    - `vintage_year` integer, nullable, required: Snapshot vintage year, not an assessment year.
    - `total_value` number, nullable, required
    - `land_value` number, nullable, required
    - `improvement_value` number, nullable, required
    - `tax_amount` number, nullable, required
    - `tax_paid_amount` number, nullable, required
    - `vintage` string, nullable, required
    - `source_url` string, nullable, required
    - `source_as_of` string, nullable, required
    - `value_basis` 'assessed' | 'appraised' | 'market' | 'taxable', required
    - `source` string, required
  - `coverage` object, required
    - `assessment_years` integer[], required
    - `tax_years` integer[], required
    - `record_count` integer, required
    - `truncated` boolean, required
    - `limit` integer, required
    - `note` string, required
    - `source_product` string, required
    - `source_version` string, required

## Other responses

- `400`: Invalid or ambiguous parcel identifier.
- `401`: Authentication required.
- `404`: Parcel UUID not found.
- `409`: Parcel UUID resolves to conflicting national identities.
- `429`: API rate limit exceeded.
- `503`: History source is unavailable or not published for this county.

---

[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)
