Sold Market Statistics
GET/v4/market-statistics
Get market statistics based on search criteria. This endpoint returns aggregated statistics for any listings that have sold within a specified timeframe.
Required: Filters must include either a boundary-id or an MLS plus one additional area filter. Area filters include city, area-level-1, area-level-2, and postal-code.
Request
Query Parameters
- a start and end time
- a start time and duration
- or a duration and end time
- 0 - 499,999
- 500,000 - 999,999
- 1,000,000 - 1,499,999
- 1,500,000 +
This is the interval of time you want aggregated market statistics for. This is an ISO 8601 time Interval with either
For example, passing a time interval of 2024-04-01/2024-05-01 or 2024-04-01/P1M will return all data for April 2024. If you pass 2024-04-01/2024-04-30 or 2024-04-01T00:00:00/2024-04-3T23:59:59 you might be expecting all of April, but you'd end up missing data from April 30 in both cases.
More information on ISO 8601 durations can be found here.
The MLS code you want associated boundary IDs from.
The boundary id or ids you want aggregated market statistics for. Boundary ids are the only way to get data by legally defined geometry. All other parameters like city, search on the postal address. See Cities vs Postal Cities. By default, all boundary IDs will be grouped together. If you want to group by individual boundary IDs, you can use the
group-by
The property type or types you want aggregated market statistics for.
Possible values: [Residential
, ResidentialLease
, Commercial
, CommercialLease
, Land
, Industrial
, Other
, Timeshare
]
Default value: [Residential
]
The property sub type or sub types you want aggregated market statistics for. Sub Types are used to distinguish between the types of residential or commercial data available.
For instance, the most common suburban home would be a SingleFamilyResidence. A Condominium is usually defined as a subsection of a building made to be a place of dwelling. The place of dwelling is usually only 1 story tall. A Townhouse is usually a multilevel building attached to other multilevel buildings with no dwelling above or below it. See the RESO Standard Lookups for more information on property sub types.
Disclaimer: LiveBy ensures the availability of SingleFamilyResidence, Townhouse, and Condominium in each MLS. The availability of other PropertySubTypes may vary and is more limited by MLS.
Possible values: [SingleFamilyResidence
, Agriculture
, Apartment
, BoatSlip
, Business
, Cabin
, Condominium
, DeededParking
, Farm
, Hotel
, Industrial
, ManufacturedHome
, MixedUse
, Mobile
, MultiFamily
, Office
, OwnYourOwn
, Ranch
, Retail
, StockCooperative
, Timeshare
, Townhouse
, Land
, Warehouse
, Other
]
Default value: [SingleFamilyResidence
, Condominium
, Townhouse
]
The postal city or cities you want aggregated market statistics for. You can use this instead of a boundary id. This uses the RESO Standard field “City”.
The first political subdivision you want aggregated market statistics for. You can use this instead of a boundary id. This is often called “state”, “province” or “district” in various countries. This uses the RESO standard field “StateOrProvince”.
The second political subdivision you want aggregated market statistics for. You can use this instead of a boundary id. This uses the RESO standard field “CountyOrParish”.
The postal code or codes you want aggregated market statistics for. You can use this instead of a boundary id. This uses the RESO standard field “PostalCode”.
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 5000
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 1000000000
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 5000
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 1000000000
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 5000
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 1000000000
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 1000
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 10000
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 1700
LiveBy by default cleans the data to remove outliers. LiveBy does not remove outlier data from the total counts, only the field’s counts, and statistics. You can use the count value of each field to determine if that field had outliers and was available from the MLS data sources.
Default value: 2025
This removes any listings that have a close price less than the value specified. Unlike the outlier filter, this will remove listings from all statistics, not just the price statistics.
This removes any listings that have a close price more than the value specified. Unlike the outlier filter, this will remove listings from all statistics, not just the price statistics.
This lets you group data by date range using one of the options provided below.
If this is not specified you will get an aggregate of all data. This is useful for making rolling averages of data.
If you specify two years of data by using
&time-interval=2022-01-01T00:00:00Z/P2Y
The first array will be for the first year, and the second array will be for the second year. You will also get an aggregate of all data combined.
If you specify quarter, you will get 11 results in the array, 8 quarters, (4 quarters * 2 years) + 2 years + 1 total.
If you specify month, you will get 27 results in the array, 24 months (12 months * 2 years) + 2 years + 1 total.
For information on grouping by price, see the price-segments parameter.
If you would like to get multiple boundaries, you can also specify
&group-by=boundary-id
If you specify multiple group-by parameters that are not boundary-id, only the first will be used.
Possible values: [year
, quarter
, month
, week
, boundary-id
]
If this parameter is provided, an aggregate is created for each price range defined by the price /
segments provided. It is implied that the first price range starts at 0. Also, the low price is /
inclusive (>=) and the high price is exclusive (<). See the example below.
You may specify many different ranges of prices.
This will always provide one more range than the number of price-segment parameters provided.
In this example, the price range aggregates will be:
Responses
- 200
- 401
- 403
- 429
- 500
- 504
- application/json
- Schema
- Example (from schema)
Schema
Array [
]
data
object[]
Time period these statistics are based on. In the format {full year} or {full year}-Q{quarter} or {full year}-M{month} or {full year}-W{week}
Price range of the properties
If the query is grouping by boundary id, this is the id of the boundary.
The MLSes that provided data for these statistics
data
object
required
Total count of listings within the period
ListPrice
object
required
Statistics about the price that the property was listed for when it sold
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
OriginalListPrice
object
required
Statistics about the First List Price before price adjustments
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
ClosePrice
object
required
Statistics about the price that the property was sold for
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
YearBuilt
object
required
Statistics about the year the properties were built
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
DaysOnMarket
object
required
Statistics about the number of days the property was on the market. This field is specified by an MLS, and can often be null. If Days On Market is missing from an MLS, either daysToClose or daysToContract should be used.
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
CumulativeDaysOnMarket
object
required
Statistics about the total number of days the property was on the market. This differs from Days On Market because Days On Market is reset when the property is temporarily removed from market, while Cumulative Days On Market never resets. The outlier parameters for Days On Market also remove outliers from Cumulative Days On Market. This field is specified by an MLS, and can often be null.
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
LivingArea
object
required
Statistics about the square footage of the properties
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
pricePerSquareFoot
object
required
Statistics about the price per square foot of the properties
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
daysToClose
object
required
Statistics about the number of days until the property was sold. This is calculated from the List Date to the Close Date, which is most often the date the title was changed, not the date the property was received an offer.
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
daysToContract
object
required
Statistics about the number of days until the property was sold. This is calculated from the List Date to the Contract Date, which is most often the date the property was received an offer, not the date the title was changed.
Amount of non null and numeric values used to make statistics that is within the outlier range specified
Median of the non null and numeric values that is within the outlier range specified
Mean average of the non null and numeric values that is within the outlier range specified
Smallest value of the non null and numeric values that is within the outlier range specified
Largest value of the non null and numeric values that is within the outlier range specified
Total sum of the non null and numeric values that is within the outlier range specified
Count of listings that the Sold Price was greater than the final List Price
Count of listings that the final List Price was less than the Original List Price
Percentage of listings that the final List Price was less than the Original List Price
Ratio of the final Sale Price divided by the List Price
{
"success": true,
"data": [
{
"period": "string",
"priceRange": [
"string"
],
"boundaryId": [
"string"
],
"metadata": {
"attribution": [
{
"name": "North MLS"
},
{
"name": "Northeast MLS"
}
]
},
"data": {
"count": 0,
"ListPrice": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"OriginalListPrice": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"ClosePrice": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"YearBuilt": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"DaysOnMarket": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"CumulativeDaysOnMarket": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"LivingArea": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"pricePerSquareFoot": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"daysToClose": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"daysToContract": {
"count": 10,
"median": 500000,
"average": 532561,
"minimum": 100000,
"maximum": 20000000,
"sum": 256373500
},
"soldOverAskingCount": 15,
"priceReductionCount": 10,
"priceReductionPercentage": 3.23,
"saleToListRatio": 1.05
}
}
]
}
Unauthorized
Forbidden
Too Many Requests
Internal Server Error
Service Unavailable