{
  "openapi": "3.0.1",
  "info": {
    "title": "realestate.com.au Scraper — AU Sold Comps, Postcode & Monitor",
    "description": "Scrape realestate.com.au sold comps, for-sale, and rental listings by postcode or suburb. Get sold price, sold date, beds, land m², optional sale history, GPS, photos, and agent phone. Monitor new sales. realestate.com.au API alternative for Python, Node.js, and MCP.",
    "version": "0.1",
    "x-build-id": "pdMdOgTpl2dFwB6jn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawloop~realestate-com-au-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawloop-realestate-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/crawloop~realestate-com-au-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawloop-realestate-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/crawloop~realestate-com-au-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawloop-realestate-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": {
          "includePhones": {
            "title": "Include phone numbers",
            "type": "boolean",
            "description": "Off by default. Include phone fields already published on public pages only when you have a lawful basis.",
            "default": false
          },
          "postcodes": {
            "title": "Postcodes",
            "type": "array",
            "description": "Australian 4-digit postcodes (primary builder). Each postcode is a separate sold/buy/rent search with the filters below. Example: 2026, 3000, 4000.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Suburbs / locations",
            "type": "array",
            "description": "Fallback when you do not have postcodes. Examples: Bondi, NSW 2026 or Melbourne VIC 3000.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (search or listing)",
            "type": "array",
            "description": "Paste realestate.com.au search URLs (/sold/, /buy/, /rent/) or /property- listing links. Path filters (type, beds, price) are applied automatically.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingStatus": {
            "title": "Listing status",
            "enum": [
              "sold",
              "for_sale",
              "for_rent"
            ],
            "type": "string",
            "description": "Builder only (ignored when the Start URL already encodes sold/buy/rent). Default is sold comps.",
            "default": "sold"
          },
          "soldWithinDays": {
            "title": "Sold within (days)",
            "minimum": 1,
            "maximum": 730,
            "type": "integer",
            "description": "Keep sold listings whose sold date is in the last N days (1–730). Applies to sold searches. Default 30. Public sold search is date-sorted — unlike dump scrapers that default to buy inventory.",
            "default": 30
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Optional. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "townhouse",
                "unit_apartment",
                "villa",
                "land",
                "rural",
                "unitblock",
                "acreage"
              ],
              "enumTitles": [
                "House",
                "Townhouse",
                "Unit / apartment",
                "Villa",
                "Land",
                "Rural",
                "Unit block",
                "Acreage"
              ]
            }
          },
          "minPrice": {
            "title": "Min price (AUD)",
            "type": "integer",
            "description": "Minimum sold price (sold) or list/rent price. Rent is weekly AUD."
          },
          "maxPrice": {
            "title": "Max price (AUD)",
            "type": "integer",
            "description": "Maximum sold price (sold) or list/rent price. Rent is weekly AUD."
          },
          "minBeds": {
            "title": "Min bedrooms",
            "type": "integer",
            "description": "Minimum bedroom count. Studios are 0."
          },
          "maxBeds": {
            "title": "Max bedrooms",
            "type": "integer",
            "description": "Maximum bedroom count."
          },
          "minBaths": {
            "title": "Min bathrooms",
            "type": "integer",
            "description": "Minimum bathroom count. REA search honours a floor only."
          },
          "minParking": {
            "title": "Min parking spaces",
            "type": "integer",
            "description": "Minimum car spaces. REA search honours a floor only."
          },
          "minLandSqm": {
            "title": "Min land (m²)",
            "type": "integer",
            "description": "Minimum land size in square metres."
          },
          "includeSurroundingSuburbs": {
            "title": "Include surrounding suburbs",
            "type": "boolean",
            "description": "REA blends neighbouring suburbs into search pages. Off by default so postcode/suburb comps stay geographic. Surrounding rows are flagged isSurrounding when this is on.",
            "default": false
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of listings to save per run (across all postcodes/URLs).",
            "default": 50
          },
          "includeDetails": {
            "title": "Scrape full property details",
            "type": "boolean",
            "description": "Fetch each listing page for agent/agency phone and GPS. Off by default — sold search cards already include sold price, sold date, beds, land m², photos, and description. Free until 15 Dec 2026.",
            "default": false
          },
          "includePriceHistory": {
            "title": "Include price history",
            "type": "boolean",
            "description": "Off by default. Fetch the public /property/ address page and attach prior sold, listed, leased, and withdrawn events (date, price, agency). Charged only when a non-empty timeline is saved. Free until 15 Dec 2026.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor mode (new / changed only)",
            "type": "boolean",
            "description": "On scheduled re-runs, save only listings that are new or whose status/price/sold date changed. Seen IDs stay in a named key-value store so the next run remembers them.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor state store",
            "type": "string",
            "description": "Named key-value store for monitor state. It survives across scheduled runs. Use a distinct name per watch you track.",
            "default": "realestate-com-au-monitor"
          },
          "resetMonitorState": {
            "title": "Reset monitor state",
            "type": "boolean",
            "description": "Clear saved monitor state for this search before the run (starts a fresh baseline).",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrent detail requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many listing-detail requests to run in parallel when details are on. Default 8.",
            "default": 8
          },
          "useProxyFallbackOnly": {
            "title": "Try without proxy first",
            "type": "boolean",
            "description": "Start the browser with no proxy. If realestate.com.au blocks that session, the run switches to the residential proxy below and stays on it. Turn off to use the proxy from the first request.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "AU residential fallback. The actor tries a direct connection first and switches to this proxy automatically if the browser is blocked. Set useApifyProxy to false to stay direct. Turn off Try without proxy first to use this proxy from the start.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "AU"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}