{
  "openapi": "3.0.1",
  "info": {
    "title": "OnTheHouse.com.au Scraper: Sold History & Valuations",
    "description": "Scrape OnTheHouse.com.au buy, rent and sold listings by suburb. Every row has the Cotality estimate, land size, sale and rent history, agent phones and suburb medians. Detail pages add full descriptions, features and multi-year price history.",
    "version": "0.1",
    "x-build-id": "XJHowCiYEgMfmXZwV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kotaro001~onthehouse-com-au-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kotaro001-onthehouse-com-au-scraper",
        "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/kotaro001~onthehouse-com-au-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kotaro001-onthehouse-com-au-scraper",
        "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/kotaro001~onthehouse-com-au-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kotaro001-onthehouse-com-au-scraper",
        "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": {
          "channel": {
            "title": "Channel",
            "enum": [
              "buy",
              "rent",
              "sold"
            ],
            "type": "string",
            "description": "buy = property for sale, rent = rental listings, sold = sold prices and property history.",
            "default": "buy"
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "Australian state code: NSW, VIC, QLD, WA, SA, TAS, ACT or NT. Upper and lower case both work.",
            "default": "QLD"
          },
          "suburb": {
            "title": "Suburb",
            "type": "string",
            "description": "Suburb name, e.g. Buderim or Golden Beach. Used to build the search URL.",
            "default": "Buderim"
          },
          "postcode": {
            "title": "Postcode",
            "type": "string",
            "description": "Four-digit postcode of the suburb, e.g. 4556.",
            "default": "4556"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional. Paste OnTheHouse search URLs or a street lookup URL (https://www.onthehouse.com.au/property/qld/buderim-4556/street-name).",
            "items": {
              "type": "string"
            }
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Optional filter, e.g. House, Unit, Townhouse, Apartment, Land. Matching is case-insensitive and runs after the page is parsed.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price",
            "type": "integer",
            "description": "Minimum price or weekly rent in AUD. Listings without a number are kept."
          },
          "maxPrice": {
            "title": "Max price",
            "type": "integer",
            "description": "Maximum price or weekly rent in AUD. Listings without a number are kept."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "type": "integer",
            "description": "Minimum bedrooms, 0-5."
          },
          "maxBedrooms": {
            "title": "Max bedrooms",
            "type": "integer",
            "description": "Maximum bedrooms, 0-5."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "type": "integer",
            "description": "Minimum bathrooms, 0-5."
          },
          "minCarSpaces": {
            "title": "Min car spaces",
            "type": "integer",
            "description": "Minimum car spaces, 0-5."
          },
          "minLandSize": {
            "title": "Min land size (sqm)",
            "type": "integer",
            "description": "Minimum land size in square metres."
          },
          "maxLandSize": {
            "title": "Max land size (sqm)",
            "type": "integer",
            "description": "Maximum land size in square metres."
          },
          "includeDetails": {
            "title": "Include detail pages",
            "type": "boolean",
            "description": "Open each listing page for the description, features, full sale/rent history, Cotality estimate and suburb medians. Billed per detail page.",
            "default": false
          },
          "maxDetails": {
            "title": "Max detail pages",
            "type": "integer",
            "description": "Cap on detail pages per run when includeDetails is on. Must be at least 1.",
            "default": 50
          },
          "maxPages": {
            "title": "Max result pages",
            "type": "integer",
            "description": "Result pages to read, 24 listings per page.",
            "default": 1
          },
          "maxItems": {
            "title": "Max listings",
            "type": "integer",
            "description": "Cap on listings written to the dataset.",
            "default": 25
          },
          "onlyEmitChanges": {
            "title": "Only emit changes",
            "type": "boolean",
            "description": "Emit only new, repriced or removed listings.",
            "default": false
          },
          "includeRemovedListings": {
            "title": "Include removed listings",
            "type": "boolean",
            "description": "Close a listing after the first run that no longer sees it instead of waiting two runs.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Separate tracking history per key. Use a different key for each search you track over time.",
            "default": "default"
          },
          "minDaysOnMarket": {
            "title": "Minimum days on market",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only listings that have been advertised for at least this many days. 0 = no filter. Rows without a known days-on-market value are dropped when this is above 0.",
            "default": 0
          },
          "suburbs": {
            "title": "Suburbs (multi-area)",
            "type": "array",
            "description": "Optional. One or more areas such as 'Downer, ACT, 2602'. Each entry becomes its own search, and all rows land in one dataset. You can also separate entries with a semicolon in the suburb field.",
            "items": {
              "type": "string"
            },
            "default": []
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}