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
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.
For Residential Listings, we recommend using SingleFamilyResidence, Townhouse, and Condominium.
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
, UnimprovedLand
, Warehouse
, Other
]
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”.
The MLS Area Major for which you want market statistics.
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 would like to get data groupbed by PropertySubType, you can also specify
&group-by=property-sub-type
If you would like to get data groupbed by PropertyType, you can also specify
&group-by=property-type
If you specify multiple group-by parameters that are time ranges, only the first will be used.
Possible values: [year
, quarter
, month
, week
, boundary-id
, property-sub-type
, property-type
]
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.
If the query is grouping by property sub type, this is the property sub type.
If the query is grouping by property type, this is the property type.
The MLSes that provided data for these statistics
{"attribution":[{"name":"North MLS"},{"name":"Northeast MLS"}]}
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
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
10
Median of the non null and numeric values that is within the outlier range specified
500000
Mean average of the non null and numeric values that is within the outlier range specified
532561
Smallest value of the non null and numeric values that is within the outlier range specified
100000
Largest value of the non null and numeric values that is within the outlier range specified
20000000
Total sum of the non null and numeric values that is within the outlier range specified
256373500
Count of listings that the Sold Price was greater than the final List Price
15
Count of listings that the final List Price was less than the Original List Price
10
Percentage of listings that the final List Price was less than the Original List Price
3.23
Ratio of the final Sale Price divided by the List Price
1.05
{
"success": true,
"data": [
{
"period": "string",
"priceRange": [
"string"
],
"boundaryId": [
"string"
],
"PropertySubType": [
"string"
],
"PropertyType": [
"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