PropertyTensor API
A single REST API for US property data: valuations, profiles, comparables, active listings, and hyperlocal market analytics. Every response is predictable JSON (or a PDF for reports), so there is nothing to scrape or parse.
Base URL
All requests go to
https://api.propertytensor.comAuthentication
Send your key on every request in the header
X-API-Key: your_api_key_hereAddresses In, Data Out
Property endpoints take a plain address and resolve it automatically — no IDs or URLs required.
Conventions
- All endpoints accept
GET(parameters as query string). Property endpoints also acceptPOSTwith a JSON body. - Property-level endpoints take an
address. It is resolved to the best matching property automatically. - Responses are JSON, except
/api/v1/report/soldwhich returns a PDF. - Errors return a JSON body
{ "message": "..." }with an appropriate status:400(missing/invalid parameter),404(address not found),401(bad API key).
Endpoints
/api/v1/properties/valuationProperty Valuation (AVM)
Automated valuation for a single property. Returns the estimated market value plus a high/low range, forecast standard deviation (FSD), and a 0-100 confidence score.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| address | string | required | Full property address (street, city, state, ZIP). |
curl -X GET \ "https://api.propertytensor.com/api/v1/properties/valuation?address=915 Stefan Walk, Cumming, GA 30040" \ -H "X-API-Key: your_api_key_here"
{
"value": 458814,
"value_low": 438741,
"value_high": 479805,
"fsd": 0.0447,
"confidence": "high",
"confidence_score": 96,
"as_of": "2026-07-06"
}/api/v1/properties/profile/coreCore Property Profile
The essential facts for a property: beds, baths, living area, year built, lot size, property type, geolocation, and assigned schools.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| address | string | required | Full property address (street, city, state, ZIP). |
curl -X GET \ "https://api.propertytensor.com/api/v1/properties/profile/core?address=915 Stefan Walk, Cumming, GA 30040" \ -H "X-API-Key: your_api_key_here"
{
"street": "915 STEFAN WALK",
"city": "CUMMING",
"state": "GA",
"zipcode": "30040",
"beds": 3.0,
"baths": 2.5,
"sqft": 2607.0,
"yearBuilt": 1999.0,
"lotSize": 33105.0,
"propertyType": "Single Family",
"latitude": "34.2230649",
"longitude": "-84.118296",
"Subdivision": "PARKSIDE AT PILGRIM MILL",
"elementary_school": ["Cumming Elementary School"],
"middle_school": ["Otwell Middle School"],
"high_school": ["Forsyth Central High School"]
}/api/v1/properties/profile/detailDetailed Property Profile
The full structured record for a property (150+ fields): sold history, tax history and assessment, HOA, zoning, construction and systems, interior/exterior features, and amenities.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| address | string | required | Full property address (street, city, state, ZIP). |
curl -X GET \ "https://api.propertytensor.com/api/v1/properties/profile/detail?address=915 Stefan Walk, Cumming, GA 30040" \ -H "X-API-Key: your_api_key_here"
{
"street": "915 Stefan Walk",
"city": "Cumming",
"state": "GA",
"zipcode": "30040",
"beds": "3",
"baths": "2.5",
"sqft": "2607",
"yearBuilt": "1999",
"last_sold_price": 372000,
"last_sold_date": "2019-08-30",
"sold_history_ts": [ /* ... */ ],
"tax_history_ts": [ /* ... */ ],
"hoa_fee": "550",
"county": "Forsyth",
"zoning_code": "RES",
"heating_type": "Forced Air",
"roof_type": "Composition"
/* 150+ fields total */
}/api/v1/listingsActive Listings
Currently active listings in a ZIP code. Filter by property type, bed/bath/sqft ranges, and paginate. Only single family, condo, and townhouse listings are returned.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| zipcode | string | required | 5-digit ZIP code to search within. |
| property_type | string | optional | "single family", "condo", or "townhouse". Defaults to all three. |
| beds_min | number | optional | Minimum number of bedrooms. |
| beds_max | number | optional | Maximum number of bedrooms. |
| baths_min | number | optional | Minimum number of bathrooms. |
| baths_max | number | optional | Maximum number of bathrooms. |
| sqft_min | number | optional | Minimum living area (sqft). |
| sqft_max | number | optional | Maximum living area (sqft). |
| page | number | optional | Page number, 1-indexed. Defaults to 1. |
| page_size | number | optional | Records per page. Max 50 (default). |
curl -X GET \ "https://api.propertytensor.com/api/v1/listings?zipcode=30040&property_type=single family&beds_min=3&page_size=50" \ -H "X-API-Key: your_api_key_here"
{
"zipcode": "30040",
"page": 1,
"page_size": 50,
"total": 708,
"total_pages": 15,
"listings": [
{
"address": "6570 Five Oaks Rd, Cumming, GA 30040",
"price": 2795000.0,
"beds": 5.0,
"baths": 6.0,
"sqft": 4762.0,
"lotsize": 6534.0,
"propertytype": "Single Family",
"city": "Cumming",
"state": "GA",
"zip": "30040",
"latitude": 34.18661,
"longitude": -84.22003
}
]
}/api/v1/properties/comparablesComparable Sales
Comparable sales (comps) for a property — similar nearby homes with price, beds/baths, sqft, lot size, HOA, and school ratings — plus the subject property for reference.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| address | string | required | Full property address (street, city, state, ZIP). |
curl -X GET \ "https://api.propertytensor.com/api/v1/properties/comparables?address=915 Stefan Walk, Cumming, GA 30040" \ -H "X-API-Key: your_api_key_here"
{
"comparables_subject": { "address": "915 Stefan Walk, Cumming, GA 30040", /* ... */ },
"comparables": [
{
"address": "1950 Stonewyck Ct, Cumming, GA 30041",
"price": 485000.0,
"beds": 4.0,
"baths": 3.0,
"sqft": 2676.0,
"lotsize": 20473.0,
"hoa": "71.0",
"top_elementary_school": "Mashburn Elementary School",
"top_middle_school": "Lakeside Middle School",
"top_high_school": "Forsyth Central High School"
}
]
}/api/v1/report/soldHyperlocal Market Report (PDF)
A downloadable PDF market report for a ZIP code, covering the last 6 full calendar months. The response is a binary PDF (Content-Type: application/pdf), so write it to a file.
Returns a PDF file, not JSON. The reporting window is fixed to the last 6 full calendar months.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| zipcode | string | required | 5-digit ZIP code the report covers. |
| state | string | optional | 2-letter state code (e.g. GA). |
curl -X GET \ "https://api.propertytensor.com/api/v1/report/sold?state=GA&zipcode=30040" \ -H "X-API-Key: your_api_key_here" \ -o market_report.pdf
# Binary PDF written to market_report.pdf # Content-Type: application/pdf # Content-Disposition: attachment; filename="..."
/api/v1/analytics/marketMarket Timeseries
A time series of market indicators for a state or ZIP code: median sale/list price, homes sold, days on market, absorption rate, months of supply, and more.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| zipcode | string | optional | 5-digit ZIP code. Provide state or zipcode. |
| state | string | optional | 2-letter state code. Provide state or zipcode. |
| timeframe | string | optional | "monthly" (default) or "weekly". |
curl -X GET \ "https://api.propertytensor.com/api/v1/analytics/market?zipcode=30040&timeframe=monthly" \ -H "X-API-Key: your_api_key_here"
{
"data": [
{
"date": "2025-10-01",
"median_sale_price": 599000.0,
"median_listing_price": 649794.5,
"homes_sold": 79.0,
"new_listings": 136.0,
"active_listings": 244.0,
"pending_sales": 90.0,
"median_dom": 30.5,
"absorption_rate": 0.32,
"months_of_supply": 3.09,
"sale_to_list_ratio": 0.96
}
]
}/api/v1/analytics/soldSold Analytics
A hyperlocal sold-market report as structured JSON: headline KPIs, sales trend, price/beds/baths/DOM distributions, top neighborhoods, and top agents & brokerages.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| zipcode | string | optional | 5-digit ZIP code. Provide state or zipcode. |
| state | string | optional | 2-letter state code. Provide state or zipcode. |
| start_date | string | optional | YYYY-MM-DD. Defaults to the last full calendar month. |
| end_date | string | optional | YYYY-MM-DD. Defaults to the last full calendar month. |
curl -X GET \ "https://api.propertytensor.com/api/v1/analytics/sold?zipcode=30040&start_date=2026-06-01&end_date=2026-06-30" \ -H "X-API-Key: your_api_key_here"
{
"date_range": { "start": "2026-06-01", "end": "2026-06-30" },
"kpi": { "median_price": 512000, "homes_sold": 89, "median_dom": 18 /* ... */ },
"sales_trend": [ /* ... */ ],
"price_distribution": [ /* ... */ ],
"beds_distribution": [ /* ... */ ],
"top_neighborhoods": [ /* ... */ ],
"top_seller_agents": [ /* ... */ ]
}Ready to build?
Grab a free API key and try any endpoint live in the playground.