image

A property estimate is the value history for one home, plus the current figure. You need a propertyId from a listing or a property call. The current value and the latest historical value are separate numbers, and they do not have to match.

👉 To access this endpoint, you must obtain an API key: https://steadyapi.com/register


Authentication

Every call uses a Bearer token from your SteadyAPI dashboard.

Documentation:
https://docs.steadyapi.com/#authenticating-requests

headers = {
  'Authorization': 'Bearer YOUR_API_KEY'
}

Where this fits

Take property_id from a rental or sale listing and pass it as propertyId. Tax history for the same id is GET /v1/real-estate/property-tax-history. This response is an estimate series, not the list price on the listing.


Get a property estimate

Endpoint: GET /v1/real-estate/property-estimates

Documentation:
https://docs.steadyapi.com/#real-estate-GETapi-v1-real-estate-property-estimates

Parameters

  • propertyId — required (example: 1874828523)
  • historicalYearsMin — optional date, format Y-m-d
  • historicalYearsMax — optional date, format Y-m-d
  • forecastedMonthsMax — optional date, format Y-m-d

The three optional parameters are calendar dates, not a count of years or months. 2020-01-01 is valid. 5 is not. Omit them and the sample returns the default series: meta.total_historical_estimates is 182 and meta.forecast_sources is 2. Sending a tighter date range changes how much history you get. It does not change the field names.

Python

import requests

url = "https://api.steadyapi.com/v1/real-estate/property-estimates"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

response = requests.get(url, headers=headers, params={"propertyId": "1874828523"})
response.raise_for_status()
body = response.json().get("body") or {}

print(body.get("current_value"))
print(body.get("latest_historical_value"), body.get("latest_historical_date"))
history = body.get("historical_values") or []
if history:
    print(history[0].get("source"))

Annotated sample

{
  "current_value": 2373569,
  "latest_historical_value": 2353229,
  "latest_historical_date": "2026-06-17",
  "historical_values": [
    {
      "source": { "name": "Quantarium", "type": "quantarium" },
      "estimates": [
        { "value": 2353229, "date": "2026-06-17" }
      ]
    }
  ]
}

Show current_value as the headline number. It is an integer dollar amount in this sample, not a formatted string. latest_historical_value is the newest point the endpoint picked across sources. The Quantarium point on 2026-06-17 is 2353229, which is below the current value. forecast_values is a separate list. Do not append it to the historical series without labeling it.


Practical use

More than one source can appear under historical_values. The sample’s first source is Quantarium. Read source.name before you chart a line, or you will mix two models on one axis.

estimates inside a source is the time series. The first point is the one used when that source has the latest date. Keep date with value.

This is not the listing price and it is not a mortgage payment. A rental card’s price.display answers a different question.

👉 Get your API key and load an estimate: https://steadyapi.com/register

How to Search Rental Listings Using SteadyAPI Oct 14, 2026

How to Search Rental Listings Using SteadyAPI

Search rental listings by location. Show price.display, and move to the next page with offset.

How to Get a Property Estimate Using SteadyAPI Oct 14, 2026

How to Get a Property Estimate Using SteadyAPI

Current and historical value for one property id. The optional bounds are calendar dates, not year counts.

How to Read a Tweet Using SteadyAPI Oct 13, 2026

How to Read a Tweet Using SteadyAPI

Read one tweet by id. The text and counts are on legacy. meta.reply_count is how many replies were included.

How to Get an NHL Roster Using SteadyAPI Oct 12, 2026

How to Get an NHL Roster Using SteadyAPI

Load forwards, defensemen, and goalies for one NHL abbreviation. Player names are objects with a default field.