{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Agent Scraper - Agent Leads & Their Listings",
    "description": "Every estate agent in a city, with everything they have for sale and for rent: price, beds, baths, address, coordinates and brokerage. Plus review score, career sales, average sale price and price range. Optionally add Zestimate, floor area, year built and description to every listing.",
    "version": "0.2",
    "x-build-id": "KMSz5oaB1F46QFVef"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/studioxl~zillow-agent-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-studioxl-zillow-agent-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-agent-scraper/runs": {
      "post": {
        "operationId": "runs-sync-studioxl-zillow-agent-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-agent-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-studioxl-zillow-agent-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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities or areas, for example \"Austin, TX\" or \"Chicago, IL\". Each is searched separately and the results are combined.",
            "items": {
              "type": "string"
            }
          },
          "agentNames": {
            "title": "…or specific agents by name",
            "type": "array",
            "description": "Look up named agents directly, for example \"Matt Laricy\". Zillow's name search is fuzzy and also returns similar names, so only agents whose name actually matches what you typed are kept.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum agents",
            "minimum": 0,
            "type": "integer",
            "description": "Your spend cap. Filters are applied before any portfolio is fetched, so a run capped at 50 reads 50 agents' portfolios rather than every agent the directory returned. Set 0 for no limit.",
            "default": 100
          },
          "maxPagesPerLocation": {
            "title": "Maximum pages per location",
            "minimum": 1,
            "type": "integer",
            "description": "Zillow lists 15 agents per directory page. This caps how deep to go in each area.",
            "default": 10
          },
          "topAgentsOnly": {
            "title": "Top agents only",
            "type": "boolean",
            "description": "Only agents carrying Zillow's Top Agent badge.",
            "default": false
          },
          "minSalesLastYear": {
            "title": "Minimum sales in the last 12 months",
            "minimum": 0,
            "type": "integer",
            "description": "Skip agents below this many recent sales, the quickest way to strip out inactive licence-holders. Applied before portfolios are fetched, so agents you filter out cost nothing.",
            "default": 0
          },
          "includeActiveListings": {
            "title": "What they have for sale",
            "type": "boolean",
            "description": "Every property the agent currently has listed for sale, with price, beds, baths, address, coordinates and brokerage. This is the agent's complete for-sale portfolio as Zillow holds it, not a sample.",
            "default": true
          },
          "maxListingsPerAgent": {
            "title": "Maximum listings per agent",
            "minimum": 0,
            "type": "integer",
            "description": "Zillow returns five listings per request and offers no larger page, so 25 costs five requests per agent and 100 costs twenty. Whatever you set, the row still reports the agent's true total in listingCount, so you can tell a capped portfolio from a small one.",
            "default": 25
          },
          "includeRentals": {
            "title": "What they have for rent",
            "type": "boolean",
            "description": "The agent's rental listings, same shape as the for-sale ones. Off by default because most agents have none: a Chicago agent with 55 properties for sale had 4 for rent.",
            "default": false
          },
          "maxRentalsPerAgent": {
            "title": "Maximum rentals per agent",
            "minimum": 0,
            "type": "integer",
            "description": "Same five-per-request cost as listings.",
            "default": 25
          },
          "onlyAgentsWithListings": {
            "title": "Only agents with at least one listing",
            "type": "boolean",
            "description": "Drop agents with nothing currently for sale. Applied before charging, so filtered agents are not billed to you.",
            "default": false
          },
          "enrichListings": {
            "title": "Add the full property record to each listing",
            "type": "boolean",
            "description": "The agent's own record carries price, beds, baths, address and coordinates, but Zillow does not put a valuation, floor area, year built, tax rate or description there. Those exist only on the property page, so getting them means opening one page per listing.\n\nSwitching this on adds Zestimate, rent Zestimate, living area, lot size, year built, days on Zillow, price change, MLS id, tax rate, HOA fee, photo count and the listing description to every for-sale row, and picks up the listing agent's direct phone, which the directory never publishes.\n\nThis is charged per property opened, separately from the agent row, because one property fetch costs about what a whole agent costs. Leave it off and you pay nothing for it.",
            "default": false
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Check each URL against Zillow's robots.txt before fetching. The agent directory, the sales-stats endpoint and the portfolio endpoints are all permitted, so leaving this on costs you nothing. It is here so that if Zillow changes its rules, the run stops rather than carrying on.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Maximum parallel requests",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Measured across the Zillow Actors: 10 parallel is clean, 15 doubles the block rate for no gain. The portfolio endpoints are rate limited in their own right, so raising this mostly buys retries.",
            "default": 10
          },
          "maxRequestsPerMinute": {
            "title": "Request rate limit",
            "minimum": 10,
            "maximum": 600,
            "type": "integer",
            "description": "Usually the setting that decides how long a run takes. 300 measured as the sweet spot.",
            "default": 300
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Zillow rejects datacenter IPs. Residential US is the default and is what this Actor is priced around; changing it will most likely return nothing.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}