{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Scraper — US Homes for Sale, Rent & Sold by ZIP or City",
    "description": "Drop-in compatible with maxcopell/zillow-zip-search and maxcopell/zillow-scraper — cheaper, and ZIP, city and URL search in one actor. Zillow listings as JSON: price, beds/baths, area, lot, status, days on Zillow, coordinates, photos, broker. Optional detail pass adds price history and MLS id.",
    "version": "1.0",
    "x-build-id": "IEifs2etvnbeKPygO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/diopside~zillow-us/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-diopside-zillow-us",
        "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/diopside~zillow-us/runs": {
      "post": {
        "operationId": "runs-sync-diopside-zillow-us",
        "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/diopside~zillow-us/run-sync": {
      "post": {
        "operationId": "run-sync-diopside-zillow-us",
        "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": {
          "zipCodes": {
            "title": "ZIP codes",
            "uniqueItems": true,
            "type": "array",
            "description": "US ZIP codes to search. Same field name as maxcopell/zillow-zip-search, so an existing input works unchanged.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Places",
            "uniqueItems": true,
            "type": "array",
            "description": "Cities, neighborhoods or counties in plain text — 'Austin, TX', 'Beverly Hills CA', 'Wicker Park, Chicago, IL'. Zillow resolves each to its own canonical region at run time.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Zillow search URLs",
            "type": "array",
            "description": "Zillow search pages to walk. Same field name as maxcopell/zillow-scraper. Region URLs (zillow.com/austin-tx/) are followed as given; ?searchQueryState= URLs are reduced to the place you typed, because robots.txt disallows that route.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "forSaleByAgent": {
            "title": "For sale by agent",
            "type": "boolean",
            "description": "Include homes listed for sale by a real estate agent.",
            "default": true
          },
          "forSaleByOwner": {
            "title": "For sale by owner",
            "type": "boolean",
            "description": "Include homes listed for sale by their owner (FSBO).",
            "default": false
          },
          "forRent": {
            "title": "For rent",
            "type": "boolean",
            "description": "Include rental listings. Runs as a separate Zillow search per location.",
            "default": false
          },
          "sold": {
            "title": "Recently sold",
            "type": "boolean",
            "description": "Include recently sold homes. Runs as a separate Zillow search per location.",
            "default": false
          },
          "priceMin": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price to keep (monthly rent for rentals). Applied to Zillow's own price field."
          },
          "priceMax": {
            "title": "Maximum price",
            "minimum": 1,
            "type": "integer",
            "description": "Highest price to keep (monthly rent for rentals)."
          },
          "bedsMin": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest bedrooms to keep. The ZIP incumbent has no bedroom filter at all."
          },
          "bedsMax": {
            "title": "Maximum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Most bedrooms to keep."
          },
          "bathsMin": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Fewest bathrooms to keep."
          },
          "sqftMin": {
            "title": "Minimum living area (sqft)",
            "minimum": 0,
            "type": "integer",
            "description": "Smallest living area to keep, in square feet."
          },
          "sqftMax": {
            "title": "Maximum living area (sqft)",
            "minimum": 1,
            "type": "integer",
            "description": "Largest living area to keep, in square feet."
          },
          "homeTypes": {
            "title": "Home types",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these Zillow home types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "SINGLE_FAMILY",
                "CONDO",
                "TOWNHOUSE",
                "MULTI_FAMILY",
                "APARTMENT",
                "MANUFACTURED",
                "LOT"
              ],
              "enumTitles": [
                "House",
                "Condo",
                "Townhouse",
                "Multi-family",
                "Apartment",
                "Manufactured",
                "Lot / land"
              ]
            }
          },
          "daysOnZillow": {
            "title": "Days on Zillow",
            "enum": [
              "",
              "1",
              "7",
              "14",
              "30",
              "90",
              "6m",
              "12m",
              "24m",
              "36m"
            ],
            "type": "string",
            "description": "Keep only listings newer than this (for sold homes, sold more recently than this).",
            "default": ""
          },
          "scrapePropertyDetails": {
            "title": "Scrape property details",
            "type": "boolean",
            "description": "Open each property's own page and add price history, the listing description, year built, lot size, price per square foot, MLS id and brokerage. One extra request per listing, and these records are charged as 'listing with details'.",
            "default": false
          },
          "resultsLimit": {
            "title": "Results limit",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum listings per location. Same meaning as the incumbent's field: with resultsLimit=10 and 5 ZIP codes you get up to 50 records."
          },
          "maxItems": {
            "title": "Maximum items (whole run)",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on records for the entire run, across every location. Leave empty for no cap."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Zillow's bot protection reads the TLS fingerprint before the IP, so this actor works with the proxy off. Turn a proxy on for large runs: one exit IP asked for hundreds of pages will eventually be rate-limited.",
            "default": {
              "useApifyProxy": false
            }
          },
          "residentialFallback": {
            "title": "Escalate to residential if blocked",
            "type": "boolean",
            "description": "If every retry on the configured proxy tier is blocked, move the rest of the run to RESIDENTIAL/US once. Residential bandwidth is billed by Apify, so a healthy run never touches it.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Maximum concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel requests to Zillow.",
            "default": 3
          },
          "maxRequestsPerMinute": {
            "title": "Maximum requests per minute",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Request rate ceiling. Zillow rate-limits a single exit IP, so raising this without a proxy invites 403s.",
            "default": 30
          },
          "maxRequestRetries": {
            "title": "Maximum request retries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Attempts per page before the target is reported as failed. Each retry rotates to a new session.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}