API Documentation

Hotpostcodes API is currently only available on rapidapi.com, but we do provide direct API keys with limited use for evaluation purpose. Issuing API keys are at our discretion. To request a direct API, please email us at info@hotpostcodes.com briefly stating your sector and use for our API.

We currently provide 7 endpoints, each returning a wealth of metrics and data such as geo-location, elevation, average prices, ceiling prices, return on investment (roi), comparison and more.

API First Steps

Every request to the PropertyData API should be a GET request. Our API endpoints all require 2 query parameters.
  • postcode (A Full UK, Wales Postcode including the space)
  • key (A Valid API key)

Currently we market our API on rapidapi.com, but we do provide direct API keys with limited use for evaluation purpose. Issuing API keys are at our discretion. To request a direct API, please email us at info@hotpostcodes.com briefly stating your sector and use for our API.

API Endpoints

/summary


https://hotpostcodes.com/api/v1/summary

Returns a quick overview of the postcode including elevation, number of properties, total sales, ROI averages, ceiling price, and optional observations about data quality.

Query Parameters:

  • postcode (required) – UK postcode to query (e.g. KT2 7RL)
  • key (required) – Your API key for authentication
  • Example: http://127.0.0.1:5001/api/v1/saleshistory?postcode=KT2+7RL&key=your_api_key

Response Fields:

  • postcode – Full UK/Wales postcode queried.
  • status – Request status (success or error).
  • response_code – Internal tracking code for the response.
  • data – Object containing postcode statistics:
    • geo-location – Latitude/longitude coordinates of the postcode centroid.
    • elevation – Approximate elevation above sea level (in metres).
    • streets – Array of street names within the postcode boundary.
    • towns – Array of town/locality names linked to the postcode.
    • properties – Total number of properties in the postcode with at least 1 sale since Jan1995.
    • sales – Total number of recorded property sales since 1995.
    • activity_level – Sales activity ratio (sales ÷ properties).
    • roi_average – Average historical annual ROI (%) across property types.
    • ceiling_price – Highest estimated achievable price in the postcode.
  • observations – Optional notes on data quality (may be empty).
  • @copyright – HM Land Registry copyright notice.

Example Response:

{ "postcode": "KT2 7RL", "status": "success", "response_code": "13.19.19951009.20241209", "data": { "geo-location": "51.418631,-0.283287", "elevation": 30, "streets": ["Boyd Close"], "towns": ["Kingston Upon Thames"], "properties": 13, "sales": 19, "activity_level": 1.46, "roi_average": 15.97, "ceiling_price": 1101581 }, "observations": { "postcode": "KT2 7RL", "duplicates": 0, "low_sample": "S", "roi_anomaly": 0, "message": "low sample (less than 4) for property types: S. this may skew roi figures." }, "@copyright": "Contains HM Land Registry data © Crown copyright and database right 2025." }

/prices


https://hotpostcodes.com/api/v1/prices

Returns detailed price statistics for properties within the specified postcode, including averages, medians, standard deviations, ceiling prices, and highest sold records.

Query Parameters:

  • postcode (required) – UK postcode to query (e.g. KT2 7RW)
  • key (required) – Your API key for authentication
  • Example: http://127.0.0.1:5001/api/v1/prices?postcode=KT2+7RW&key=your_api_key

Response Fields:

  • postcode – Full UK/Wales postcode queried.
  • status – Request status (success or error).
  • response_code – Internal tracking code for the response.
  • data – Object containing price statistics:
    • average_price – Average property prices by type (detached, semi-detached, terraced, flat).
    • median_price – Median property prices by type.
    • standard_deviation – Standard deviation of prices by type.
    • ceiling – Highest observed (ceiling) price for each type, with:
      • ceiling_price – Maximum price observed.
      • ceiling_date – Date of that ceiling price (YYYY-MM).
      • full_address – Address of the property that achieved it.
    • highest_sold – Most recent highest sold record for each type, with:
      • full_address – Address of the property.
      • price_sold – Price achieved in GBP.
      • date_sold – Date of transaction (YYYY-MM-DD).
    • average_price – Average prices per property type (detached, semi-detached, terraced, flat).
    • median_price – Median prices per property type.
    • standard_deviation – Standard deviation of prices per property type.
    • ceiling – Highest observed (ceiling) price per property type with date and address.
    • highest_sold – Most recent highest sold transaction per property type (including non-residential).
  • observations – Optional notes on data quality (e.g., low sample size, anomalies).
  • @copyright – HM Land Registry copyright notice.

Example Response:

{ "postcode": "KT2 7RW", "status": "success", "response_code": "8.13.19990129.20221223", "data": { "average_price": { "detached": 0, "semi_detached": 0, "terraced": 0, "flat": 330571 }, "median_price": { "detached": 0, "semi_detached": 0, "terraced": 0, "flat": 343318 }, "standard_deviation": { "detached": 0, "semi_detached": 0, "terraced": 0, "flat": 24140 }, "ceiling": { "flat": { "ceiling_price": 349221, "ceiling_date": "2025-05", "full_address": "Abinger House, Flat 1, Kingsnympton Park, Kingston Upon Thames, KT2 7RW" } }, "highest_sold": { "flat": { "full_address": "Abinger House, Flat 7, Kingsnympton Park, Kingston Upon Thames, KT2 7RW", "price_sold": 335000, "date_sold": "2022-12-23" }, "non_residential": { "full_address": "Abinger House, Room Adjoining Flat 12, Kingsnympton Park, Kingston Upon Thames, KT2 7RW", "price_sold": 15220, "date_sold": "2018-11-30" } } }, "observations": { "postcode": "KT2 7RW", "duplicates": 0, "low_sample": "F", "roi_anomaly": 0, "message": "low sample (less than 4) for property types: F. this may skew roi figures." }, "@copyright": "Contains HM Land Registry data © Crown copyright and database right 2025." }

https://hotpostcodes.com/api/v1/roi

Returns Return on Investment (ROI) statistics for properties within the specified postcode. ROI is calculated based on historical sales performance and expressed as a percentage.

Query Parameters:

  • postcode (required) – UK postcode to query (e.g. KT2 7RW)
  • key (required) – Your API key for authentication
  • Example: http://127.0.0.1:5001/api/v1/roi?postcode=KT2+7SF&key=your_api_key

Response Fields:

  • postcode – Full UK/Wales postcode queried.
  • status – Request status (success or error).
  • response_code – Internal tracking code for the response.
  • data – Object containing ROI statistics:
    • bytype – ROI percentages by property type:
      • detached Average ROI percentage for detached properties
      • semi_detached Average ROI percentage for semi-detached properties
      • terraced Average ROI percentage for terraced properties
      • flat Average ROI percentage for flats
      • average – Overall ROI across all property types.
    • sample_size – Number of samples used to calculate ROI by property type.
    • average – Overall average ROI (same as in bytype.average).
    • bytype – ROI percentages per property type (detached, semi-detached, terraced, flat) and overall average.
    • sample_size – Number of samples used per property type to calculate ROI.
    • average – Overall average ROI across all property types.
  • observations – Optional notes on data quality (e.g., low sample size, anomalies).
  • @copyright – HM Land Registry copyright notice.

Example Response:

{ "postcode": "KT2 7SF", "status": "success", "response_code": "29.45.19950607.20230113", "data": { "bytype": { "detached": 12.9, "semi_detached": 40.78, "terraced": 0, "flat": 10.53, "average": 21.4 }, "sample_size": { "detached": 1, "semi_detached": 1, "terraced": 0, "flat": 9 }, "average": 21.4 }, "observations": { "postcode": "KT2 7SF", "duplicates": 0, "low_sample": "DS", "roi_anomaly": 0, "message": "low sample (less than 4) for property types: DS. this may skew roi figures." }, "@copyright": "Contains HM Land Registry data © Crown copyright and database right 2025." }

https://hotpostcodes.com/api/v1/comparison

Compares property prices and ROI against nearby postcodes and the town average.

Query Parameters:

  • postcode (required) – UK postcode to query (e.g. KT2 7RW)
  • key (required) – Your API key for authentication
  • Example: http://127.0.0.1:5001/api/v1/comparison?postcode=KT2+7SL&key=your_api_key

Response Fields:

  • postcode – Full UK/Wales postcode queried.
  • status – Request status (success or error).
  • response_code – Internal tracking code for the response.
  • data – Object containing comparison data:
    • town – List of towns/localities for the postcode.
    • town_average – Comparison of average property prices within this postcode with town-wide averages regardless of property type.
    • town_average_bytype – Comparison of average property prices within this postcode with town-wide averages by property type.
    • town – List of towns/localities for the postcode.
    • town_average – Town-average property metrics per type (detached, semi-detached, terraced, flat).
    • town_average_bytype – Town-average metrics per property type, allowing direct comparison with the queried postcode.
  • observations – Optional notes on data quality (e.g., low sample size, anomalies).
  • @copyright – HM Land Registry copyright notice.

Example Response:

{ "postcode": "KT2 7SL", "status": "success", "response_code": "4.8.19990723.20230705", "data": { "town": ["Kingston Upon Thames"], "town_average": { "detached": 3.02, "semi_detached": 4.66, "terraced": 0, "flat": 1.43 }, "town_average_bytype": { "detached": 1.39, "semi_detached": 3.47, "terraced": 0, "flat": 2.24 } }, "observations": { "postcode": "KT2 7SL", "duplicates": 0, "low_sample": "DF", "roi_anomaly": 0, "message": "low sample (less than 4) for property types: DF. this may skew roi figures." }, "@copyright": "Contains HM Land Registry data © Crown copyright and database right 2025." }

https://hotpostcodes.com/api/v1/sales

Returns the number of property sales per year and by property type since 1995.

Query Parameters:

  • postcode (required) – UK postcode to query (e.g. KT2 7RW)
  • key (required) – Your API key for authentication
  • Example: http://127.0.0.1:5001/api/v1/sales?postcode=KT2+7SU&key=your_api_key

Response Fields:

  • postcode – Full UK/Wales postcode queried.
  • status – Request status (success or error).
  • response_code – Internal tracking code for the response.
  • data – Object containing sales breakdown:
    • breakdown – Number of property sales by type:
      • detached Number of sales transactions for detached properties since Jan 1995 within the current postcode.
      • semi_detached Number of sales transactions for semi-detached properties since Jan 1995 within the current postcode.
      • terraced Number of sales transactions for terraced properties since Jan 1995 within the current postcode.
      • flat Number of sales transactions for flats since Jan 1995 within the current postcode.
      • non_residential Number of sales transactions for non-residential properties since Jan 1995 within the current postcode.
      • total – Total number of sales for the postcode since Jan 1995.
    • breakdown – Number of sales by property type:
      • detached
      • semi_detached
      • terraced
      • flat
      • non_residential
      • total – Total number of sales for the postcode.
  • observations – Optional notes on data quality (may be empty).
  • @copyright – HM Land Registry copyright notice.

Example Response:

{ "postcode": "KT2 7SU", "status": "success", "response_code": "13.23.19950526.20250416", "data": { "breakdown": { "detached": 1, "semi_detached": 1, "terraced": 11, "flat": 0, "non_residential": 0, "total": 13 } }, "observations": {}, "@copyright": "Contains HM Land Registry data © Crown copyright and database right 2025." }

https://hotpostcodes.com/api/v1/saleshistory

Returns the complete sales history for properties in the specified postcode, including transaction prices, estimated current value, ROI figures, and linear predictions.

Query Parameters:

  • postcode (required) – UK postcode to query (e.g. KT2 7RW)
  • key (required) – Your API key for authentication
  • Example: http://127.0.0.1:5001/api/v1/saleshistory?postcode=NW5+2BE&key=your_api_key

Response Fields:

  • postcode – Full UK/Wales postcode queried.
  • status – Request status (success or error).
  • response_code – Internal tracking code for the response.
  • data – Object containing property sales history:
    • properties – Total number of properties with sales records.
    • sales – Total number of transactions recorded across all properties.
    • history – Array of property sales records:
      • full_address – Full property address.
      • property_type – Property type code (e.g., F = Flat, D = Detached).
      • number_of_sales – Number of sales for this property.
      • sales_history – Array of sales:
        • TransferDate – Date of transaction (YYYY-MM-DD).
        • Price – Sale price in GBP.
      • duplicate_flag – True/false if duplicate records exist.
      • average_annual_profit_gbp – Historic average annual profit.
      • annual_profit_breakdown_gbp – List of profit per transaction.
      • linear_prediction – Predicted values for future years.
      • estimated_annual_profit – Current estimated annual profit in GBP.
      • estimated_value – Current estimated property value with date.
      • roi_average – Average ROI percentage.
      • warnings – Any data caveats (may be empty).
  • observations – Optional notes on data quality (e.g., low sample size, anomalies).
  • @copyright – HM Land Registry copyright notice.

Example Response:

{ "postcode": "NW5 2EB", "status": "success", "response_code": "164.950101.250627-16104434-146250.20250501", "data": { "properties": 26, "sales": 58, "history": [ { "full_address": "1, Second And Third Floor Maisonette, Gaisford Street, London, Camden, NW5 2EB", "property_type": "F", "number_of_sales": 2, "sales_history": [ { "TransferDate": "1995-06-21", "Price": 105000 }, { "TransferDate": "2000-08-11", "Price": 220000 } ], "duplicate_flag": false, "average_annual_profit_gbp": 22351, "annual_profit_breakdown_gbp": [22351], "linear_prediction": { "2025": 761592, "2026": 783792, "2027": 805992, "2028": 828193, "2029": 850393 }, "estimated_annual_profit": 19769, "estimated_value": { "date": "2025-05", "price": 717120 }, "roi_average": 21.29, "warnings": "" }, ... (other property records omitted for brevity) ... { "full_address": "Hammond House, 45A, Flat B-E, Gaisford Street, London, Camden, NW5 2EB", "property_type": "F", "number_of_sales": 2, "sales_history": [ { "TransferDate": "2002-01-25", "Price": 128500 }, { "TransferDate": "2011-11-15", "Price": 200000 } ], "duplicate_flag": false, "average_annual_profit_gbp": 7287, "annual_profit_breakdown_gbp": [7287], "linear_prediction": { "2025": 323052, "2026": 331496, "2027": 339940, "2028": 348384, "2029": 356828 }, "estimated_annual_profit": 8098, "estimated_value": { "date": "2025-05", "price": 304458 }, "roi_average": 5.67, "warnings": "" } ] }, "observations": { "postcode": "NW5 2EB", "duplicates": 0, "low_sample": "T", "roi_anomaly": 0, "message": "low sample (less than 4) for property types: T. this may skew roi figures." }, "@copyright": "Contains HM Land Registry data © Crown copyright and database right 2025." }

Note: ... (other property records omitted for brevity) ... indicates additional sales history entries not shown in this example.

https://hotpostcodes.com/api/v1/rawdata

Returns the unprocessed, raw property-level data for the specified postcode. This endpoint provides ROI, historical prices, and comparisons to town averages before any smoothing or aggregation.

Query Parameters:

  • postcode (required) – UK postcode to query (e.g. KT2 7RW)
  • key (required) – Your API key for authentication
  • Example: http://127.0.0.1:5001/api/v1/rawdata?postcode=DE24+9ER&key=your_api_key

Response Fields:

  • postcode – Full UK/Wales postcode queried.
  • status – Request status (success or error).
  • response_code – Internal tracking code for the response.
  • data – Object containing raw data series:
    • roi – Arrays of ROI values by property type (detached, semi-detached, terraced, flat, non_residential).
    • prices – Arrays of historic prices by property type.
    • compare_to_town_average – Ratio values comparing property prices to the town-wide averages (per property type).
    • compare_bytype_to_town_average – Ratios comparing by-property-type averages against the town’s averages.
    • roi – Array of ROI (%) values by property type:
      • detached
      • semi_detached
      • terraced
      • flat
      • non_residential
    • prices – Array of historical sale prices by property type.
    • compare_to_town_average – Ratios comparing postcode-level figures to the wider town average by property type.
    • compare_bytype_to_town_average – Ratios comparing postcode-level figures to town averages broken down further by property type.
  • observations – Optional notes on data quality (e.g., low sample size, anomalies).
  • @copyright – HM Land Registry copyright notice.

Example Response:

{ "postcode": "DE24 9ER", "status": "success", "response_code": "164.950101.250627-16104434-146250.20250501", "data": { "roi": { "detached": [1.24, 18.58, 3.46, 6.58], "semi_detached": [5.53, 2.46, 4.35], "terraced": [], "flat": [], "non_residential": [] }, "prices": { "detached": [1422066, 261796, 295850, 250867, 278551], "semi_detached": [218150, 242549, 189997, 257868, 200398, 223426, 168523, 240738, 217847, 180834, 239820], "terraced": [], "flat": [], "non_residential": [] }, "compare_to_town_average": { "detached": [6.81, 1.25, 1.42, 1.2, 1.33], "semi_detached": [0.82, 1.15, 0.9, 1.23, 0.95, 1.06, 0.8, 1.14, 1.04, 0.86, 1.14], "terraced": [], "flat": [] }, "compare_bytype_to_town_average": { "detached": [4.45, 0.82, 0.92, 0.78, 0.87], "semi_detached": [0.89, 1.15, 0.9, 1.22, 0.95, 1.06, 0.8, 1.14, 1.03, 0.86, 1.14], "terraced": [], "flat": [] } }, "observations": { "postcode": "DE24 9ER", "duplicates": 0, "low_sample": "S", "roi_anomaly": 0, "message": "low sample (less than 4) for property types: S. this may skew roi figures." }, "@copyright": "Contains HM Land Registry data © Crown copyright and database right 2025." }