Florida Property API
Endpoints

Tax Delinquencies by Parcel

All delinquent-tax / tax-certificate records for a single county parcel id. Returns an empty list (not 404) when the parcel is current on taxes.

GET /api/v1/tax-delinquencies/by-parcel

Return every delinquent-tax / tax-certificate record tied to a single county parcel id. This endpoint never 404s or 500s on a coverage gap: it returns an empty data array when the county has no delinquency feed, or when the parcel is current on its taxes.

Authentication

All endpoints share the base URL https://api.floridapropertyapi.com/v1. Send your API key in the X-API-Key header.

curl -H "X-API-Key: fpapi_test_..." \
  "https://api.floridapropertyapi.com/v1/tax-delinquencies/by-parcel?county=polk&parcel_id=262813-000000-012345"
// JavaScript (fetch)
const res = await fetch(
  "https://api.floridapropertyapi.com/v1/tax-delinquencies/by-parcel?county=polk&parcel_id=262813-000000-012345",
  { headers: { "X-API-Key": "fpapi_test_..." } },
);
const body = await res.json();
console.log(body.data);
# Python (requests)
import requests

res = requests.get(
    "https://api.floridapropertyapi.com/v1/tax-delinquencies/by-parcel",
    params={"county": "polk", "parcel_id": "262813-000000-012345"},
    headers={"X-API-Key": "fpapi_test_..."},
)
res.raise_for_status()
print(res.json()["data"])

Query Parameters

NameTypeRequiredDefaultDescription
parcel_idstringyesCounty-assigned parcel id.
countystringnoCounty slug to scope the lookup (recommended).
limitintegerno25Page size.
offsetintegerno0Pagination offset.

Response (200)

List envelope { data: DelinquencyHit[], pagination, meta } — same row shape as Search Tax Delinquencies.

{
  "data": [
    {
      "id": "txd_5b1e7c44",
      "county_slug": "polk",
      "county_parcel_id": "262813-000000-012345",
      "tax_year": 2023,
      "status": "certificate_sold",
      "delinquent_amount": 3284.17,
      "total_due": 3512.44,
      "certificate_number": "2024-04821",
      "certificate_sale_date": "2024-06-01",
      "owner_name": "DOE JANE",
      "site_address_full": "456 ORANGE AVE, LAKELAND FL 33801",
      "source_vendor": "LienHub"
    }
  ],
  "pagination": { "limit": 25, "offset": 0, "total": 1, "has_more": false },
  "meta": { "request_id": "req_1234567890abcdef12345", "dataset_status": "live" }
}

A current parcel (or an uncovered county) returns { "data": [], "pagination": { "limit": 25, "offset": 0, "total": 0, "has_more": false }, "meta": { ... } }.

Error Responses

StatusCodeCause
400bad_requestMissing parcel_id.
401unauthorizedMissing or invalid API key.
429rate_limitedRate limit exceeded.
500internal_errorServer error — retry with backoff.

Data Coverage

Tax-delinquency coverage is rolling out county by county. This endpoint returns an empty data array (never a 404) when the county has no delinquency feed loaded yet or the parcel is current on its taxes. See Tax-Delinquency Sources for per-county coverage.

Rate Limits

Every /api/v1/* response (including 429) carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers, plus the IETF RateLimit structured field. See Rate Limits for per-tier quotas and backoff guidance.

On this page