Tennessee Property Records — agent interface

Parcels, current owners and ownership history for Tennessee counties, searchable by address or owner name, past or present. This page is for AI agents and the people wiring them up. It is public and needs no key. The map app for people is at https://tnpropertysearch.app/.

2,790,853parcels
5,078,571ownership records
90counties loaded
2026-11-06last checked

Connect

MCP server

Streamable HTTP at https://tnpropertysearch.app/mcp. Add it to Claude Code:

claude mcp add --transport http tn-property https://tnpropertysearch.app/mcp

Or in any MCP client config:

{
  "mcpServers": {
    "tn-property": {
      "type": "http",
      "url": "https://tnpropertysearch.app/mcp"
    }
  }
}

REST

Each tool is also GET /api/v1/<tool> with query parameters, or POST with a JSON body. Errors come back as HTTP 400 with {"error": "..."}, worded so you can fix the call.

curl 'https://tnpropertysearch.app/api/v1/search_owners?name=bailey+family+trust'
curl -X POST https://tnpropertysearch.app/api/v1/owner_portfolio -H 'Content-Type: application/json' -d '{"owner_key":"BAILEY FAMILY TRUST"}'

Bulk downloads

Every county's parcels and ownership records as gzip CSV, listed with row counts in dataset_info.exports.

curl -L -o williamson.csv.gz 'https://tnpropertysearch.app/api/v1/export?county=Williamson&dataset=parcels'

Linking people to the map

Every property in a result carries app_url. The map app also opens /?pin=<pin>, /?q=<search> and /?owner=<owner_key>.

How to use it

Tennessee property records: parcels, current owners and ownership history. Call dataset_info first to see coverage and which counties have former-owner history. Typical flows: address -> search_properties -> get_property; person or company -> search_owners -> owner_portfolio; point on a map -> property_at; market questions -> property_stats or search_ownership_records; what changed lately -> recent_changes. If a record's last_checked matters, refresh_property re-reads it from the county source. Each property includes app_url, a link that opens it in the map app for the user.

Tools

dataset_info

Start here. Describes what data exists: totals, every loaded county with parcel and ownership-record counts, how much ownership history each county has, which fields each county populates, data sources, bulk download files, query tips and usage terms.

curl 'https://tnpropertysearch.app/api/v1/dataset_info'

search_properties

Find parcels by address words, current owner name, or location (near a point or inside a small box), optionally limited to a county, city or ZIP. Returns pin, address, owner, county, location and a link to the parcel in the map app. Paginate with next_cursor.

ParameterTypeMeaning
qstringFree text matched against the address, or the current owner name.
addressstringProperty address words, any order, e.g. '1313 gallatin'.
ownerstringCurrent owner name words, e.g. 'bailey trust'. For former owners use search_owners.
countystringCounty name, or several comma-separated, e.g. 'Davidson,Williamson'.
citystringCity name (populated mainly in Davidson).
zipstringZIP code(s), comma-separated.
nearstringCenter point 'lat,lon', e.g. '36.1627,-86.7816'.
radius_mnumberRadius in meters around `near` (default 500, max 2000).
bboxstringBounding box 'west,south,east,north' in degrees (under about 5 km across).
limitintegerResults per page, 1–200 (default varies by tool).
cursorstringnext_cursor from the previous page, to fetch the next page.
sortstringrelevance (default with text), distance (default with near), address.
curl 'https://tnpropertysearch.app/api/v1/search_properties?address=1313%20gallatin&county=Davidson'

get_property

Everything known about one parcel: full parcel record, every ownership record (current and former, with acquisition dates, prices and deed references/links where the county provides them), sale history for Hamilton, and the county Register of Deeds website. Look up by pin, or by apn plus county.

ParameterTypeMeaning
pinstringParcel id as returned by other tools.
apnstringAssessor parcel number.
countystringCounty, to disambiguate apn.
include_geometrybooleanInclude the boundary rings ([lon,lat] pairs).
curl 'https://tnpropertysearch.app/api/v1/get_property?pin=78475'

property_at

Which parcel contains a latitude/longitude. Uses the actual parcel boundary, not the nearest centroid.

ParameterTypeMeaning
lat *numberLatitude.
lon *numberLongitude.
curl 'https://tnpropertysearch.app/api/v1/property_at?lat=36.1933&lon=-86.7435'

search_owners

Find people and companies by name across current AND former ownership records. Each result has an owner_key, how many properties they have ever owned and own now, their counties and first/last acquisition dates. Pass an owner_key to owner_portfolio for the full list.

ParameterTypeMeaning
name *stringName words in any order, e.g. 'john smith' or 'ryman hospitality'.
countystringLimit to county(ies).
current_onlybooleanOnly owners who currently hold property.
limitintegerOwners to return, 1–100 (default 20).
curl 'https://tnpropertysearch.app/api/v1/search_owners?name=bailey%20family%20trust'

owner_portfolio

Every property an owner (by owner_key) or a mailing address has ever been recorded on, newest first, with whether they still own it, when they acquired it and the recorded price. Includes summary counts. Searching by mailing address groups LLCs and trusts that share a mailbox.

ParameterTypeMeaning
owner_keystringowner_key from search_owners (an exact name also works; it is normalized).
mailingstringExact mailing address as stored (from a property or owner record).
countystringLimit to county(ies).
current_onlybooleanOnly properties still owned.
limitintegerRecords per page, 1–1000 (default 200).
cursorstringnext_cursor from the previous page, to fetch the next page.
curl 'https://tnpropertysearch.app/api/v1/owner_portfolio?owner_key=BAILEY%20FAMILY%20TRUST'

search_ownership_records

Ownership records (one row per owner per parcel) for an owner, owner_key, mailing address or pin, or every transfer recorded in one county over up to 3 calendar months. Filter by price, current vs former, and address; sort by date or price. Use it for questions like 'who bought in Davidson in March 2024 over $1M'.

ParameterTypeMeaning
ownerstringOwner name words.
owner_keystringExact owner_key.
mailingstringExact mailing address.
addressstringProperty address words (filters the other results).
countystringCounty (one, for date searches).
pinstringParcel pin(s), comma-separated.
date_fromstringAcquired on or after, YYYY-MM-DD.
date_tostringAcquired on or before, YYYY-MM-DD.
min_pricenumberMinimum recorded price.
max_pricenumberMaximum recorded price.
currentbooleantrue = current owners only, false = former owners only.
limitintegerResults per page, 1–200 (default varies by tool).
cursorstringnext_cursor from the previous page, to fetch the next page.
sortstringdate_desc (default), date_asc, price_desc.
curl 'https://tnpropertysearch.app/api/v1/search_ownership_records?county=Davidson&date_from=2024-01-01&date_to=2024-03-31&min_price=1000000&sort=price_desc&limit=10'

property_stats

Parcel counts, total/average/median appraised value and total acres grouped by county, city, zip, land_use, zoning, owner, mailing or subdivision, statewide or for one county. Use it for 'largest owners in Davidson' or 'value by land use'.

ParameterTypeMeaning
group_bystringField to group on.
countystringOne county (default: statewide).
limitintegerGroups to return, 1–500 (default 25).
curl 'https://tnpropertysearch.app/api/v1/property_stats?group_by=owner&county=Davidson&limit=10'

refresh_property

Re-read up to 5 parcels from their official county/state source right now (and, for Davidson, the full owner history), then return what changed. Use when last_checked is too old for the question, or the user says a record is out of date.

ParameterTypeMeaning
pins *stringParcel pin(s), comma-separated (max 5).
curl 'https://tnpropertysearch.app/api/v1/refresh_property?pins=78475'

recent_changes

Changes the update jobs detected, newest first: owner_change (with old and new owners), new_parcel, and retired (parcel no longer listed by the county). Filter by county, kind, owner name, date or area.

ParameterTypeMeaning
countystringCounty(ies).
kindstringKind(s), comma-separated: owner_change, new_parcel, retired.
ownerstringOld or new owner name words.
sincestringDetected on or after (YYYY-MM-DD).
untilstringDetected on or before (YYYY-MM-DD).
nearstringCenter point 'lat,lon', e.g. '36.1627,-86.7816'.
radius_mnumberRadius in meters around `near` (default 500).
bboxstringBounding box 'west,south,east,north'.
limitintegerResults per page, 1–200 (default varies by tool).
cursorstringnext_cursor from the previous page, to fetch the next page.
curl 'https://tnpropertysearch.app/api/v1/recent_changes?county=Davidson&kind=owner_change&limit=10'

update_status

How fresh the data is: when each county was last checked, the most recent update runs with their status and counts, what is in progress, and the schedule.

curl 'https://tnpropertysearch.app/api/v1/update_status'

Try it

Pick a tool and press Run.

Fields

parcels

pinParcel id used by every tool. Davidson pins are numeric; others are prefixed (wmsn-, hamilton-, montgomery-, tn-<county id>-).
apnAssessor parcel number as the county formats it.
addressProperty (situs) address.
ownerCurrent owner as recorded.
ownersAll current co-owners, where the source lists several.
mailingOwner's mailing address; groups entities that share a mailbox.
county, city, zipLocation. city and zip are filled mainly in Davidson.
appraisedTotal appraised value (USD), where the county publishes it.
acresLot size.
land_use, zoningAssessor land use and zoning code (Davidson).
own_date, sale_price, deedDate, price and deed reference of the latest transfer, where available.
salesHamilton only: every recorded sale with date, price, deed book and page.
subdivision, lot, legalLegal description fields, where available.
locationCentroid {lat, lon}.
geometryBoundary {rings: [[[lon, lat], ...]]}; returned only when include_geometry=true.
last_checkedWhen this parcel was last confirmed against its county source.
history_tier, app_urlHow much ownership history this county has, and a link to the parcel in the map app.

ownership

pin, county, addressThe parcel this record belongs to.
ownerOwner name as recorded.
owner_keyNormalized owner name (upper case, punctuation removed). Exact-match key for owner_portfolio.
from_dateDate this owner acquired the parcel (YYYY-MM-DD).
priceRecorded consideration for that transfer.
deed, deed_urlDeed reference, and a link to the deed image where the county offers one (Davidson).
is_current, statusWhether this owner still holds the parcel (Current / Historical).
mailingOwner's mailing address on that record.
sourceSet when a record came from an archive (e.g. county_2022_archive).

Coverage

CountyParcelsOwner recordsFormer ownersHistoryFieldsChecked
Davidson287,8411,509,1431,221,917fullacres, appraised, city, land_use, mailing, zip, zoning2026-11-06
Hamilton163,067193,40910salesacres, appraised, mailing, sales2026-11-01
Williamson106,285203,53942,796partialacres, appraised, mailing2026-11-06
Montgomery92,623139,5552currentmailing2026-11-06
Sumner86,664133,8090currentacres2026-11-06
Sullivan78,822112,2960currentacres2026-11-01
Sevier70,70594,5830currentacres2026-11-01
Wilson66,898106,1300currentacres2026-11-01
Blount66,48774,7560currentacres2026-11-01
Cumberland65,797103,1160currentacres2026-11-01
Washington61,00995,5160currentacres2026-11-01
Maury52,83969,7570currentacres2026-11-01
Bradley51,02565,0200currentacres2026-11-01
Madison49,51658,2560currentacres2026-11-01
Greene43,05567,6920currentacres2026-11-01
Putnam38,44560,5340currentacres2026-11-01
Robertson37,76659,7060currentacres2026-11-01
Hawkins36,53945,5930currentacres2026-11-01
Loudon36,52953,2780currentacres2026-11-01
Anderson36,44657,3720currentacres2026-11-06
Roane35,86440,0550currentacres2026-11-01
Jefferson34,86943,8170currentacres2026-11-01
Coffee32,72443,1310currentacres2026-11-01
Carter32,00749,1380currentacres2026-11-01
McMinn31,39248,5730currentacres2026-11-01
Hamblen30,92337,6100currentacres2026-11-01
Gibson30,84144,2520currentacres2026-11-01
Tipton30,13546,6390currentacres2026-11-01
Monroe30,12844,1750currentacres2026-11-01
Hardin28,58433,0400currentacres2026-11-01
Dickson28,41537,4340currentacres2026-11-01
Campbell27,47236,9200currentacres2026-11-01
Franklin26,82842,3590currentacres2026-11-01
Fayette26,34840,6210currentacres2026-11-01
Henry25,98635,4880currentacres2026-11-01
Lawrence25,77232,2510currentacres2026-11-01
Cocke25,26432,5090currentacres2026-11-01
Bedford24,04833,5050currentacres2026-11-01
Warren23,83936,9800currentacres2026-11-01
Claiborne22,53028,3120currentacres2026-11-01
Marion22,26334,0480currentacres2026-11-01
Cheatham21,78731,2680currentacres2026-11-01
Dyer21,59532,2960currentacres2026-11-01
Rhea21,46833,9070currentacres2026-11-01
Hardeman20,29928,4730currentacres2026-11-01
Weakley20,18427,7250currentacres2026-11-01
Obion19,99829,8920currentacres2026-11-01
Lincoln19,94631,3300currentacres2026-11-01
Carroll19,90829,2060currentacres2026-11-01
Marshall19,51126,1100currentacres2026-11-01
McNairy19,25824,6280currentacres2026-11-01
Giles18,82826,3580currentacres2026-11-01
DeKalb18,29428,6410currentacres2026-11-01
Henderson18,06123,6320currentacres2026-11-01
White17,82822,6370currentacres2026-11-01
Benton16,53219,9200currentacres2026-11-01
Fentress16,42926,0280currentacres2026-11-01
Grainger15,60919,7250currentacres2026-11-01
Overton15,53924,9670currentacres2026-11-01
Scott15,35919,9510currentacres2026-11-01
Union14,73222,8130currentacres2026-11-01
Macon14,42118,0330currentacres2026-11-01
Morgan14,28018,3060currentacres2026-11-01
Johnson14,16720,7680currentacres2026-11-01
Decatur14,11821,8250currentacres2026-11-01
Lauderdale13,79315,8410currentacres2026-11-01
Humphreys13,61618,7830currentacres2026-11-01
Polk13,05120,6360currentacres2026-11-01
Wayne13,00018,7520currentacres2026-11-01
Sequatchie12,65219,0310currentacres2026-11-01
Stewart12,51419,9230currentacres2026-11-01
Smith12,09216,9700currentacres2026-11-01
Grundy11,94718,4090currentacres2026-11-01
Haywood11,38414,4370currentacres2026-11-01
Bledsoe11,37615,6540currentacres2026-11-01
Unicoi10,28916,1400currentacres2026-11-01
Crockett10,15415,3130currentacres2026-11-01
Perry9,74714,8100currentacres2026-11-01
Meigs9,48414,3400currentacres2026-11-01
Jackson9,02313,7760currentacres2026-11-01
Lewis8,69011,3240currentacres2026-11-01
Cannon8,50710,5870currentacres2026-11-01
Van Buren7,33111,6140currentacres2026-11-01
Clay7,1309,0490currentacres2026-11-01
Houston6,6539,0080currentacres2026-11-01
Hancock6,1379,0770currentacres2026-11-01
Pickett5,9229,0740currentacres2026-11-01
Trousdale5,4678,1960currentacres2026-11-01
Moore4,2566,6770currentacres2026-11-06
Lake3,8975,3530currentacres2026-11-06

Sources and terms

Public records published for reference. The state Comptroller layer is published for non-commercial use only; do not resell this data.