---
title: "Residential property-tax record (assessed value, annual tax, history)"
method: POST
path: "/api/locus-property-tax"
tags: ["taxes", "property", "residential", "real-estate", "public-records", "property-tax", "assessed-value", "x402", "category:economics"]
---

# Residential property-tax record (assessed value, annual tax, history)

`POST /api/locus-property-tax`

## Request

- Base URL: `https://api.locus.report`
- URL: `https://api.locus.report/api/locus-property-tax`
- Auth: API key in header `PAYMENT-SIGNATURE`

RentCast residential record for one US street address: assessment, tax, five-year history, effective rate, deeds, and owner-occupied proxy from assessor and recorder data. Not an official bill or valuation; no owner names or mailing. Commercial or uncovered is charge-free. npx @velinussage/locus-agent-skill add.

## Request body

- object: US RESIDENTIAL street address. Returns RentCast assessed value + actual annual property tax + tax history + effective rate + deed/transfer history + owner-occupied signal; commercial/uncovered addresses return a free charge-suppressed diagnostic.
  - `address` string, required: US RESIDENTIAL street address. Returns RentCast assessed value + actual annual property tax + tax history + effective rate.

## Response `200`

Successful paid artifact, or a free pre-charge diagnostic when the request is outside current coverage.

- union: A `kind`-discriminated union: `property_tax` (assessed value + actual annual tax + history + effective rate + PII-free deed/transfer history + owner-occupied homestead-proxy signal, cited to RentCast) for a residential hit, or `property_tax_diagnostic` (charged:false) for a miss/commercial/uncovered address.
  - object
    - `kind` 'property_tax', required
    - `source` 'RentCast', required
    - `situsAddress` string
    - `jurisdiction` object, required
      - `county` string
      - `state` string
    - `taxYear` number
    - `assessedValueUsd` number
    - `annualTaxUsd` number
    - `effectiveRatePct` number
    - `taxHistory` object[]
      - `year` number, required
      - `assessedValueUsd` number
      - `annualTaxUsd` number
    - `property` object
    - `transfer` object
      - `lastSaleDate` string
      - `lastSalePriceUsd` number
      - `history` object[]
        - `date` string, required
        - `event` 'sale' | 'deed_transfer' | 'refinance_or_lien' | 'assessment' | 'unknown_public_record_event'
        - `priceUsd` number
      - `ownerOccupiedIndicator` boolean
    - `citation` string, required
    - `fetchedAt` string
    - `servedFromCache` boolean, required
    - `caveats` string[], required
  - object
    - `kind` 'property_tax_diagnostic', required
    - `charged` false, required
    - `ok` true, required
    - `residentialOnly` true, required
    - `reason` string, required
    - `note` string, required

## Other responses

- `400`: Invalid request body.
- `402`: Payment Required. For x402 v2, repeat the identical request with a valid PAYMENT-SIGNATURE header (legacy X-PAYMENT is accepted for compatibility). MPP is disabled for this lifecycle-bound tool.

---

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