{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Agents Scraper: Agent Leads, Sales, Reviews",
    "description": "Scrape Zillow real estate agents by city, ZIP code or whole state, or by profile link: name, brokerage, team, Top Agent badge, rating, reviews, sales and price range. Add the profile, licences, every review, past sale and listing. Zillow's filters are checked; misses are free. JSON, CSV, API.",
    "version": "0.1",
    "x-build-id": "sFExHb7HZUo7bA4t3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~zillow-agents-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-zillow-agents-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/automation_craft~zillow-agents-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-zillow-agents-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/automation_craft~zillow-agents-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-zillow-agents-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 (city with state, ZIP code or state)",
            "type": "array",
            "description": "Places to search Zillow's agent directory: a city with its state (\"Austin, TX\"), a neighborhood with its city and state (\"Hyde Park, Austin, TX\"), a 5 digit ZIP code (\"78704\"), or a state (\"TX\" or \"Texas\") for every city of that state, largest first. Zillow's directory lists agents by city, neighborhood and ZIP code: a county or a borough is not a place it searches. Up to 1,000.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Agent directory links",
            "type": "array",
            "description": "Links copied from Zillow's agent finder, such as https://www.zillow.com/professionals/real-estate-agent-reviews/austin-tx/?specialties=luxury-homes . The link's own filters and page are kept; a filter you set below replaces the link's. Up to 1,000.",
            "items": {
              "type": "string"
            }
          },
          "agents": {
            "title": "Agents to look up (profile links, screen names or ids)",
            "type": "array",
            "description": "Agents to look up directly: a Zillow profile link (https://www.zillow.com/profile/ericbramlett), a screen name (ericbramlett) or Zillow's encoded agent id (X1-ZU...). Each is read from its profile page and delivered with Agent details. An id is matched through the agent's reviews and delivered only when the profile found carries that same id. Not found: a free row. Up to 10,000.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (directory or profile links)",
            "type": "array",
            "description": "The same as the two lists above in one list: agent directory links and profile links. Up to 10,000.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "agentName": {
            "title": "Agent name",
            "type": "string",
            "description": "Find agents by name. Zillow's name search is loose (\"eric bramlett\" also lists other Erics), so only agents whose name holds every word you give are delivered; the others are free."
          },
          "topAgentsOnly": {
            "title": "Top Agents only",
            "type": "boolean",
            "description": "Only agents with Zillow's Top Agent badge."
          },
          "helpsBuyers": {
            "title": "Helps buyers",
            "type": "boolean",
            "description": "Only agents Zillow lists for buying (its \"Buying\" filter)."
          },
          "helpsSellers": {
            "title": "Helps sellers",
            "type": "boolean",
            "description": "Only agents Zillow lists for selling (its \"Selling\" filter)."
          },
          "specialties": {
            "title": "Specialties",
            "type": "array",
            "description": "Zillow's specialty filter. Several values combine with AND: an agent must list all of them (Zillow's own rule).",
            "items": {
              "type": "string",
              "enum": [
                "first-time-home-buyers",
                "investment-properties",
                "rentals",
                "military-or-veterans",
                "luxury-homes",
                "new-construction",
                "property-management",
                "senior-communities",
                "relocation",
                "foreclosure",
                "lot-or-land",
                "vacation-short-term-rentals"
              ],
              "enumTitles": [
                "First Time Homebuyers",
                "Investment Properties",
                "Rentals",
                "Military/Veterans",
                "Luxury Homes",
                "New Construction",
                "Property Management",
                "Senior Communities",
                "Relocation",
                "Foreclosure",
                "Lot/Land",
                "Vacation / Short-term Rentals"
              ]
            }
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Zillow's language filter (English is spoken by every agent and is no filter). Several values combine with AND.",
            "items": {
              "type": "string",
              "enum": [
                "american-sign-language",
                "arabic",
                "bengali",
                "cantonese",
                "farsi",
                "french",
                "german",
                "greek",
                "haitian-creole",
                "hebrew",
                "hindi",
                "hungarian",
                "italian",
                "japanese",
                "korean",
                "mandarin",
                "polish",
                "portuguese",
                "russian",
                "spanish",
                "filipino",
                "thai",
                "turkish",
                "ukrainian",
                "vietnamese"
              ],
              "enumTitles": [
                "American Sign Language (ASL)",
                "Arabic",
                "Bengali",
                "Cantonese",
                "Farsi",
                "French",
                "German",
                "Greek",
                "Haitian Creole",
                "Hebrew",
                "Hindi",
                "Hungarian",
                "Italian",
                "Japanese",
                "Korean",
                "Mandarin",
                "Polish",
                "Portuguese",
                "Russian",
                "Spanish",
                "Filipino (Tagalog)",
                "Thai",
                "Turkish",
                "Ukrainian",
                "Vietnamese"
              ]
            }
          },
          "minSalePrice": {
            "title": "Sale price from (USD)",
            "type": "integer",
            "description": "The lower bound of Zillow's sale price slider: 0, 50000, 100000 ... 1000000 (steps of 50,000), 1250000 ... 5000000 (steps of 250,000), 6000000 ... 18000000 (steps of 1,000,000). Zillow keeps agents whose sales fall in the range. Other values are refused because Zillow ignores them."
          },
          "maxSalePrice": {
            "title": "Sale price to (USD)",
            "type": "integer",
            "description": "The upper bound of Zillow's sale price slider, one of its values (see above), or 500000000 for no top."
          },
          "agentType": {
            "title": "Teams or individual agents",
            "enum": [
              "all",
              "teams",
              "individuals"
            ],
            "type": "string",
            "description": "Teams (Zillow marks them TEAM) or individual agents.",
            "default": "all"
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "The lowest average review rating (0 to 5). Agents without a rating are left out."
          },
          "minReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "The fewest reviews on Zillow."
          },
          "minSalesLast12Months": {
            "title": "Minimum sales in the last 12 months",
            "minimum": 0,
            "type": "integer",
            "description": "The fewest sales in the last 12 months as Zillow shows them (team cards show the team's sales)."
          },
          "maxSalesLast12Months": {
            "title": "Maximum sales in the last 12 months",
            "minimum": 0,
            "type": "integer",
            "description": "The most sales in the last 12 months."
          },
          "brokerageContains": {
            "title": "Brokerage contains",
            "type": "string",
            "description": "Only agents whose brokerage or team name holds every word you give (whole words, any case), such as \"Keller Williams\"."
          },
          "requirePhone": {
            "title": "Has a phone number",
            "type": "boolean",
            "description": "Only agents whose profile lists their own phone number, cell or business (the brokerage's phone does not count; the number itself is delivered only with includePersonalData)."
          },
          "requireCellPhone": {
            "title": "Has a cell phone",
            "type": "boolean",
            "description": "Only agents whose profile lists a cell phone (delivered only with includePersonalData)."
          },
          "requireEmail": {
            "title": "Has an e-mail address",
            "type": "boolean",
            "description": "Only agents whose profile lists an e-mail address (delivered only with includePersonalData)."
          },
          "minYearsInBusiness": {
            "title": "Minimum years in business",
            "minimum": 0,
            "type": "integer",
            "description": "The fewest years in business the profile states. Profiles that state none are left out."
          },
          "maxYearsInBusiness": {
            "title": "Maximum years in business",
            "minimum": 0,
            "type": "integer",
            "description": "The most years in business the profile states."
          },
          "minTotalSales": {
            "title": "Minimum total sales",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "The fewest total sales the profile states (its sales statistics; a team lead's profile states the team's). Profiles that state none are left out. Needs Agent details."
          },
          "maxTotalSales": {
            "title": "Maximum total sales",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "The most total sales the profile states. Profiles that state none are left out. Needs Agent details."
          },
          "soldWithinDays": {
            "title": "Sold a home in the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Only agents whose profile lists a sale within this many days of the run's start."
          },
          "premierAgentsOnly": {
            "title": "Premier Agents only",
            "type": "boolean",
            "description": "Only agents whose profile shows Zillow's Premier Agent mark."
          },
          "minAveragePrice": {
            "title": "Average sale price from (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only agents whose profile's average sale price is at least this. Zillow rounds it (\"$588K\"), so an agent passes only when every price the rounded figure can mean is inside the bounds."
          },
          "maxAveragePrice": {
            "title": "Average sale price to (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only agents whose profile's average sale price is at most this (judged the same way)."
          },
          "maxAgentsPerSearch": {
            "title": "Agents per search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most agents delivered for each location or directory link (a whole state counts as one search). When left empty: 100. Zillow shows at most 375 agents for one search (25 pages of 15); \"splitPastCap\" reads further."
          },
          "maxItems": {
            "title": "Agents per run",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "The most agents delivered in the whole run."
          },
          "splitPastCap": {
            "title": "Read past Zillow's 375 agents a search",
            "enum": [
              "none",
              "zipCodes",
              "priceBands",
              "zipCodesAndPriceBands"
            ],
            "type": "string",
            "description": "When a city's count passes the 375 agents Zillow shows for one search, read on through its ZIP codes (Census 2020) and/or sale price bands, each again up to 375 agents; every agent is delivered once. Coverage rows say how many of Zillow's count were reached.",
            "default": "none"
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Start each search at this page of Zillow's directory (1 to 25, 15 agents a page)."
          },
          "countOnly": {
            "title": "Count only (free preview)",
            "type": "boolean",
            "description": "Read the first page of each city or ZIP search and deliver its agent count and nothing else: only the run's start fee is charged."
          },
          "includeDetails": {
            "title": "Agent details",
            "type": "boolean",
            "description": "Read each agent's Zillow profile into the row: brokerage address and phone, licences with expiry, bio, years in business, specialties, languages, service areas, sales statistics, recent sales and listings, recent reviews with the breakdown, team members, websites. One Agent details event per agent.",
            "default": false
          },
          "includeReviews": {
            "title": "Reviews",
            "type": "boolean",
            "description": "Every review of the agent, up to the number below: rating, date, author, text, deal, sub ratings, the agent's reply. One Review event per review delivered.",
            "default": false
          },
          "maxReviewsPerAgent": {
            "title": "Reviews per agent",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "The most reviews read for each agent. When left empty: 50."
          },
          "reviewSort": {
            "title": "Review order",
            "enum": [
              "newest",
              "ratingHigh",
              "ratingLow"
            ],
            "type": "string",
            "description": "The order Zillow gives the reviews in (newest first when left empty)."
          },
          "reviewFilter": {
            "title": "Review kind",
            "enum": [
              "all",
              "bought",
              "sold",
              "boughtAndSold",
              "didNotWorkOut",
              "rentalOrPropertyManagement",
              "noResponse"
            ],
            "type": "string",
            "description": "Zillow's own review filter (all reviews when left empty)."
          },
          "includePastSales": {
            "title": "Past sales",
            "type": "boolean",
            "description": "Every home the agent sold or helped buy, newest first, up to the number below: address, link, date, side, price where the state discloses it, beds, baths, size. One Past sale event per sale delivered.",
            "default": false
          },
          "maxPastSalesPerAgent": {
            "title": "Past sales per agent",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "The most past sales read for each agent. When left empty: 100."
          },
          "includeListings": {
            "title": "Listings",
            "type": "boolean",
            "description": "The homes the agent lists today, up to the number below per kind: address, link, price, status, beds, baths, size, photo. One Listing event per listing delivered.",
            "default": false
          },
          "listingTypes": {
            "title": "Listing kinds",
            "type": "array",
            "description": "For sale, for rent or both (both when left empty).",
            "items": {
              "type": "string",
              "enum": [
                "forSale",
                "forRent"
              ],
              "enumTitles": [
                "For sale",
                "For rent"
              ]
            }
          },
          "maxListingsPerAgent": {
            "title": "Listings per agent and kind",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "The most listings read for each agent and kind. When left empty: 50."
          },
          "includePersonalData": {
            "title": "Include personal data",
            "type": "boolean",
            "description": "Adds the agent's own cell and business phone numbers and e-mail address (from the profile, with Agent details or a lookup) and reviewers' Zillow screen names and ids. Off: those fields are empty. The brokerage's name, address and phone are always delivered. You are responsible for using personal data lawfully (GDPR, CAN-SPAM, TCPA and the like).",
            "default": false
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "nested",
              "flat",
              "compact"
            ],
            "type": "string",
            "description": "Flat turns nested objects into dotted column names for CSV and Excel; lists stay lists. Compact keeps the core fields of the row and of the profile (contact, brokerage, licences, sales statistics) and the add-on lists you asked for.",
            "default": "nested"
          },
          "omitEmptyFields": {
            "title": "Leave out empty fields",
            "type": "boolean",
            "description": "Leave fields without a value out of each row.",
            "default": false
          },
          "buildReport": {
            "title": "Market report (free)",
            "type": "boolean",
            "description": "Save an HTML report of the agents delivered in the run's key-value store as REPORT: brokerages with the most agents, licence states, median sales in the last 12 months, Top Agent and Premier Agent shares, the 25 agents with the most sales. Free.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many Zillow pages are read at once (each on its own exit, 4.5 s apart per exit). When left empty: 3."
          },
          "requestGapSeconds": {
            "title": "Seconds between two requests on one exit",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Wait at least this long between two Zillow requests on one exit (5 to 60). When left empty: 4.5 s, the pace Zillow accepts. A longer gap makes the run slower and its compute longer."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy (datacenter exits Zillow accepts, chosen by the Actor) is used by default. Your own proxy links are used as given."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}