{
  "openapi": "3.0.1",
  "info": {
    "title": "Domain.com.au Real Estate Scraper",
    "description": "Scrape Domain.com.au sale, rent, and sold Australian property listings. Use for comps, rental monitoring, and agent lead lists. Returns one row per listing with price, address, beds, baths, agents, photos, coordinates, and source URL. $0.004/listing + $0.00005 start.",
    "version": "1.0",
    "x-build-id": "RIIYYanYndjatyg0E"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~domain-com-au-real-estate-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-domain-com-au-real-estate-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/khadinakbar~domain-com-au-real-estate-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-domain-com-au-real-estate-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/khadinakbar~domain-com-au-real-estate-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-domain-com-au-real-estate-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": {
          "startUrls": {
            "title": "Domain.com.au search or listing URLs",
            "type": "array",
            "description": "Use this when you already have Domain.com.au search pages or listing detail URLs. Accepts request-list items such as {\"url\":\"https://www.domain.com.au/sale/sydney-nsw-2000/\"}. Defaults to the location builder when empty. Not for realestate.com.au, agent profile search, or non-Domain URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL",
                  "description": "Domain.com.au search or listing URL to scrape."
                }
              }
            },
            "default": []
          },
          "listingType": {
            "title": "Listing type",
            "enum": [
              "sale",
              "rent",
              "sold"
            ],
            "type": "string",
            "description": "Use this to choose Domain inventory: sale, rent, or sold. Accepted values are sale, rent, and sold. Defaults to sale. Not a mixed-mode setting; run separate jobs for separate inventory types.",
            "default": "sale"
          },
          "locations": {
            "title": "Suburb or region slugs",
            "type": "array",
            "description": "Use this when building Domain search URLs from locations. Enter Domain slugs such as sydney-nsw-2000 or readable text such as Sydney NSW 2000. Defaults to sydney-nsw-2000. Not used for non-empty startUrls that already point to search pages.",
            "items": {
              "type": "string"
            },
            "default": [
              "sydney-nsw-2000"
            ]
          },
          "maxResults": {
            "title": "Max listings",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Use this as a hard cap on records pushed and charged. Accepted range is 1 to 1000, for example 50. Defaults to 20. Not a page count; pagination stops when this many listings are persisted.",
            "default": 20
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Use this to limit pagination for each Domain search URL or generated location. Accepted range is 1 to 25, where each search page usually exposes around 20 listings. Defaults to 1 for a fast health-check run. Not a result cap; maxListings controls billing.",
            "default": 1
          },
          "enrichDetails": {
            "title": "Visit listing detail pages",
            "type": "boolean",
            "description": "Use this to visit each listing page for richer descriptions, features, media, coordinates, and agent fields. Detail enrichment is slower but improves completeness. Defaults to true. Not required when you only need search-card fields quickly.",
            "default": true
          },
          "propertyTypes": {
            "title": "Property types",
            "uniqueItems": true,
            "type": "array",
            "description": "Use this to keep only matching property categories after extraction. Accepted values include house, apartment, townhouse, villa, land, rural, studio, and unitBlock. Defaults to all property types. Not a guarantee that Domain's upstream page will expose only these types.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment",
                "townhouse",
                "villa",
                "land",
                "rural",
                "studio",
                "unitBlock"
              ]
            },
            "default": []
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Use this to filter known bedroom counts after extraction. Accepted range is 0 to 20, for example 2. Defaults to 0. Not a text keyword filter; unknown bedroom counts are kept unless detail enrichment resolves them.",
            "default": 0
          },
          "maxBedrooms": {
            "title": "Max bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Use this to filter known bedroom counts after extraction. Accepted range is 0 to 20, where 0 means no maximum. Defaults to 0. Not applied to listings whose bedroom count is unavailable from Domain.",
            "default": 0
          },
          "minPrice": {
            "title": "Min price AUD",
            "minimum": 0,
            "type": "integer",
            "description": "Use this to filter known list, rent, or sold prices in AUD. Accepted values are whole Australian dollars, for example 750000. Defaults to 0. Not applied when Domain only exposes price text such as Contact agent.",
            "default": 0
          },
          "maxPrice": {
            "title": "Max price AUD",
            "minimum": 0,
            "type": "integer",
            "description": "Use this to filter known list, rent, or sold prices in AUD. Accepted values are whole Australian dollars, for example 1500000. Defaults to 0 for no maximum. Not applied to price-on-application listings without numeric price data.",
            "default": 0
          },
          "auctionOnly": {
            "title": "Auction listings only",
            "type": "boolean",
            "description": "Use this when you only want listings that Domain marks as auctions. The actor checks extracted sale method and auction-date fields. Defaults to false. Not meaningful for most rental searches.",
            "default": false
          },
          "excludeUnderOffer": {
            "title": "Exclude under-offer listings",
            "type": "boolean",
            "description": "Use this to request active listings without under-offer stock where Domain supports that URL filter. The actor also post-filters obvious under-offer status text. Defaults to true for sale searches. Not a guarantee if the upstream page omits status labels.",
            "default": true
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "newest",
              "priceLow",
              "priceHigh",
              "default"
            ],
            "type": "string",
            "description": "Use this to pass a Domain search sort hint on generated location URLs. Accepted values are newest, priceLow, priceHigh, and default. Defaults to newest. Not used when startUrls already include their own sort query.",
            "default": "newest"
          },
          "maxConcurrency": {
            "title": "Max browser concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Use this to tune parallel page visits. Accepted range is 1 to 5; lower values are gentler on Domain and proxies. Defaults to 2. Not a result limit or billing cap.",
            "default": 2
          },
          "requestDelayMillis": {
            "title": "Delay between browser actions",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Use this to slow down navigation and reduce block risk. Accepted range is 0 to 10000 milliseconds, for example 1200. Defaults to 900. Not a timeout setting.",
            "default": 900
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Use this to override the default Apify residential AU proxy. Defaults to Apify RESIDENTIAL with AU country targeting because Domain uses Akamai. Keep the default unless you know your proxy can access Domain.com.au. Not a place for cookies or credentials.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}