{
  "openapi": "3.0.1",
  "info": {
    "title": "View.com.au – Australia Property Listings, Sold & Rental Data",
    "description": "Scrape Australian property listings from view.com.au across sale, rent, and recently sold. Search by suburb, city, state, or URL. Extract prices, full addresses, agent and agency contacts, photos, GPS coordinates, market insights, and structured property details.",
    "version": "1.0",
    "x-build-id": "ijwo8NjU6mJ56zqDm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~view-com-au-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-view-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/abotapi~view-com-au-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-view-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/abotapi~view-com-au-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-view-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Search Mode",
            "enum": [
              "location",
              "url",
              "detail"
            ],
            "type": "string",
            "description": "Search by Location builds URLs from suburb/state. Search List URLs lets you paste view.com.au search result page URLs directly. Property Detail URLs scrapes individual property pages you paste (one record per URL).",
            "default": "location"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Locations to search. State is required. Suburb and postcode are optional - omit for broader searches.",
            "items": {
              "type": "object",
              "properties": {
                "suburb": {
                  "title": "Suburb (Optional)",
                  "type": "string",
                  "description": "Suburb or city name, e.g. Melbourne, Kew East. Leave empty for state-wide search.",
                  "editor": "textfield"
                },
                "state": {
                  "title": "State",
                  "type": "string",
                  "description": "Australian state or territory",
                  "enum": [
                    "NSW",
                    "VIC",
                    "QLD",
                    "SA",
                    "WA",
                    "TAS",
                    "NT",
                    "ACT"
                  ],
                  "editor": "select"
                },
                "postcode": {
                  "title": "Postcode (Optional)",
                  "type": "string",
                  "description": "4-digit postcode for suburb-level precision, e.g. 3000",
                  "editor": "textfield",
                  "pattern": "^[0-9]{4}$"
                }
              },
              "required": [
                "state"
              ]
            }
          },
          "listingType": {
            "title": "Listing Type",
            "enum": [
              "buy",
              "rent",
              "sold"
            ],
            "type": "string",
            "description": "Type of property listings to scrape",
            "default": "buy"
          },
          "propertyTypes": {
            "title": "Property Types (Optional)",
            "type": "array",
            "description": "Filter by property type. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment",
                "townhouse",
                "land",
                "studio",
                "villa",
                "rural"
              ],
              "enumTitles": [
                "House",
                "Apartment & Unit",
                "Townhouse",
                "Land",
                "Studio",
                "Villa",
                "Rural"
              ]
            }
          },
          "priceMin": {
            "title": "Minimum Price (Optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum property price in AUD"
          },
          "priceMax": {
            "title": "Maximum Price (Optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum property price in AUD"
          },
          "bedroomsMin": {
            "title": "Minimum Bedrooms (Optional)",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum number of bedrooms"
          },
          "bathroomsMin": {
            "title": "Minimum Bathrooms (Optional)",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Minimum number of bathrooms"
          },
          "carsMin": {
            "title": "Minimum Car Spaces (Optional)",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Minimum number of car spaces"
          },
          "sort": {
            "title": "Sort Order (Optional)",
            "enum": [
              "default",
              "date-desc",
              "updatedAt-desc",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "Sort order for search results",
            "default": "date-desc"
          },
          "urls": {
            "title": "Search List URLs",
            "type": "array",
            "description": "Paste view.com.au search result page URLs (listing pages). These are URLs that show multiple properties, e.g. https://www.view.com.au/for-sale/vic/in-melbourne-3000/. Do NOT use individual property detail URLs (e.g. /property/vic/...).",
            "items": {
              "type": "string"
            }
          },
          "detailUrls": {
            "title": "Property Detail URLs",
            "type": "array",
            "description": "Paste individual view.com.au property detail page URLs, e.g. https://www.view.com.au/property/vic/melbourne-3000/123-example-street-12345678/. One record is scraped per URL with full detail-page data. Only used when Search Mode is 'Property Detail URLs'.",
            "items": {
              "type": "string"
            }
          },
          "maxListings": {
            "title": "Maximum Listings",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after scraping this many listings. Leave empty for no limit.",
            "default": 25
          },
          "maxPages": {
            "title": "Maximum Pages per Location",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum search result pages per location. Each page has ~25 results.",
            "default": 2
          },
          "includeDetailPage": {
            "title": "Include Detail Page Data",
            "type": "boolean",
            "description": "Fetch each property detail page for full data (description, all images, floor plans, sale history). Slower but more complete.",
            "default": false
          },
          "outputFormat": {
            "title": "Output Formats",
            "type": "array",
            "description": "Export data in these formats",
            "items": {
              "type": "string",
              "enum": [
                "json",
                "csv"
              ],
              "enumTitles": [
                "JSON",
                "CSV"
              ]
            },
            "default": [
              "json"
            ]
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Configure proxy for reliable access. Residential AU proxies recommended.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "AU"
            }
          },
          "resumeFromCheckpoint": {
            "title": "Resume from Checkpoint",
            "type": "boolean",
            "description": "Continue from last saved checkpoint if the run was interrupted",
            "default": true
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. Notion gets a page per item; other connectors receive a best-effort write/digest. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}