tracts.ai
Property Data API

County-direct property data, one call away.

Owner, mailing, valuation and parcel records for 2,500+ US counties — current, with full lineage. By API or bulk file.

  • 2,500+ counties
  • county-direct
  • source + pull date on every record
api.tracts.ai · REST · v1
200 OK · 24ms
GET https://api.tracts.ai/v1/parcels
    ?county=12057&apn=U-29-28-19-3CF-000001
Authorization: Bearer tk_live_••••••••
{
"apn": "U-29-28-19-3CF-000001",
"county_name": "Hillsborough County, FL",
"situs_address": "4821 N ROME AVE, TAMPA FL 33603",
"owner_name": "MERIDIAN HOLDINGS LLC",
"mailing_address": "PO BOX 4821, ATLANTA GA 30301",
"land_use": "Single Family Residential",
"year_built": 1964,
"living_area_sqft": 1284,
"assessed_value": 148200,
"market_value": 193500,
"last_sale_date": "2009-03-12",
"last_sale_price": 87000,
"absentee_owner": true,
"out_of_state_owner": true,
"_source": "Hillsborough Co. Property Appraiser",
"_pulled_at": "2026-06-21"
}
Schema

Every field, documented.

One consistent schema across all 2,500+ counties. Two lineage fields — _source and _pulled_at — stamped on every record.

apnstring

Assessor Parcel Number — county-assigned unique parcel ID

owner_namestring

Recorded owner name from county assessor or tax roll

mailing_addressstring

Owner mailing address — may differ from situs address

situs_addressstring

Physical property address from county records

land_usestring

County land-use classification (SFR, MFR, commercial, vacant…)

year_builtinteger

Year of construction per county assessor

living_area_sqftinteger

Heated/living area in square feet

assessed_valueinteger

County assessed value in USD

market_valueinteger

County market/just value in USD

last_sale_datedate

Most recent recorded deed transfer date

last_sale_priceinteger

Recorded sale price in USD

latitudefloat

Parcel centroid latitude (WGS 84)

longitudefloat

Parcel centroid longitude (WGS 84)

absentee_ownerboolean

Mailing address differs from situs address

out_of_state_ownerboolean

Owner mailing state differs from property state

_sourcestring

Originating county authority name

⌖ lineage field

_pulled_atdate

Date this record was last pulled from the county

⌖ lineage field

Coverage

2,500+ counties and growing.

2,500+US counties
and expanding continuously
67 / 67Florida counties
complete statewide coverage
~10.8MFlorida parcels
owner · mailing · valuation

Florida is complete. Other states are added continuously — coverage list available on request.

Why tracts

Data, not leads.
Source, not a reseller.

Aggregators sell you a stale tape of unknown vintage with no paper trail. tracts stamps every record with the county it came from and the exact date we pulled it. You know what you have.

County-direct, not a reseller

Records come from county assessors, GIS offices, and tax rolls — not from aggregators or resold tapes. The originating authority is stamped on every row.

Full lineage on every record

Every record carries _source and _pulled_at so you know the originating authority and exactly how fresh the data is. No mystery about provenance.

Current data, not stale tape

We re-pull counties on a rolling schedule — not a once-a-year annual tape. Coverage dates are visible and honest per county.

API + bulk — your workflow

Query up to 1,000 records per API call, or request a full county bulk file. CSV or JSON. No proprietary format or platform lock-in.

shell · curlAuthorization: Bearer
# Fetch a county batch
curl \
  -X GET "https://api.tracts.ai/v1/parcels
    ?county=12057&limit=100" \
  -H "Authorization: Bearer $TRACTS_API_KEY" \
  -H "Accept: application/json"

# Response headers
X-Total-Count: 891432
X-Rate-Limit-Remaining: 9900
Built for developers

REST API with clean ergonomics.

  • Simple auth

    Bearer token in the Authorization header. API keys issued per account with configurable scope.

  • Up to 1,000 records per request

    Paginate with limit and offset. X-Total-Count tells you the full depth of any county.

  • JSON or CSV

    Accept: application/json for streaming responses; request bulk CSV files for county-wide exports.

  • Bulk files on request

    Need a full county? Request a bulk export — delivered as gzipped CSV or newline-delimited JSON.

Get started

Get the data.

Tell us your use case and we'll set you up with a key and pricing.

Get API access

Tell us your use case and we'll set you up with a key and pricing.

Data, not leads. No spam — we only reach out about your request.