{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Agent Scraper [Just 💰$1.2] — Leads, Contacts & Sales",
    "description": "💰 $1.20 per 1,000 leads. Scrape US real estate agent & team leads from zillow.com — name, phone & email · rating & review count · sales history · active listings per agent · incremental NEW/UPDATED/EXPIRED tracking across runs.",
    "version": "0.1",
    "x-build-id": "J5ilxHLC0REeCkw98"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blackfalcondata~zillow-agent-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blackfalcondata-zillow-agent-leads-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/blackfalcondata~zillow-agent-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blackfalcondata-zillow-agent-leads-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/blackfalcondata~zillow-agent-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blackfalcondata-zillow-agent-leads-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": {
          "maxResults": {
            "title": "💯 Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of agents to return (0 = full coverage for the given location(s)).",
            "default": 100
          },
          "startUrls": {
            "title": "🔗 Start URLs",
            "type": "array",
            "description": "Paste zillow.com agent profile URLs directly, or an agent-directory URL for a city. Profile URLs are fetched directly; directory URLs are scanned for all agents listed.",
            "items": {
              "type": "string"
            }
          },
          "agentLocations": {
            "title": "📍 Agent Locations",
            "type": "array",
            "description": "One or more locations to search for real estate agents: \"City, ST\" (e.g. \"Austin, TX\"), a ZIP code, or a whole US state (e.g. \"NJ\" or \"New Jersey\"), which covers every city and town in it. An agent found in several locations is delivered once. Leave empty if you only use Start URLs.",
            "items": {
              "type": "string"
            }
          },
          "minRating": {
            "title": "⭐ Min Rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only include agents whose average rating is at least this value (0-5). Agents with no rating yet are excluded when this is set."
          },
          "minSales": {
            "title": "💰 Min Total Sales",
            "minimum": 0,
            "type": "integer",
            "description": "Only include agents with at least this many total sales, as reported on their own Zillow profile."
          },
          "minReviews": {
            "title": "📝 Min Review Count",
            "minimum": 0,
            "type": "integer",
            "description": "Only include agents with at least this many reviews on their profile."
          },
          "topAgentsOnly": {
            "title": "🏆 Top agents only",
            "type": "boolean",
            "description": "Only agents Zillow marks as a Top Agent in the search area. Applied by Zillow's own agent search, so it costs nothing extra."
          },
          "buyersAgents": {
            "title": "🏠 Buyer's agents",
            "type": "boolean",
            "description": "Only agents who help buyers, as Zillow's agent search filters them."
          },
          "listingAgents": {
            "title": "🪧 Listing agents",
            "type": "boolean",
            "description": "Only agents who help sellers (listing agents), as Zillow's agent search filters them."
          },
          "specialties": {
            "title": "🧭 Specialties",
            "type": "array",
            "description": "Only agents who list ALL of the chosen specialties. Applied by Zillow's agent search. If Zillow does not apply a filter for a location, that location is skipped and the run says so, rather than returning unfiltered agents.",
            "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 home buyers",
                "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": "Only agents who speak ALL of the chosen languages (English is assumed), as Zillow's agent search filters them.",
            "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",
                "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"
              ]
            }
          },
          "priceMin": {
            "title": "💵 Min sale price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only agents whose past sales reach this price range, as Zillow's agent search filters them. Leave empty for no lower bound."
          },
          "priceMax": {
            "title": "💵 Max sale price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only agents whose past sales fall within this price range, as Zillow's agent search filters them. Leave empty for no upper bound."
          },
          "agentName": {
            "title": "🔤 Agent name",
            "type": "string",
            "description": "Only agents whose name matches this text, using Zillow's agent search (for example \"Smith\"). Combined with a whole state, every town in the state is searched and each town is charged; to find one agent, enter their city or ZIP code instead."
          },
          "requirePhone": {
            "title": "📞 Require a phone number",
            "type": "boolean",
            "description": "Only output agents whose profile shows a cell or business phone. Agents with no phone on their profile are left out."
          },
          "requireEmail": {
            "title": "📧 Require an email address",
            "type": "boolean",
            "description": "Only output agents whose profile shows an email address. Agents with no email on their profile are left out."
          },
          "brokerageName": {
            "title": "🏢 Brokerage name contains",
            "type": "string",
            "description": "Only output agents whose brokerage / business name contains this text (case-insensitive, e.g. \"Keller Williams\"). Agents with no brokerage name on their profile are left out."
          },
          "includeAllReviews": {
            "title": "⭐ Include all reviews",
            "type": "boolean",
            "description": "Every review the agent has, instead of the 10 newest that are always included. Adds about one extra request per 50 reviews per agent, so runs take longer.",
            "default": false
          },
          "includeSalesHistory": {
            "title": "🏠 Include full sales history",
            "type": "boolean",
            "description": "Every past sale on the agent's profile (address, sold date, side represented, beds/baths/size), instead of the 5 most recent that are always included. Adds about one extra request per 50 sales per agent.",
            "default": false
          },
          "includeAllListings": {
            "title": "🏷️ Include all active listings",
            "type": "boolean",
            "description": "Every for-sale and for-rent listing of the agent, instead of the 5 of each that are always included. Adds about one extra request per 50 listings per agent.",
            "default": false
          },
          "maxHistoryItems": {
            "title": "🔢 Max items per list",
            "minimum": 0,
            "type": "integer",
            "description": "Upper limit for each of the lists above (reviews, sales, listings) per agent. 0 = no limit.",
            "default": 100
          },
          "includeWebsiteContacts": {
            "title": "🌐 Include contacts from agent website",
            "type": "boolean",
            "description": "Visit the agent's own website (when the profile lists one) and add the email addresses, phone numbers and social media links found there. Adds one or two requests per agent with a website.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "🧹 Exclude Empty Fields",
            "type": "boolean",
            "description": "Drop null / empty-string / empty-array fields from each record.",
            "default": false
          },
          "compact": {
            "title": "📦 Compact Output",
            "type": "boolean",
            "description": "Output only core lead fields — name, business, phone, email, rating, reviews, sales, and profile URL (for AI-agent / MCP workflows).",
            "default": false
          },
          "includeDetails": {
            "title": "📋 Include Full Listing Details",
            "type": "boolean",
            "description": "Not used by this Actor. An agent profile is a single fetch — there is no separate detail page to opt into, so every record already carries contact details, rating and sales history. Kept for API compatibility; setting it changes nothing.",
            "default": false
          },
          "incrementalMode": {
            "title": "♻️ Incremental Mode",
            "type": "boolean",
            "description": "Track new/changed/expired agents across runs. Requires a State Key.",
            "default": false
          },
          "stateKey": {
            "title": "🔑 State Key",
            "type": "string",
            "description": "Stable identifier for this tracking universe (e.g. \"austin-tx-agents\")."
          },
          "emitUnchanged": {
            "title": "♻️ Emit Unchanged Records",
            "type": "boolean",
            "description": "When incremental, also emit agents that have not changed since the last run.",
            "default": false
          },
          "emitExpired": {
            "title": "⚰️ Emit Expired Records",
            "type": "boolean",
            "description": "When incremental, also emit agents no longer found in the tracked location (e.g. profile removed or deactivated). These markers are always included so change tracking stays complete — they are not subject to Max Results.",
            "default": false
          },
          "notifyOnlyChanges": {
            "title": "🔄 Notify Only New/Updated",
            "type": "boolean",
            "description": "When Incremental Mode is on, only notify for NEW and UPDATED agents.",
            "default": false
          },
          "notificationLimit": {
            "title": "📊 Max Agents Per Notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of agents included in each notification message (1–20).",
            "default": 5
          },
          "telegramToken": {
            "title": "🔑 Telegram Bot Token",
            "type": "string",
            "description": "Telegram bot token (from @BotFather). Required for Telegram notifications."
          },
          "telegramChatId": {
            "title": "💬 Telegram Chat ID",
            "type": "string",
            "description": "Telegram chat or channel ID where alerts are sent."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord Webhook URL",
            "type": "string",
            "description": "Discord incoming webhook URL."
          },
          "slackWebhookUrl": {
            "title": "💼 Slack Webhook URL",
            "type": "string",
            "description": "Slack incoming webhook URL."
          },
          "whatsappPhoneNumberId": {
            "title": "📱 WhatsApp Phone Number ID",
            "type": "string",
            "description": "WhatsApp Business phone number ID from Meta Business Manager."
          },
          "whatsappAccessToken": {
            "title": "🔐 WhatsApp Access Token",
            "type": "string",
            "description": "Meta Cloud API access token with whatsapp_business_messaging scope."
          },
          "whatsappTo": {
            "title": "📨 WhatsApp Recipient",
            "type": "string",
            "description": "Recipient phone number in E.164 format (e.g. +14155551234)."
          },
          "webhookUrl": {
            "title": "🪝 Generic Webhook URL",
            "type": "string",
            "description": "Universal escape hatch for n8n / Make / Zapier / custom HTTP backends. Receives a JSON POST per run."
          },
          "webhookHeaders": {
            "title": "🪝 Webhook Headers (optional)",
            "type": "object",
            "description": "Additional HTTP headers sent with the generic webhook POST."
          },
          "appConnector": {
            "title": "📤 Send results to a connected app",
            "type": "string",
            "description": "Optional. Pick a connected app under Settings → API & Integrations to receive your results (including contact details where available). A run-summary is written to the connected app; support is best-effort as Apify expands its connector catalog."
          },
          "mcpIssueTeam": {
            "title": "🏷️ Issue tracker team",
            "type": "string",
            "description": "Only when the connected app is an issue tracker: the team (name or ID) the summary issue is created under, if that app requires one."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}