{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow & Redfin Property Data Scraper",
    "description": "Look up any US home by street address — city or rural — and get up to 50 structured fields: Redfin Estimate, price and tax history, beds/baths/sqft, listing agent phone, schools, FEMA flood zone, climate risk, from Redfin and Zillow, with Realtor.com as an option. Pay per match; misses are free.",
    "version": "0.0",
    "x-build-id": "ogWTcnCn3x8mk2FZL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapebench~zillow-redfin-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapebench-zillow-redfin-property-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/scrapebench~zillow-redfin-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapebench-zillow-redfin-property-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/scrapebench~zillow-redfin-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapebench-zillow-redfin-property-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": {
          "address": {
            "title": "Property address",
            "type": "string",
            "description": "Full US property address, e.g. '745 Garland Dr, Palo Alto, CA 94303'. To look up several properties, use 'Property addresses' below — one run handles the whole list on a single browser, which is faster and cheaper than a run per address."
          },
          "addresses": {
            "title": "Property addresses (batch)",
            "type": "array",
            "description": "Look up many properties in ONE run. Each address is scraped on the same warm browser and pushed as its own row, so a batch is substantially faster than starting a run per address. Combined with 'Property address' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per matched property, not per address submitted. A batch stops early, with a free notice row listing the addresses it skipped, when your run's maximum charge is reached, or when the batch clearly isn't working: fewer than 3 of the first 50 addresses found (usually a list missing city, state or ZIP), 200 misses in a row, or 10 lookups in a row refused by the sites or timed out. Ordinary misses mixed into a list don't stop it.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "source": {
            "title": "Listing source",
            "enum": [
              "auto",
              "redfin",
              "zillow",
              "realtor",
              "all"
            ],
            "type": "string",
            "description": "Which site to look the property up on. 'Auto' tries Redfin first (the full 40-field record) and falls back to Zillow (core physical facts) when Redfin has no exact match — no proxy setting needed. Pick a single source to pin the lookup to it.\n\n'Realtor.com only' and 'All sources' (opt-in): 'All sources' runs Auto and also looks the address up on Realtor.com, returning ONE merged row per address — the Redfin/Zillow record plus Realtor's own value estimate (with its low–high range), listing agent phone/email, listing office, buyer's agent on sold homes, HOA fee and list date, with any gap filled from Realtor and named in 'filledFrom'. This actor's price is the same in every mode (one charge per matched address). IMPORTANT: Realtor.com pages can only be opened through Apify's Web Fetch service, which this run calls with YOUR Apify account, so Apify bills you for it separately (about $0.0015 per Realtor page on the Free plan, less on paid plans). It is only called for addresses Realtor.com has an exact match for, and Realtor is switched off for the rest of the run after 5 refused pages in a row. Realtor lookups take ~15 s each (several run at once).",
            "default": "auto"
          },
          "useProxy": {
            "title": "Use residential proxy",
            "type": "boolean",
            "description": "Route the Redfin browser through Apify residential proxy. Default off (direct). Turn on only for IP rate-limiting at high volume. Zillow lookups always use residential IPs on their own, whatever this is set to.",
            "default": false
          },
          "monitorMode": {
            "title": "Only homes that changed since my last run (monitor)",
            "type": "boolean",
            "description": "Off: every address returns its full record, every run. On: a matched home is returned (and charged) only if it is new to this watch or its price, status, price label, last sale date, MLS number, listing agent or brokerage, list date or HOA fee changed since your previous monitored run with the same addresses and source; each such row says change: new or changed. Estimates (Redfin Estimate, Zestimate) moving on their own do not count. Addresses not found still return their free not-found row. The first monitored run returns everything; a run where no home changed returns one free no_change row.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}