{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Properties - Rentals, New Listings & Price Changes",
    "description": "Search Zillow properties from city search URLs. One row per property or rental building: address, price, beds, baths, area, status and URL; building unit options included. Price and bedroom filters; monitor new listings and price changes. Parsed pages are billed even when no rows match.",
    "version": "1.0",
    "x-build-id": "1Vppuad4US4edefio"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kestrel~zillow-property-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kestrel-zillow-property-search",
        "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/kestrel~zillow-property-search/runs": {
      "post": {
        "operationId": "runs-sync-kestrel-zillow-property-search",
        "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/kestrel~zillow-property-search/run-sync": {
      "post": {
        "operationId": "run-sync-kestrel-zillow-property-search",
        "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": [
          "searchUrls"
        ],
        "properties": {
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Zillow city sale or rental search URLs, for example [\"https://www.zillow.com/austin-tx/\"] or [\"https://www.zillow.com/austin-tx/rentals/\"]. Up to 20. HTTPS www.zillow.com only; property-detail and building-detail URLs are not accepted. Query parameters from pasted searches are preserved.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerSource": {
            "title": "Maximum delivered rows per source",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum matching rows per search after filters and monitoring; for example 50. Default 50, maximum 1000. A ceiling, not a guarantee. Deduplicated across the run; Google IDs include domain, query and country; only the first visible result per domain is kept.",
            "default": 50
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "number",
            "description": "Minimum price in source numeric fields, for example 400000. Zero disables the bound. Missing values do not pass active bounds; rental buildings usually have null scalar price/beds and are excluded when those bounds are active. Unit options are preserved separately.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "number",
            "description": "Maximum price in source numeric fields, for example 400000. Zero disables the bound. Missing values do not pass active bounds; rental buildings usually have null scalar price/beds and are excluded when those bounds are active. Unit options are preserved separately.",
            "default": 0
          },
          "minBeds": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "number",
            "description": "Minimum bedrooms in source numeric fields, for example 3. Zero disables the bound. Missing values do not pass active bounds; rental buildings usually have null scalar price/beds and are excluded when those bounds are active. Unit options are preserved separately.",
            "default": 0
          },
          "maxBeds": {
            "title": "Maximum bedrooms",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "number",
            "description": "Maximum bedrooms in source numeric fields, for example 3. Zero disables the bound. Missing values do not pass active bounds; rental buildings usually have null scalar price/beds and are excluded when those bounds are active. Unit options are preserved separately.",
            "default": 0
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed rows",
            "type": "boolean",
            "description": "true emits new IDs or changes in price text, numeric price, currency, status or building unit options. First run delivers the baseline; use the same monitorKey later. Successful unchanged checks still pay page fees. Default false.",
            "default": false
          },
          "titleContains": {
            "title": "Title includes any",
            "type": "array",
            "description": "Keep titles containing any phrase, case-insensitive, for example [\"engineer\"]. For Zillow, title is building name or address. Empty disables it. Applied before row billing; parsed pages are still billed.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "titleExcludes": {
            "title": "Title excludes any",
            "type": "array",
            "description": "Drop titles containing any phrase, case-insensitive, for example [\"senior\"]. Empty disables it. Filtered rows have no row fee; parsed pages still carry their fee.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "monitorKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Persistent history name, for example \"daily-watch\". Use 1–60 letters, digits, underscores or hyphens. Use the same targets, filters and name for repeat runs. Keeps the latest 50,000 delivered IDs. Do not overlap runs sharing this name.",
            "default": "default"
          },
          "excludeIds": {
            "title": "Previously collected IDs",
            "type": "array",
            "description": "Skip exact output id values. Up to 10,000. Useful for external deduplication; excluded rows have no row fee, but parsed pages are billed.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxPagesPerSource": {
            "title": "Maximum pages per source",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Safety cap on parsed pages per search, for example 5. Default 5, maximum 20. Each parsed page costs $0.02, including filtered or unchanged checks. Both this cap and maxResultsPerSource apply.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}