{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Price Tracker & Scraper - Price Drops, API & MCP",
    "description": "Scrape and monitor Zillow new listings, price drops, rentals, FSBO and sold homes by city, ZIP code, link or street address: cuts with dates, Zestimate, price per sq ft and rent yield. Only changes returns what moved since the last run, with Slack, Discord or Teams alerts and an MCP server.",
    "version": "0.1",
    "x-build-id": "5Rl90VsThxjUs4U5H"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/akhil_rajesh~zillow-price-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-akhil_rajesh-zillow-price-tracker",
        "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/akhil_rajesh~zillow-price-tracker/runs": {
      "post": {
        "operationId": "runs-sync-akhil_rajesh-zillow-price-tracker",
        "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/akhil_rajesh~zillow-price-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-akhil_rajesh-zillow-price-tracker",
        "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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Where to read homes: a city and state (Austin, TX), a ZIP code (78744), a county (Travis County, TX), a neighborhood (Mueller, Austin, TX), or a Zillow search page link (zillow.com/austin-tx/). A link's own filters aren't read: use the filters below.",
            "items": {
              "type": "string"
            }
          },
          "homes": {
            "title": "Homes",
            "type": "array",
            "description": "Specific homes to read from their own pages: Zillow home links (zillow.com/homedetails/.../12345678_zpid/), zpids, or street addresses with the city and state or ZIP code ('2433 Calle Moreno, Brownsville, TX 78521'). An address is matched to exactly one Zillow home, or answered as not found (free) with Zillow's suggestions. Up to 20 a run (Zillow refuses a visitor's home pages after about 26): price, status, Zestimate, description, year built, HOA fee, agent, MLS id, views and all photos.",
            "items": {
              "type": "string"
            }
          },
          "listingTypes": {
            "title": "Listing types",
            "type": "array",
            "description": "For sale, recently sold, or for rent. Each location is searched for each type picked.",
            "items": {
              "type": "string",
              "enum": [
                "forSale",
                "sold",
                "forRent"
              ],
              "enumTitles": [
                "For sale",
                "Recently sold",
                "For rent"
              ]
            },
            "default": [
              "forSale"
            ]
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Most homes (rows) a run returns, shared between locations. With Only changes: most changes a run returns (the most important first; the rest come with the next run).",
            "default": 1000
          },
          "onlyChanges": {
            "title": "Only changes since the last run",
            "type": "boolean",
            "description": "Track your locations: each run returns only what changed since the last run with the same locations and filters (new listings, price cuts and increases, homes back on the market, sold, pending or removed). The first run saves the homes listed now as the baseline and returns them as firstRun. Each location is read whole (cities over Zillow's 820 by ZIP code) so no change is missed."
          },
          "changeTypes": {
            "title": "Changes to return",
            "type": "array",
            "description": "Which changes Only changes returns. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "priceCut",
                "newListing",
                "backOnMarket",
                "sold",
                "pending",
                "removed",
                "priceIncrease",
                "newSale"
              ],
              "enumTitles": [
                "Price cuts",
                "New listings",
                "Back on the market",
                "Sold",
                "Pending",
                "Removed (off the market)",
                "Price increases",
                "New sales (Recently sold listing type)"
              ]
            }
          },
          "alertWebhookUrl": {
            "title": "Alert webhook URL",
            "type": "string",
            "description": "Post each run's changes to Slack, Discord or Microsoft Teams (their incoming-webhook URL), or to any HTTPS endpoint that takes JSON (Zapier, Make, n8n). Switches on Only changes. The first run posts a short 'alerts are set up' message."
          },
          "alertChangeTypes": {
            "title": "Alert on",
            "type": "array",
            "description": "Which changes are posted. Leave empty for price cuts, new listings, homes back on the market and sold homes.",
            "items": {
              "type": "string",
              "enum": [
                "priceCut",
                "newListing",
                "backOnMarket",
                "sold",
                "pending",
                "removed",
                "priceIncrease",
                "newSale"
              ],
              "enumTitles": [
                "Price cuts",
                "New listings",
                "Back on the market",
                "Sold",
                "Pending",
                "Removed (off the market)",
                "Price increases",
                "New sales"
              ]
            }
          },
          "historyName": {
            "title": "History name",
            "type": "string",
            "description": "Keep a separate history for this tracker (a-z, 0-9 and hyphens). Leave empty to share the default one: histories are kept per location, listing type and filters anyway."
          },
          "minPrice": {
            "title": "Minimum price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Leave empty or 0 for no minimum. For rentals: monthly rent."
          },
          "maxPrice": {
            "title": "Maximum price ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Leave empty or 0 for no maximum. For rentals: monthly rent."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Leave empty or 0 for any."
          },
          "minBathrooms": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Leave empty or 0 for any."
          },
          "homeTypes": {
            "title": "Home types",
            "type": "array",
            "description": "Leave empty for every type.",
            "items": {
              "type": "string",
              "enum": [
                "SINGLE_FAMILY",
                "TOWNHOUSE",
                "CONDO",
                "MULTI_FAMILY",
                "MANUFACTURED",
                "LOT",
                "APARTMENT"
              ],
              "enumTitles": [
                "Houses",
                "Townhomes",
                "Condos",
                "Multi-family",
                "Manufactured",
                "Lots and land",
                "Apartments"
              ]
            }
          },
          "listingKinds": {
            "title": "Listing kinds",
            "type": "array",
            "description": "Only these kinds of homes for sale, as Zillow marks them. Leave empty for every kind. The whole place is read and the kinds picked out, so a rare kind (auction, foreclosure) can take many pages for a few homes.",
            "items": {
              "type": "string",
              "enum": [
                "owner",
                "newConstruction",
                "comingSoon",
                "auction",
                "foreclosure",
                "preForeclosure",
                "bankOwned",
                "agent"
              ],
              "enumTitles": [
                "For sale by owner",
                "New construction",
                "Coming soon",
                "Auction",
                "Foreclosure",
                "Pre-foreclosure",
                "Bank owned",
                "Listed by an agent"
              ]
            }
          },
          "minLivingAreaSqft": {
            "title": "Minimum living area (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Leave empty or 0 for any size."
          },
          "maxDaysOnZillow": {
            "title": "Listed within (days)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Only homes listed on Zillow at most this many days ago. Leave empty or 0 for any."
          },
          "onlyPriceCuts": {
            "title": "Only homes with a price cut",
            "type": "boolean",
            "description": "Only homes whose latest price change on Zillow was a cut (with its amount and date)."
          },
          "priceCutWithinDays": {
            "title": "Price cut within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only homes whose latest price cut on Zillow was at most this many days ago (7: cut in the last week). Leave empty or 0 for any."
          },
          "soldWithinDays": {
            "title": "Sold within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "For the Recently sold listing type: only homes sold at most this many days ago. Leave empty for all Zillow lists."
          },
          "maxHomeDetails": {
            "title": "Home pages to read",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Read each home's own page for this many homes per run (at most 20: Zillow refuses a visitor's home pages after about 26): description, year built, HOA fee, tax rate, price per sq ft, agent and brokerage, MLS id, views and saves, and all photos. With Only changes, homes that left a search are checked first (sold, pending or off the market).",
            "default": 0
          },
          "splitLargeAreas": {
            "title": "Split large cities by ZIP code",
            "type": "boolean",
            "description": "Zillow shows at most 820 homes per search. A city with more is read by its ZIP codes (homes whose address is in the city), so every home can be read and tracked. Off: a city's first 820 only.",
            "default": true
          },
          "maxHomesPerLocation": {
            "title": "Max homes read per location (Only changes)",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "With Only changes, each location is read whole up to this many homes. A larger city takes about 3 seconds per 41 homes.",
            "default": 5000
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed: Zillow answers Apify's servers directly. You can use your own proxies; residential proxies aren't available in this Actor."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}