{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Property Valuation API - AVM and Comparables",
    "description": "UK residential valuation and comparable evidence: automated sale and rental valuations with confidence bands, comparable properties by postcode, radius or polygon filtered on beds, floor area, tenure, value and rent, with current and last transacted prices, EPC ratings and listings.",
    "version": "0.1",
    "x-build-id": "6RTzAvZehWm3JIVNL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~uk-property-valuation-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-uk-property-valuation-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/nabeelbaghoor~uk-property-valuation-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-uk-property-valuation-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/nabeelbaghoor~uk-property-valuation-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-uk-property-valuation-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "What to do",
            "enum": [
              "comparablesSearch",
              "comparableLookup",
              "listingLookup",
              "automatedValuation",
              "brokerValuation",
              "brokerOrder",
              "serviceStatus"
            ],
            "type": "string",
            "description": "Comparables search finds properties around a postcode, a point or inside a polygon and filters them. Comparable lookup reads one property by UPRN with its value history. Listing lookup reads the latest listing on a UPRN. Automated valuation values a property from its address. The broker modes read valuations and orders already on your account. Service status checks the valuation service is up without using a credential.",
            "default": "comparablesSearch"
          },
          "subjects": {
            "title": "Subjects",
            "type": "array",
            "description": "One subject per line. A postcode, a \"latitude,longitude\" pair or a GeoJSON polygon for comparables search, depending on the area type. A UPRN for the lookup modes. An address, optionally written as \"address|postcode\", for automated valuation. A valuation or order ID for the broker modes.",
            "items": {
              "type": "string"
            }
          },
          "areaType": {
            "title": "Search area type",
            "enum": [
              "postcode",
              "radius",
              "polygon"
            ],
            "type": "string",
            "description": "How to read each line in comparables search. The provider accepts exactly one area form per search, so this decides which one the lines are interpreted as.",
            "default": "postcode"
          },
          "radiusMetres": {
            "title": "Radius (metres)",
            "type": "integer",
            "description": "How far around each centre point to search, in metres, when the area type is radius.",
            "default": 500
          },
          "propertyType": {
            "title": "Property type",
            "type": "array",
            "description": "Only return comparables of these types. The provider's values are case sensitive, and the actor corrects the case for you so a lowercase entry still filters instead of silently doing nothing.",
            "items": {
              "type": "string",
              "enum": [
                "Detached",
                "Semi-Detached",
                "Terraced",
                "Flat/Maisonette",
                "Other"
              ],
              "enumTitles": [
                "Detached",
                "Semi-detached",
                "Terraced",
                "Flat or maisonette",
                "Other"
              ]
            }
          },
          "tenure": {
            "title": "Tenure",
            "type": "array",
            "description": "Only return comparables held on these tenures.",
            "items": {
              "type": "string",
              "enum": [
                "Freehold",
                "Leasehold",
                "Shared",
                "Feudal"
              ],
              "enumTitles": [
                "Freehold",
                "Leasehold",
                "Shared",
                "Feudal"
              ]
            }
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "type": "integer",
            "description": "Only return comparables with at least this many bedrooms."
          },
          "maxBedrooms": {
            "title": "Maximum bedrooms",
            "type": "integer",
            "description": "Only return comparables with no more than this many bedrooms."
          },
          "minFloorAreaSqFt": {
            "title": "Minimum floor area (square feet)",
            "type": "integer",
            "description": "Only return comparables at least this large. This API is imperial throughout, so the unit is square feet rather than square metres."
          },
          "maxFloorAreaSqFt": {
            "title": "Maximum floor area (square feet)",
            "type": "integer",
            "description": "Only return comparables no larger than this, in square feet."
          },
          "minYearBuilt": {
            "title": "Built no earlier than",
            "type": "integer",
            "description": "Only return comparables built in or after this year. The provider may estimate the year for older stock."
          },
          "maxYearBuilt": {
            "title": "Built no later than",
            "type": "integer",
            "description": "Only return comparables built in or before this year."
          },
          "minCurrentValue": {
            "title": "Minimum current sale value (GBP)",
            "type": "integer",
            "description": "Only return comparables the provider currently values at or above this, in pounds."
          },
          "maxCurrentValue": {
            "title": "Maximum current sale value (GBP)",
            "type": "integer",
            "description": "Only return comparables the provider currently values at or below this, in pounds."
          },
          "minLastValue": {
            "title": "Minimum last sale value (GBP)",
            "type": "integer",
            "description": "Only return comparables whose last recorded sale value is at or above this. This is what happened rather than what the provider estimates today."
          },
          "maxLastValue": {
            "title": "Maximum last sale value (GBP)",
            "type": "integer",
            "description": "Only return comparables whose last recorded sale value is at or below this."
          },
          "lastValueDateFrom": {
            "title": "Last sale on or after",
            "type": "string",
            "description": "Only return comparables whose last recorded sale value is dated on or after this day."
          },
          "lastValueDateTo": {
            "title": "Last sale on or before",
            "type": "string",
            "description": "Only return comparables whose last recorded sale value is dated on or before this day."
          },
          "lastValueType": {
            "title": "Last value type",
            "type": "array",
            "description": "Which kinds of last value to accept. An asking price is what somebody wanted, a sale is what was paid, and a valuation is the provider's own estimate, so these are three different pieces of evidence.",
            "items": {
              "type": "string",
              "enum": [
                "Asking Price",
                "Sale",
                "Valuation"
              ],
              "enumTitles": [
                "Asking price",
                "Completed sale",
                "Valuation"
              ]
            }
          },
          "minCurrentRent": {
            "title": "Minimum current rent (GBP per month)",
            "type": "integer",
            "description": "Only return comparables the provider currently values at or above this monthly rent."
          },
          "maxCurrentRent": {
            "title": "Maximum current rent (GBP per month)",
            "type": "integer",
            "description": "Only return comparables the provider currently values at or below this monthly rent."
          },
          "includePriceHistory": {
            "title": "Include value history",
            "type": "boolean",
            "description": "Adds the full sale and rent value history to each comparable lookup row, each entry with its value, type, date and source. Off by default because a history inside a spreadsheet cell is unreadable, and the summary figures are on every row regardless.",
            "default": false
          },
          "accountId": {
            "title": "Account ID",
            "type": "string",
            "description": "Your provider account ID, which the automated valuation product addresses in the request path. Not a credential: it says which account to value against, not who you are."
          },
          "postcode": {
            "title": "Postcode",
            "type": "string",
            "description": "Postcode to use for every address in automated valuation, when the address lines do not carry one."
          },
          "valuationPropertyType": {
            "title": "Property type for valuation",
            "type": "string",
            "description": "The property type to send with every automated valuation, in the provider's own wording, for example \"end terrace house\". Leave empty to let the provider infer it."
          },
          "valuationBedrooms": {
            "title": "Bedrooms for valuation",
            "type": "integer",
            "description": "Bedroom count to send with every automated valuation. Leave empty to let the provider infer it."
          },
          "valuationReceptions": {
            "title": "Reception rooms for valuation",
            "type": "integer",
            "description": "Reception room count to send with every automated valuation. Leave empty to let the provider infer it."
          },
          "valuationReference": {
            "title": "Your reference",
            "type": "string",
            "description": "Your own reference, echoed back on every valuation row so a batch can be reconciled against your records."
          },
          "maxResults": {
            "title": "Maximum rows",
            "type": "integer",
            "description": "Stop after this many rows. Counts every row: comparables, listings, valuations and broker records alike.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "type": "integer",
            "description": "How fast to call the provider. The default of 120 is two a second. Raise it if your contract allows more.",
            "default": 120
          },
          "clientId": {
            "title": "OAuth client ID",
            "type": "string",
            "description": "Your own OAuth2 client ID, for the comparables and listings products. Stored encrypted and never written into the dataset. Can also be supplied as the DATA_API_CLIENT_ID environment secret."
          },
          "clientSecret": {
            "title": "OAuth client secret",
            "type": "string",
            "description": "The client secret issued with the client ID. Both are needed: the pair is exchanged for a bearer token that lasts an hour. Stored encrypted and never written into the dataset. Can also be supplied as the DATA_API_CLIENT_SECRET environment secret."
          },
          "apiKey": {
            "title": "Subscription key",
            "type": "string",
            "description": "Your own gateway subscription key, for the valuation and broker products. A different credential from the OAuth pair above, and most accounts hold one or the other rather than both. Stored encrypted and never written into the dataset. Can also be supplied as the DATA_API_KEY environment secret."
          },
          "valuationApiKey": {
            "title": "Valuation API key",
            "type": "string",
            "description": "Your own valuation API key, which the automated valuation product exchanges for a token that lasts five minutes. Needed alongside the subscription key for that mode only. Stored encrypted and never written into the dataset. Can also be supplied as the DATA_API_VALUATION_KEY environment secret."
          },
          "dataServicesUrl": {
            "title": "Data services host",
            "type": "string",
            "description": "Overrides the host the comparables and listings products are called on. Leave empty unless the provider has given you a different one."
          },
          "valuationUrl": {
            "title": "Valuation host",
            "type": "string",
            "description": "Overrides the host the valuation and broker products are called on. Leave empty unless the provider has given you a different one."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}