{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow ZIP Code Search Scraper 💰 From $1.4/1K · Bulk ZIP Lists",
    "description": "Give it a list of ZIP codes and get Zillow listings in them, for sale, for rent or recently sold. Turn on More results and raise Max items to split a dense ZIP past Zillow's 500-per-search cap. Price, status, address and coordinates per row; agent and broker with details on.",
    "version": "0.0",
    "x-build-id": "3ddkD9KQmsm8e7tmv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~zillow-zip-code-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-zillow-zip-code-search-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/memo23~zillow-zip-code-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-zillow-zip-code-search-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/memo23~zillow-zip-code-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-zillow-zip-code-search-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": {
          "searchLocation": {
            "title": "ZIP codes",
            "type": "array",
            "description": "One ZIP code per line, e.g. 78704. Each becomes its own search. City names (\"Austin, TX\") work too.",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "title": "Listing status",
            "enum": [
              "forSale",
              "forRent",
              "sold"
            ],
            "type": "string",
            "description": "Which listings to return for the search location(s).",
            "default": "forSale"
          },
          "moreResults": {
            "title": "Scrape beyond 500 results limit (for searches with more than 500 results)",
            "type": "boolean",
            "description": "Zillow caps a single search at 500 results. Turn this on and the search is split into smaller map areas, so a dense ZIP gets past that cap. Raise Max items to match: the default of 100 stops the run long before the split has delivered everything.",
            "default": false
          },
          "priceMin": {
            "title": "Price / rent: minimum ($)",
            "type": "integer",
            "description": "Minimum sale price, or minimum monthly rent when status is For rent. Leave blank for no minimum."
          },
          "priceMax": {
            "title": "Price / rent: maximum ($)",
            "type": "integer",
            "description": "Maximum sale price, or maximum monthly rent when status is For rent. Leave blank for no maximum."
          },
          "bedsMin": {
            "title": "Bedrooms: minimum",
            "type": "integer",
            "description": "Minimum bedrooms."
          },
          "bathsMin": {
            "title": "Bathrooms: minimum",
            "type": "integer",
            "description": "Minimum bathrooms."
          },
          "homeTypes": {
            "title": "Home types",
            "type": "array",
            "description": "Limit to specific property types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "townhouse",
                "condo",
                "apartment",
                "manufactured",
                "lotLand",
                "multiFamily"
              ],
              "enumTitles": [
                "Houses",
                "Townhomes",
                "Condos/Co-ops",
                "Apartments",
                "Manufactured",
                "Lots/Land",
                "Multi-family"
              ]
            }
          },
          "includePropertyDetails": {
            "title": "Include Property Details",
            "type": "boolean",
            "description": "Include property details in the output.",
            "default": false
          },
          "flatOutput": {
            "title": "Flattened output",
            "type": "boolean",
            "description": "Needs Include Property Details switched on as well — the flat columns are built during the per-property detail fetch, so on a plain search this toggle changes nothing. With both on, the nested `details` GraphQL blob is dropped and flat scalar columns are appended instead: Listing Date, Days on Zillow, Year Built, Status, Beds, Baths, Sq Ft, MLS ID, MLS Status, Annual Tax, Tax Assessed Value, a price-history summary, New Roof flag, Permit History, Detail URL. Smaller rows, easier to import into spreadsheets. The `Agent Email` / `Broker Email` columns come from Zillow's own listing attribution, which is usually empty — the looked-up email is `contactEmail`, from the enrichment toggle below.",
            "default": false
          },
          "enrichEmails": {
            "title": "Enrich with the agent's contact email (billed per email found)",
            "type": "boolean",
            "description": "If enabled, adds the listing agent's email (and phone) to every property we can match — from our database of 1,200,000+ U.S. agents, ~99.9% of which have an email on file. Adds contactEmail, contactPhone and agentEmailSource columns, empty on a miss so the column set stays stable. Billed per email found; only charged when an email is returned, never for misses. Needs Include Property Details switched on as well — the lookup runs during the per-property detail fetch.",
            "default": false
          },
          "maxItems": {
            "title": "Max Items",
            "type": "integer",
            "description": "Maximum number of items to scrape.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of requests the scraper runs in parallel. Anything above 32 is capped at 32 — the native HTTP client crashes beyond that.",
            "default": 20
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "maximum": 20,
            "type": "integer",
            "description": "Upper bound on how many times a failed request is retried before the scraper gives up. Some request types use a lower internal cap (4 or 10 tries) whatever you set here.",
            "default": 5
          },
          "proxy": {
            "title": "Proxy configuration (used on the free plan only)",
            "type": "object",
            "description": "On a paid Apify plan this field is not read at all: the run always goes out through the actor's own residential proxy pool, at no extra cost to you. On the free plan it is read, and leaving it empty means Apify's default datacenter proxy, which Zillow refuses — so on the free plan set it to Apify RESIDENTIAL or your own residential proxy URLs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}