Get Parcel by ID
Full detail for a single Florida parcel by its internal numeric id, including the GeoJSON parcel polygon.
GET /api/v1/parcels/{id}
Returns full detail for a single parcel by its internal numeric id (the platform's surrogate key, returned in search results indirectly via the parcel record). The detail read hydrates the geometry field with the parcel's GeoJSON polygon. To look a parcel up by its county-assigned parcel id instead, use Get Parcel by County + Parcel ID.
Authentication
All endpoints share the base URL https://api.floridapropertyapi.com/v1.
curl -H "X-API-Key: fpapi_test_..." \
"https://api.floridapropertyapi.com/v1/parcels/482915"
// JavaScript (fetch)
const res = await fetch(
"https://api.floridapropertyapi.com/v1/parcels/482915",
{ 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/parcels/482915",
headers={"X-API-Key": "fpapi_test_..."},
)
res.raise_for_status()
print(res.json()["data"])
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | integer | yes | Internal numeric parcel id. |
Related
GET /api/v1/parcels/{id}/sales— the recorded sale/deed history for this parcel (sameSaleHitshape as Search Sales).
Response (200)
Object envelope { data: ParcelHit, meta }. geometry is a GeoJSON Polygon string on the detail read.
{
"data": {
"parcel_id": "192829-5040-001000-0010",
"county_slug": "hillsborough",
"county_name": "Hillsborough",
"owner_name": "SMITH JOHN A & MARY B",
"site_address_full": "123 BAYSHORE BLVD",
"site_city": "TAMPA",
"site_state": "FL",
"site_zip": "33606",
"dor_use_code": "0100",
"property_use_code": "01",
"land_use_description": "SINGLE FAMILY",
"just_value": 485000,
"assessed_value": 412300,
"taxable_value": 387300,
"year_built": 1998,
"last_sale_date": "2021-04-15",
"last_sale_price": 460000,
"centroid_lat": 27.9221,
"centroid_lng": -82.4839,
"geometry": "{\"type\":\"Polygon\",\"coordinates\":[[[-82.4842,27.9219],[-82.4836,27.9219],[-82.4836,27.9223],[-82.4842,27.9223],[-82.4842,27.9219]]]}"
},
"meta": { "request_id": "req_1234567890abcdef12345", "dataset_status": "live" }
}
Error Responses
| Status | Code | Cause |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
404 | not_found | No parcel with that id. |
429 | rate_limited | Rate limit exceeded. |
500 | internal_error | Server error — retry with backoff. |
Data Coverage
Parcel-roll coverage is live statewide across all 67 Florida counties. Sales history is importing and tax-delinquency coverage is rolling out county by county.
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.
Search Parcels
Search Florida property parcels by owner name or site address (fuzzy), county, DOR use code, city/zip, value ranges, last-sale filters, and PostGIS spatial predicates.
Get Parcel by County + Parcel ID
Look up a single Florida parcel by its natural key — county slug plus the county-assigned parcel id. Punctuation-insensitive.