{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Rentals Scraper 💰 From $1.4/1K · Apartment Rent Ranges",
    "description": "Scrape Zillow rentals by city, ZIP code or URL. Apartment buildings and single rentals in one run, with address and coordinates; a complex found by search also carries its rent range. Floor plans, amenities and leasing contact with property details on. Past the 500-result cap.",
    "version": "0.0",
    "x-build-id": "PZSIgUUYcUeJxzgoq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~zillow-rentals-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-zillow-rentals-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-rentals-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-zillow-rentals-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-rentals-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-zillow-rentals-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": "City, neighborhood or ZIP",
            "type": "array",
            "description": "One location per line — \"Austin, TX\", \"Brooklyn, NY\" or a ZIP such as 78704. Each becomes its own search, using the Listing status below (For rent by default).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Zillow URLs to scrape as written. Accepts a search URL, a /homedetails/ property, a /b/ or /apartments/ building, a /community/ page, or a /profile/ agent page — the type is auto-detected. The filters above are not applied to these URLs: what the URL itself asks for is what you get, so paste a rentals URL if you want rentals. Example: https://www.zillow.com/austin-tx/rentals/",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "status": {
            "title": "Listing status",
            "enum": [
              "forSale",
              "forRent",
              "sold"
            ],
            "type": "string",
            "description": "For rent by default. Switch to For sale or Recently sold to run the same locations over those listing types. Applies to the locations above; a URL in Start URLs keeps whatever listing type it already carries.",
            "default": "forRent"
          },
          "moreResults": {
            "title": "Scrape beyond 500 results limit (for searches with more than 500 results)",
            "type": "boolean",
            "description": "Zillow limits search results to 500 properties per query. Enable this option if your search has more than 500 results. The scraper automatically splits the search area into smaller map areas, which takes the run far past the 500 cap. The split stops at a depth limit, so a dense enough area can still be truncated. Note: This process may take longer and consume more resources.",
            "default": false
          },
          "priceMin": {
            "title": "Minimum rent",
            "type": "integer",
            "description": "Lowest monthly rent to include — or lowest price, if you switched Listing status to For sale or Recently sold."
          },
          "priceMax": {
            "title": "Maximum rent",
            "type": "integer",
            "description": "Highest monthly rent to include — or highest price, if you switched Listing status to For sale or Recently sold."
          },
          "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": "Off by default. Follows every search row to its own Zillow page and adds the full record: the listing agent and broker, and a `details` object with Zillow's complete property data. An apartment complex is followed to its building page instead, which spreads the building record across the row with its floor plans under `floorPlans`. This toggle is also what makes the extra Flattened output columns and the email enrichment below reachable. A default run skips it and keeps the search-level columns, which already carry the rent range.",
            "default": false
          },
          "flatOutput": {
            "title": "Flattened output",
            "type": "boolean",
            "description": "On a location search it needs Include Property Details on as well, since there is nothing to flatten until a detail page is fetched; a pasted property, building, community or agent URL is flattened either way. With both on, a single-rental row drops the nested `details` blob and gains flat scalar columns instead: Listing Date, Days on Zillow, Year Built, Status, Beds, Baths, Sq Ft, MLS ID, MLS Status, Annual Tax, Price History, New Roof flag and Permit History. Easier to import into spreadsheets. An apartment-complex row takes the building path, which has no detail fetch, so it only loses its photo arrays.",
            "default": false
          },
          "enrichEmails": {
            "title": "Enrich with the agent's contact email (billed per email found)",
            "type": "boolean",
            "description": "On a location search it needs Include Property Details on as well, because the match runs during the detail fetch; a pasted /homedetails/ property URL is fetched as a detail page anyway and needs no other toggle. Where it runs, a single-rental row gains the listing agent's email and phone in contactEmail + contactPhone, matched from our database of 1,200,000+ U.S. agents, ~99.9% of which have an email on file. An apartment-complex row takes the building path and is never enriched. Billed per email found; only charged when an email is returned, never for misses. (On a /profile/ agent URL in Start URLs it instead discovers a contact email from the agent's own website, and needs no other toggle.)",
            "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 pages that can be processed at the same time. Anything above 32 is capped to 32 — the HTTP client crashes beyond roughly that many parallel sockets.",
            "default": 20
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "maximum": 20,
            "type": "integer",
            "description": "Number of times the crawler will retry a failed request before giving up.",
            "default": 5
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "On a paid Apify plan this input is ignored: the actor routes every request through its own residential proxy at no extra cost to you. On the free plan the run uses whatever you set here, and Zillow refuses search requests coming from Apify's default datacenter proxy — which is what you get by leaving this empty — so pick Apify Proxy with the RESIDENTIAL group, or enter 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}