{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Property Scraper with Agents & Description",
    "description": "Extract Zillow property listings at scale with prices, full descriptions, photo galleries, coordinates, property facts, amenities, and agent contacts. Built for market research, comps, inventory monitoring, CRM enrichment, BI, and ETL pipelines.",
    "version": "0.1",
    "x-build-id": "AgF0XmqK66b5Np7jI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fatihtahta~zillow-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fatihtahta-zillow-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/fatihtahta~zillow-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fatihtahta-zillow-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/fatihtahta~zillow-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fatihtahta-zillow-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": {
          "location": {
            "title": "Set a Location (City, State, ZIP Code, Neighborhood, or Market)",
            "type": "string",
            "description": "Enter a Zillow-supported market such as Austin, TX; 75001; Brooklyn; or Los Angeles, CA. Use one focused market per run when you need cleaner comparisons, recurring monitoring, or downstream deduplication."
          },
          "deal_type": {
            "title": "Choose the Zillow Listing Mode",
            "enum": [
              "buy",
              "rent",
              "sold"
            ],
            "type": "string",
            "description": "Choose whether the query should collect sale listings, rental listings, or sold listing history. URL seeds remain independent, but this mode is used when building a structured Zillow search.",
            "default": "buy"
          },
          "sort_by": {
            "title": "Choose the Zillow Result Sort Order",
            "enum": [
              "globalrelevanceex",
              "days",
              "priced",
              "pricea",
              "paymentd",
              "paymenta",
              "beds",
              "baths",
              "size",
              "lot",
              "zest",
              "zesta"
            ],
            "type": "string",
            "description": "Select how Zillow should order matching listings before collection. Use newest for monitoring fresh inventory, price sorts for market analysis, or relevance for Zillow's default ranking.",
            "default": "globalrelevanceex"
          },
          "min_price": {
            "title": "Set the Minimum Asking Price or Rent",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with a Zillow price at or above this amount. Pair price ranges with a focused location and listing mode when building comparable market slices for monitoring, dashboards, or ETL ingestion."
          },
          "max_price": {
            "title": "Set the Maximum Asking Price or Rent",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with a Zillow price at or below this amount. Use this with the minimum price field when you need a bounded price band for reporting, alerts, or CRM enrichment."
          },
          "min_monthly_payment": {
            "title": "Set the Minimum Estimated Monthly Payment",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with a Zillow monthly payment estimate at or above this amount. Use payment filters when monthly affordability bands matter more than headline listing price."
          },
          "max_monthly_payment": {
            "title": "Set the Maximum Estimated Monthly Payment",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with a Zillow monthly payment estimate at or below this amount. This is useful for affordability monitoring, lead routing, or buyer-profile matching."
          },
          "bedroom_count": {
            "title": "Choose the Minimum Bedroom Count",
            "uniqueItems": true,
            "type": "array",
            "description": "Select the bedroom threshold to request from Zillow. Use this to keep output focused on comparable property sizes for market analysis, saved searches, or CRM segmentation.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1+",
                "2+",
                "3+",
                "4+",
                "5+"
              ]
            }
          },
          "bathroom_count": {
            "title": "Choose the Minimum Bathroom Count",
            "uniqueItems": true,
            "type": "array",
            "description": "Select the bathroom threshold to request from Zillow. Pair it with bedrooms and property type when you need consistent listing slices for dashboards or recurring monitoring.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1+",
                "2+",
                "3+",
                "4+",
                "5+"
              ]
            }
          },
          "property_type": {
            "title": "Choose Property Types to Include",
            "uniqueItems": true,
            "type": "array",
            "description": "Limit the query to selected Zillow property categories such as houses, condos, apartments, townhomes, manufactured homes, or lots. Leave empty when your workflow should include all supported property types for the chosen market and listing mode.",
            "items": {
              "type": "string",
              "enum": [
                "houses",
                "condos_coops",
                "apartments_condos_coops",
                "multi_family",
                "apartments",
                "manufactured",
                "lots_land",
                "townhomes",
                "room",
                "entire_place"
              ],
              "enumTitles": [
                "Houses",
                "Condos/Co-ops",
                "Apartments/Condos/Co-ops",
                "Multi-family",
                "Apartments",
                "Manufactured",
                "Lots/Land",
                "Townhomes",
                "Room",
                "Entire place"
              ]
            }
          },
          "max_hoa": {
            "title": "Set the Maximum Monthly HOA Fee",
            "enum": [
              "0",
              "50",
              "100",
              "200",
              "300",
              "400",
              "500",
              "600",
              "700",
              "800",
              "900",
              "1000",
              "1500",
              "2000"
            ],
            "type": "string",
            "description": "Only include listings with HOA fees at or below the selected monthly amount. Use this for buyer-affordability review, community-fee monitoring, or cleaner recurring exports."
          },
          "listing_type": {
            "title": "Choose Listing Source and Ownership Categories",
            "uniqueItems": true,
            "type": "array",
            "description": "Limit results to selected Zillow listing categories such as agent-listed homes, owner-posted homes, new construction, auctions, foreclosures, or pre-foreclosures.",
            "items": {
              "type": "string",
              "enum": [
                "agent_listed",
                "owner_posted",
                "new_construction",
                "foreclosures",
                "auctions",
                "foreclosed",
                "pre_foreclosures"
              ],
              "enumTitles": [
                "Agent-listed homes",
                "Owner-posted homes",
                "New construction",
                "Foreclosure listings",
                "Auction listings",
                "Foreclosed homes",
                "Pre-foreclosures"
              ]
            }
          },
          "listing_status": {
            "title": "Choose Listing Statuses to Include",
            "uniqueItems": true,
            "type": "array",
            "description": "Limit results to selected Zillow status groups such as active, coming soon, pending, under contract, or accepting backup offers. Status filters are useful for inventory monitoring and alert workflows.",
            "items": {
              "type": "string",
              "enum": [
                "active",
                "coming_soon",
                "zillow_preview",
                "pending_under_contract",
                "accepting_backup_offers"
              ],
              "enumTitles": [
                "Active",
                "Coming soon",
                "Zillow Preview",
                "Pending & under contract",
                "Accepting backup offers"
              ]
            }
          },
          "tours": {
            "title": "Require Open House, 3D Tour, or Showcase Signals",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter for listings that expose selected visit or presentation options. Use this when your workflow needs open-house monitoring, virtual-tour review, or richer listing presentation signals.",
            "items": {
              "type": "string",
              "enum": [
                "open_house",
                "3d_tour",
                "showcase"
              ],
              "enumTitles": [
                "Open house",
                "3D tour",
                "Showcase listing"
              ]
            }
          },
          "min_parking": {
            "title": "Choose the Minimum Parking Capacity",
            "enum": [
              "1+",
              "2+",
              "3+",
              "4+"
            ],
            "type": "string",
            "description": "Only include listings with at least the selected number of parking spaces. Use this for car-dependent markets, household-fit filters, or lead qualification workflows."
          },
          "closed_garage": {
            "title": "Require a Garage",
            "type": "boolean",
            "description": "Enable this to request listings that include garage parking. Leave it off when open parking, driveway parking, or unspecified parking should remain in scope.",
            "default": false
          },
          "min_floor_area": {
            "title": "Set the Minimum Floor Area",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with interior floor area at or above this square-foot value. Use this for size-based market slices, underwriting review, or comparable-property exports."
          },
          "max_floor_area": {
            "title": "Set the Maximum Floor Area",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with interior floor area at or below this square-foot value. Pair it with the minimum floor area field to keep outputs within a targeted size band."
          },
          "min_land_area": {
            "title": "Set the Minimum Lot Size",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with lot size at or above this square-foot value. Use this when land area matters for investment review, development screening, or property matching."
          },
          "max_land_area": {
            "title": "Set the Maximum Lot Size",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings with lot size at or below this square-foot value. Pair it with the minimum lot size field for cleaner land-area comparisons."
          },
          "min_building_year": {
            "title": "Set the Earliest Building Year",
            "type": "integer",
            "description": "Only include listings built in or after this year. Use a four-digit year such as 1990 or 2015 when age of construction matters for analysis or qualification."
          },
          "max_building_year": {
            "title": "Set the Latest Building Year",
            "type": "integer",
            "description": "Only include listings built in or before this year. Pair it with the earliest building year field to collect listings from a specific construction era."
          },
          "basement": {
            "title": "Require Basement Mentions",
            "type": "boolean",
            "description": "Enable this to request listings that mention a basement. Leave it off when basement presence should not affect the query scope.",
            "default": false
          },
          "single_story": {
            "title": "Require Single-Story Listings",
            "type": "boolean",
            "description": "Enable this to focus on single-story properties. This is useful for accessibility review, buyer matching, or consistent property comparisons.",
            "default": false
          },
          "55_plus_communities": {
            "title": "Choose How to Treat 55+ Communities",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "Choose whether age-restricted 55+ community listings should remain in scope, be excluded, or be the only listings requested."
          },
          "amenities": {
            "title": "Require Amenities or Rental Features",
            "uniqueItems": true,
            "type": "array",
            "description": "Select amenities or rental features that matching listings should include. Use amenities to narrow broad markets for tenant-fit, buyer-fit, CRM segmentation, or alert workflows.",
            "items": {
              "type": "string",
              "enum": [
                "air_conditioning",
                "pool",
                "waterfront",
                "disabled_access",
                "hardwood_floors",
                "utilities_included",
                "fitness_center",
                "dishwasher",
                "high_speed_internet",
                "elevator",
                "furnished",
                "outdoor_space",
                "pets_allowed",
                "in_unit_laundry",
                "short_term_lease",
                "controlled_access",
                "no_pets",
                "promotion"
              ],
              "enumTitles": [
                "Air conditioning",
                "Pool",
                "Waterfront",
                "Disabled access",
                "Hardwood floors",
                "Utilities included",
                "Fitness center",
                "Dishwasher",
                "High speed internet",
                "Elevator",
                "Furnished",
                "Outdoor space",
                "Pets allowed",
                "In-unit laundry",
                "Short term lease",
                "Controlled access",
                "No pets",
                "Promotion"
              ]
            }
          },
          "view": {
            "title": "Require Specific View Types",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter for listings with selected view types such as city, mountain, park, or water views. Leave empty when view type should not narrow the dataset.",
            "items": {
              "type": "string",
              "enum": [
                "city",
                "mountain",
                "park",
                "water"
              ],
              "enumTitles": [
                "City view",
                "Mountain view",
                "Park view",
                "Water view"
              ]
            }
          },
          "commute_time": {
            "title": "Set a Commute Destination",
            "type": "string",
            "description": "Enter a destination that Zillow can use for commute-time filtering, such as Downtown Austin or a workplace address. Use this when commute fit is part of lead scoring, relocation review, or saved-search monitoring."
          },
          "price_reduced": {
            "title": "Only Include Listings With a Price Reduction",
            "type": "boolean",
            "description": "Enable this to focus on listings Zillow marks as price reduced. This is useful for deal monitoring, alerting, repricing analysis, or market-watch workflows.",
            "default": false
          },
          "publication_date": {
            "title": "Limit by Listing Freshness",
            "enum": [
              "any",
              "1",
              "7",
              "14",
              "30",
              "90",
              "6m",
              "12m",
              "24m",
              "36m"
            ],
            "type": "string",
            "description": "Limit the query by Zillow's days-on-market window. Use shorter windows for new-listing alerts and longer windows for market analysis or fuller historical review within the selected listing mode."
          },
          "keyword": {
            "title": "Search for a Keyword or Phrase",
            "type": "string",
            "description": "Search Zillow listing text for a keyword or phrase such as pool, waterfront, ADU, furnished, or fixer. Use keywords when structured filters are not specific enough for your workflow."
          },
          "url": {
            "title": "Add Direct Zillow URLs (Search Pages, Map/List Pages, or Listings)",
            "type": "array",
            "description": "Paste one supported Zillow URL per line. Use URLs for repeatable monitoring of known searches or specific listings; use the query builder below when you want the actor to create a Zillow search from location, deal type, and filters.",
            "items": {
              "type": "string"
            }
          },
          "maximize_coverage": {
            "title": "Collect More Matching Listings From Broad Searches",
            "type": "boolean",
            "description": "Enable this for large location and filter combinations where first-window results are not enough. Leave it off for faster validation runs, narrow saved searches, or workflows where the first visible set of matching listings is sufficient.",
            "default": true
          },
          "enrich_data": {
            "title": "Collect Richer Details From Individual Listing Pages",
            "type": "boolean",
            "description": "Keep this enabled when downstream review, CRM enrichment, BI reporting, or ETL workflows need richer property listing details. Turn it off for faster validation runs when standard search-result fields are enough.",
            "default": true
          },
          "mcpConnectors": {
            "title": "MCP Delivery Connectors",
            "uniqueItems": true,
            "type": "array",
            "description": "Choose user-authorized MCP connectors for optional post-run delivery of a compact run summary with dataset, summary, and map links when Apify provides them. Leave empty to only save listings to the Apify dataset and key-value store.",
            "default": []
          },
          "limit": {
            "title": "Set the Maximum Number of Listings to Save",
            "minimum": 1,
            "type": "integer",
            "description": "Choose the maximum number of property records to save for this run. Start small to validate the output shape, then increase it for scheduled monitoring, dashboard refreshes, CRM imports, or ETL ingestion."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}