{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Property Detail Scraper",
    "description": "Get the full Zillow property record from a listing link, street address or Zillow ID: price, Zestimate, rent estimate, beds, baths, sqft, year built, HOA, tax rate, MLS ID, listing agent and phone, brokerage and every photo. Works for apartment buildings and new-build communities too.",
    "version": "0.3",
    "x-build-id": "SEa5eyvoV9ARKh0cg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/studioxl~zillow-detail-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-studioxl-zillow-detail-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/studioxl~zillow-detail-scraper/runs": {
      "post": {
        "operationId": "runs-sync-studioxl-zillow-detail-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/studioxl~zillow-detail-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-studioxl-zillow-detail-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": "Property URLs",
            "type": "array",
            "description": "Zillow page links. Three kinds work:\n\n• /homedetails/… a single home, the full 60-field record\n• /apartments/… a rental building: unit count, rent and bed ranges, leasing contact\n• /community/… a builder community: spec homes, plans, builder name and phone\n\n/b/… building pages are accepted but usually return very little.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "addresses": {
            "title": "Street addresses or Zillow IDs (one per line)",
            "type": "array",
            "description": "For example \"21386 Sunnyside Rd, Los Gatos, CA 95033\" or \"24996529\". Anything that can't be matched is listed in the log and skipped.",
            "items": {
              "type": "string"
            }
          },
          "searchResultsDatasetId": {
            "title": "Search results dataset",
            "type": "string",
            "description": "Pick the dataset from a finished Zillow Search Scraper run and every home it found gets its full record. Search wide and cheap first, then pay detail prices only on the rows you keep."
          },
          "maxItems": {
            "title": "Maximum properties",
            "minimum": 0,
            "type": "integer",
            "description": "Your spend cap. The run stops after this many properties. Set it low for a first test. 100 properties cost about $0.24 on the Free plan. Set 0 for no cap.",
            "default": 100
          },
          "photoMaxWidth": {
            "title": "Photo width",
            "enum": [
              "192",
              "384",
              "576",
              "768",
              "960",
              "1152",
              "1344",
              "1536"
            ],
            "type": "string",
            "description": "Width of the photo URLs in pixels. 1536 is the largest. This changes the image at each URL, not the price.",
            "default": "1536"
          },
          "expandBuildingUnits": {
            "title": "Expand buildings into individual units",
            "type": "boolean",
            "description": "For apartment buildings and builder communities: one row per unit instead of one summary row. A tested building gave 24 unit rows, each with its own rent and bedroom count. Each unit is a charged row, so a 200-unit building costs as much as 200 homes. Each unit row repeats the building's photos.",
            "default": false
          },
          "mergeRelistedProperties": {
            "title": "Merge re-listed properties",
            "type": "boolean",
            "description": "A home taken off the market and re-listed gets a new Zillow ID. When on, listings at the same spot with the same price and size come back once, so you aren't charged twice for one house.",
            "default": true
          },
          "onlyNewSinceLastRun": {
            "title": "Only new or changed properties",
            "type": "boolean",
            "description": "Remembers every home across runs and returns only new ones, or ones whose price, Zestimate, rent estimate, status or description changed. Unchanged homes are skipped and not charged. Changed rows carry changeDetected: true.",
            "default": false
          },
          "dedupeStoreName": {
            "title": "Memory store name",
            "type": "string",
            "description": "Used only with monitoring on. Keep the same name across a schedule. Use a different name for each list you track, for example \"austin-watchlist\".",
            "default": "zillow-dedupe"
          },
          "respectRobotsTxt": {
            "title": "Skip unsupported page types",
            "type": "boolean",
            "description": "Leave on. Skips a few Zillow map-pin links (/b/…_ll/) and notes them in the log. Normal home, apartment and community links are unaffected.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel workers",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Leave at 10. Higher values don't make runs faster.",
            "default": 10
          },
          "maxRequestsPerMinute": {
            "title": "Pace per minute",
            "minimum": 10,
            "maximum": 600,
            "type": "integer",
            "description": "Leave at 300. Higher values don't make runs faster.",
            "default": 300
          },
          "proxyConfiguration": {
            "title": "Connection settings",
            "type": "object",
            "description": "Leave as is. Changing this usually returns no results.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}