{
  "openapi": "3.0.1",
  "info": {
    "title": "Australian Property Data API - AVM, Sales, Listings",
    "description": "Australian residential property data: match an address to a property, then read its attributes and source dates, planning and tenure, recorded sales with price suppression flags, current and past listings, sale and rental valuations, auction results and suburb market metrics.",
    "version": "0.1",
    "x-build-id": "tm2gGFH3WewQPNZhX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~australian-property-data-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-australian-property-data-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~australian-property-data-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-australian-property-data-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~australian-property-data-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-australian-property-data-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": [
              "addressMatch",
              "addressSuggest",
              "propertyReport",
              "propertySearch",
              "listingSearch",
              "listingById",
              "transactionSearch",
              "valuation",
              "auctions",
              "marketMetrics",
              "demographics"
            ],
            "type": "string",
            "description": "Address match resolves free text to exactly one property, which every property mode needs. Address suggest offers candidates when a partial address will not narrow. Property report reads one property in full. Property search finds properties by area and attribute ranges. Listing and transaction search look around a point or inside a suburb. Valuation orders an automated valuation. Auctions, market metrics and demographics describe the area rather than the property.",
            "default": "propertyReport"
          },
          "addresses": {
            "title": "Addresses",
            "type": "array",
            "description": "One Australian address, or part of one, per line. Used by address match and address suggest.",
            "items": {
              "type": "string"
            }
          },
          "propertyIds": {
            "title": "Property IDs",
            "type": "array",
            "description": "One property ID per line, for property report and valuation modes. Address match mode is how to turn an address into one.",
            "items": {
              "type": "string"
            }
          },
          "listingIds": {
            "title": "Listing IDs",
            "type": "array",
            "description": "One listing ID per line, for listing by ID mode.",
            "items": {
              "type": "string"
            }
          },
          "numberOfResults": {
            "title": "Suggestions per address",
            "type": "integer",
            "description": "How many candidates address suggest returns per line."
          },
          "includeFullAttributes": {
            "title": "Include the full attribute set",
            "type": "boolean",
            "description": "Call the attributes endpoint as well as the summary, adding roof type, wall type, living area, land use and the feature list. Doubles the request count per property, which is why it is optional.",
            "default": false
          },
          "includePlanning": {
            "title": "Include planning and zoning",
            "type": "boolean",
            "description": "Emit a planning and zoning row for each property.",
            "default": false
          },
          "includeTenure": {
            "title": "Include tenure history",
            "type": "boolean",
            "description": "Emit one row per historical tenure record for each property.",
            "default": false
          },
          "includePropertyListings": {
            "title": "Include the property's listings",
            "type": "boolean",
            "description": "Emit one row per current and historic listing for each property.",
            "default": false
          },
          "includeTransactions": {
            "title": "Include the property's sales",
            "type": "boolean",
            "description": "Emit one row per recorded sale for each property, with the source that reported it and whether the price is suppressed.",
            "default": false
          },
          "latestListingOnly": {
            "title": "Latest listing only",
            "type": "boolean",
            "description": "Return only the most recent listing for each property rather than its whole listing history.",
            "default": false
          },
          "latestTransactionOnly": {
            "title": "Latest sale only",
            "type": "boolean",
            "description": "Return only the most recent recorded sale for each property rather than its whole sale history.",
            "default": false
          },
          "searchArea": {
            "title": "How to search",
            "enum": [
              "suburbAndPostcode",
              "pointAndRadius"
            ],
            "type": "string",
            "description": "Whether a listing or transaction search works outward from a point or inside a suburb and postcode. A point search needs either a centre property ID or a latitude and longitude.",
            "default": "suburbAndPostcode"
          },
          "suburb": {
            "title": "Suburb",
            "type": "string",
            "description": "Suburb name to search within."
          },
          "postcode": {
            "title": "Postcode",
            "type": "string",
            "description": "Four digit Australian postcode to search within."
          },
          "state": {
            "title": "State or territory",
            "enum": [
              "",
              "act",
              "nsw",
              "nt",
              "qld",
              "sa",
              "tas",
              "vic",
              "wa"
            ],
            "type": "string",
            "description": "Australian state or territory. The provider wants these lowercase and refuses other casing, which is the kind of thing that returns an empty run rather than an error, so the choice is made for you here.",
            "default": ""
          },
          "boundingBox": {
            "title": "Bounding box",
            "type": "string",
            "description": "A bounding box for property search, which can stand in for a state and suburb."
          },
          "gccsaCode": {
            "title": "Capital city area code",
            "type": "string",
            "description": "A Greater Capital City Statistical Area code, for auction results and demographics scoped to a whole capital city."
          },
          "centrePropertyId": {
            "title": "Centre property ID",
            "type": "string",
            "description": "The property a point and radius search works outward from. Using a property rather than a coordinate is usually what you want for comparables, because it centres on the building rather than on a rooftop pin."
          },
          "latitude": {
            "title": "Latitude",
            "type": "number",
            "description": "Latitude of a point and radius search, when no centre property is given."
          },
          "longitude": {
            "title": "Longitude",
            "type": "number",
            "description": "Longitude of a point and radius search, when no centre property is given."
          },
          "radius": {
            "title": "Radius",
            "type": "number",
            "description": "How far around the centre point to search, in the units the provider documents for the endpoint."
          },
          "proximity": {
            "title": "Proximity",
            "enum": [
              "",
              "sameStreet",
              "sameBuilding",
              "sameSuburb"
            ],
            "type": "string",
            "description": "Narrow a transaction search to the same street, the same building or the same suburb as the centre property. Same building is what you want for unit comparables.",
            "default": ""
          },
          "coordinatesOnly": {
            "title": "Coordinates only",
            "type": "boolean",
            "description": "Ask a property search for coordinates rather than full summaries. The cheap way to build a map layer from a search you will enrich later.",
            "default": false
          },
          "listingTypes": {
            "title": "Listing types",
            "type": "array",
            "description": "Whether a listing search returns properties for sale, for rent, or both.",
            "items": {
              "type": "string",
              "enum": [
                "sale",
                "rent"
              ],
              "enumTitles": [
                "For sale",
                "For rent"
              ]
            }
          },
          "listingType": {
            "title": "Listing type",
            "enum": [
              "",
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Restrict a property's own listings to sale or rent in property report mode.",
            "default": ""
          },
          "listingStatus": {
            "title": "Listing status",
            "enum": [
              "",
              "current",
              "sold",
              "notSold",
              "leased",
              "notLeased"
            ],
            "type": "string",
            "description": "Which listing state to return. Sold and leased are completed outcomes; not sold and not leased are listings that came off the market without one, which is a different signal.",
            "default": ""
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Which property types a listing search or market metric covers.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "unit"
              ],
              "enumTitles": [
                "House",
                "Unit"
              ]
            }
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "",
              "house",
              "unit"
            ],
            "type": "string",
            "description": "A single property type, for property search, transaction search and the plus and pro valuation products.",
            "default": ""
          },
          "landUse": {
            "title": "Land use",
            "type": "string",
            "description": "Restrict a transaction search by land use classification, for example residential."
          },
          "sourceCategory": {
            "title": "Sale source",
            "enum": [
              "",
              "vg",
              "agency"
            ],
            "type": "string",
            "description": "Where a recorded sale came from. The Valuer General source is the state's registered transfer; the agency source is what the selling agent reported. They disagree and they have different lags, so choosing deliberately matters and the source travels on every row either way.",
            "default": ""
          },
          "bedroomsMin": {
            "title": "Minimum bedrooms",
            "type": "integer",
            "description": "Lowest bedroom count to include."
          },
          "bedroomsMax": {
            "title": "Maximum bedrooms",
            "type": "integer",
            "description": "Highest bedroom count to include."
          },
          "bathroomsMin": {
            "title": "Minimum bathrooms",
            "type": "integer",
            "description": "Lowest bathroom count to include."
          },
          "bathroomsMax": {
            "title": "Maximum bathrooms",
            "type": "integer",
            "description": "Highest bathroom count to include."
          },
          "carSpacesMin": {
            "title": "Minimum car spaces",
            "type": "integer",
            "description": "Lowest car space count to include."
          },
          "carSpacesMax": {
            "title": "Maximum car spaces",
            "type": "integer",
            "description": "Highest car space count to include."
          },
          "landAreaMin": {
            "title": "Minimum land area",
            "type": "integer",
            "description": "Lowest land area to include, in square metres."
          },
          "landAreaMax": {
            "title": "Maximum land area",
            "type": "integer",
            "description": "Highest land area to include, in square metres."
          },
          "livingAreaMin": {
            "title": "Minimum living area",
            "type": "integer",
            "description": "Lowest living area to include, in square metres."
          },
          "livingAreaMax": {
            "title": "Maximum living area",
            "type": "integer",
            "description": "Highest living area to include, in square metres."
          },
          "priceMin": {
            "title": "Minimum price",
            "type": "integer",
            "description": "Lowest listing price to include."
          },
          "priceMax": {
            "title": "Maximum price",
            "type": "integer",
            "description": "Highest listing price to include."
          },
          "saleValueMin": {
            "title": "Minimum sale value",
            "type": "integer",
            "description": "Lowest recorded sale value to include in a transaction search."
          },
          "saleValueMax": {
            "title": "Maximum sale value",
            "type": "integer",
            "description": "Highest recorded sale value to include in a transaction search."
          },
          "startDate": {
            "title": "From date",
            "type": "string",
            "description": "Earliest date to include, as YYYY-MM-DD. Applies to listings, transactions, auctions and market metrics."
          },
          "endDate": {
            "title": "To date",
            "type": "string",
            "description": "Latest date to include, as YYYY-MM-DD."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "",
              "distanceAsc",
              "dateAsc",
              "dateDesc"
            ],
            "type": "string",
            "description": "How a listing search orders its results before paging.",
            "default": ""
          },
          "pageSize": {
            "title": "Results per page",
            "type": "integer",
            "description": "How many results the provider returns per page, up to 200. Paging follows the provider's forward cursor until the row cap is reached.",
            "default": 25
          },
          "valuationKind": {
            "title": "Valuation kind",
            "enum": [
              "both",
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Whether to order a sale valuation, a rental valuation or both.",
            "default": "both"
          },
          "requestType": {
            "title": "Valuation product",
            "enum": [
              "enquiry",
              "origination",
              "plus",
              "pro"
            ],
            "type": "string",
            "description": "Which valuation product to order. Enquiry is the general purpose one; origination is the lending grade one; plus adds a rental valuation to a sale one; pro adds environmental hazards as well. Plus and pro are sale side only, so a rental valuation falls back to enquiry.",
            "default": "enquiry"
          },
          "effectiveDate": {
            "title": "Valuation effective date",
            "type": "string",
            "description": "Value the property as at this date rather than today, as YYYY-MM-DD. Accepted by the plus and pro products."
          },
          "customerReference": {
            "title": "Your reference",
            "type": "string",
            "description": "A reference of your own, echoed back on the valuation. Useful for tying a valuation to a loan or case number."
          },
          "bedrooms": {
            "title": "Bedrooms for valuation",
            "type": "integer",
            "description": "Override the recorded bedroom count when ordering a plus or pro valuation, which is how a property is valued as renovated rather than as recorded."
          },
          "bathrooms": {
            "title": "Bathrooms for valuation",
            "type": "integer",
            "description": "Override the recorded bathroom count when ordering a plus or pro valuation."
          },
          "carSpaces": {
            "title": "Car spaces for valuation",
            "type": "integer",
            "description": "Override the recorded car space count when ordering a plus or pro valuation."
          },
          "searchType": {
            "title": "Area scope",
            "enum": [
              "suburb",
              "state",
              "gccsa"
            ],
            "type": "string",
            "description": "What an auction or demographics request is scoped to: a suburb, a whole state, or a greater capital city statistical area.",
            "default": "suburb"
          },
          "metrics": {
            "title": "Market metrics",
            "type": "array",
            "description": "Which market metrics to read. Sale metrics and rental metrics are separate families, and median days on market exists in both with different meanings, so the family each row came from travels with it.",
            "items": {
              "type": "string",
              "enum": [
                "median-sale-price",
                "mean-sale-price",
                "sale-transaction-volume",
                "mean-hold-period",
                "median-rental-price",
                "mean-rental-price",
                "median-rental-yield",
                "rental-transaction-volume",
                "median-days-on-market",
                "potential-buyers",
                "potential-renters"
              ],
              "enumTitles": [
                "Median sale price",
                "Mean sale price",
                "Sale transaction volume",
                "Mean hold period",
                "Median rental price",
                "Mean rental price",
                "Median rental yield",
                "Rental transaction volume",
                "Median days on market",
                "Potential buyers - demand",
                "Potential renters - demand"
              ]
            }
          },
          "metricFamily": {
            "title": "Family for shared metrics",
            "enum": [
              "rent",
              "sale"
            ],
            "type": "string",
            "description": "Median days on market is published in both the sale and rental families and means something different in each. This says which one to read it from. Ignored for metrics that exist in only one family.",
            "default": "rent"
          },
          "frequency": {
            "title": "Reporting frequency",
            "enum": [
              "",
              "yearly",
              "quarterly",
              "monthly"
            ],
            "type": "string",
            "description": "How often a market metric is reported. Monthly is only available for rental transaction volume, median days on market and median rental price.",
            "default": ""
          },
          "aggregationWindow": {
            "title": "Aggregation window",
            "enum": [
              "",
              "3m",
              "6m",
              "12m"
            ],
            "type": "string",
            "description": "The window each reported historic value is aggregated over. A shorter window is more responsive and noisier.",
            "default": ""
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own api key from the provider. It is base64 encoded together with the api secret and sent in the Authorization header; the provider does not accept them as form fields."
          },
          "apiSecret": {
            "title": "API secret",
            "type": "string",
            "description": "Your own api secret from the provider. Stored encrypted and never written into the dataset. Can also be supplied as the DATA_API_KEY environment secret."
          },
          "maxResults": {
            "title": "Maximum rows",
            "type": "integer",
            "description": "Stop after this many rows. Counts every row: properties, listings, transactions, valuations and market values alike.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "type": "integer",
            "description": "How fast to call the provider. Most endpoints allow 50 requests per second and the valuation endpoints allow 25, so the default sits under the stricter of the two.",
            "default": 1200
          },
          "baseUrl": {
            "title": "API host",
            "type": "string",
            "description": "Overrides the host the API is 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}