Zillow MCP-сервер
Размещённый сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и другим MCP-клиентам два инструмента Zillow с доступом только для чтения. Ищите объекты недвижимости, выставленные на продажу или аренду, а также проданные объекты с помощью расширенных фильтров и получайте полные сведения об отдельном объекте в структурированном формате JSON — без необходимости размещать сервер самостоятельно.
Сервер считывает общедоступные страницы объявлений на Zillow.com, доступные пользователям без входа в систему.
1 000 бесплатных кредитов каждый месяц — банковская карта не требуется. По базовому тарифу этого хватит на 200 запросов к Zillow.
https://mcp.hasdata.com/mcp?apis=zillow
Содержание
-
Что понадобится
-
Быстрый запуск
-
Примеры запросов
-
Инструменты
-
Ошибки и сбои
-
Тарифы, бесплатный план и ограничения
-
Выбор инструмента
-
Сравнение с аналогами
-
FAQ
-
Ссылки на HasData
-
Разработка
-
Участие в проекте
-
Лицензия
Что понадобится
MCP-клиент и ключ API HasData, который можно бесплатно создать в панели управления. Банковская карта не нужна. Бесплатного плана хватает примерно на 200 запросов в месяц по 5 кредитов за запрос. Сервер удалённый, поэтому самый простой способ подключения — указать URL и заголовок x-api-key; запускать контейнер не нужно. Клиенты, поддерживающие только stdio, могут подключаться через небольшой лаунчер. Он опубликован в npm как @hasdata/zillow-mcp, а в PyPI — как hasdata-zillow-mcp. Примеры приведены ниже.
Быстрый запуск
URL сервера одинаков для всех клиентов. Мы проверили подключение в Claude Code и Claude Desktop. Примеры для остальных клиентов соответствуют форматам удалённых серверов, описанным в их документации.
| Поле | Значение |
|---|---|
| URL | https://mcp.hasdata.com/mcp?apis=zillow |
| Транспорт | HTTP, с потоковой передачей данных |
| Заголовок авторизации | x-api-key: HASDATA_API_KEY |
Клиенты с поддержкой OAuth можно подключить по тому же URL и выполнить вход, не сохраняя ключ в конфигурационном файле.
Claude Code
claude mcp add --transport http zillow "https://mcp.hasdata.com/mcp?apis=zillow" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
Откройте Settings, затем Connectors, выберите Add custom connector, вставьте https://mcp.hasdata.com/mcp?apis=zillow и выполните вход.
Если вы используете конфигурационный файл, учтите, что Claude Desktop загружает только локальные серверы (stdio). Поэтому для подключения к удалённому серверу понадобится лаунчер stdio. Эту задачу выполняет пакет @hasdata/zillow-mcp; ключ он получает из переменной окружения. Добавьте следующий фрагмент в claude_desktop_config.json:
{
"mcpServers": {
"zillow": {
"command": "npx",
"args": ["-y", "@hasdata/zillow-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Вместо Node можно использовать Python: укажите пакет из PyPI, который uvx запустит без предварительной установки:
{
"mcpServers": {
"zillow": {
"command": "uvx",
"args": ["hasdata-zillow-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Cursor
Используйте ~/.cursor/mcp.json, чтобы настроить подключение для всех проектов, или .cursor/mcp.json — для одного проекта:
{
"mcpServers": {
"zillow": {
"url": "https://mcp.hasdata.com/mcp?apis=zillow",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Windsurf
Файл конфигурации: ~/.codeium/windsurf/mcp_config.json. В Windsurf поле называется serverUrl, а не url:
{
"mcpServers": {
"zillow": {
"serverUrl": "https://mcp.hasdata.com/mcp?apis=zillow",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
VS Code
Добавьте настройки в .vscode/mcp.json в рабочей области:
{
"servers": {
"zillow": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=zillow",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Примеры запросов
Это запросы на естественном языке, а не код. Вставьте любой из них — агент сам выберет подходящий инструмент. Для каждого указано количество запросов: каждый успешно выполненный вызов стоит 5 кредитов.
Найди дома на продажу в Остине, штат Техас, как минимум с тремя спальнями и стоимостью до 600 тысяч долларов. Отсортируй по дате публикации, начиная с самых новых, и покажи 10 самых свежих объектов с ценой и сроком нахождения на рынке.
Один запрос — 5 кредитов. Цена, количество спален, площадь и срок нахождения на рынке доступны в результатах поиска.
Открой первый объект в списке и покажи полную информацию: историю цен, историю налогов, оценочную стоимость и назначенные школы.
Один запрос — 5 кредитов. Эти сведения размещены на странице объекта, которую инструмент получения подробной информации считывает по URL.
Найди кондоминиумы в Остине, доступные для аренды и допускающие кошек, а затем покажи оценочную стоимость аренды для трёх самых дешёвых объектов.
Четыре запроса — 20 кредитов. Один запрос на поиск и по одному запросу для каждого из трёх объектов.
Для этого объекта по URL укажи цену в объявлении, оценочную стоимость и сведения о трёх последних сделках из истории цен.
Один запрос — 5 кредитов.
Результатов поиска достаточно, чтобы сравнить и отобрать подходящие варианты. История цен, история налогов, оценочная стоимость, сведения о школах и агенте доступны при запросе информации об объекте. Поэтому для отбора и проверки трёх домов понадобится один запрос на поиск и ещё три — на получение сведений об объектах.
Инструменты
| Инструмент | Что возвращает |
|---|---|
hasdata_zillow_listing_getRealEstateListings | Объявления с адресом, URL Zillow и zpid, ценой, Zestimate, количеством спален и ванных комнат, площадью в квадратных футах, типом жилья, статусом, сроком размещения на Zillow, координатами, миниатюрой и данными агента. 5 кредитов за вызов |
hasdata_zillow_property_getPropertyDetails | Адрес, цену в объявлении, Zestimate и Rent Zestimate, историю цен и налогов, количество спален и ванных комнат, жилую площадь, размер участка, год постройки, тип жилья, HOA, срок размещения на Zillow, данные объявления и другое. 5 кредитов за вызов |
Оба инструмента предоставляют доступ только для чтения. Примеры ниже сокращены и основаны на реальных вызовах; значения меняются вместе с рынком. Они показывают структуру данных. Название каждого инструмента ведёт к документации соответствующего endpoint со списком всех полей.
В примерах показана полезная нагрузка, а не полный ответ. Результат вызова tools/call содержит один текстовый блок, в котором находится JSON с полями url, status, text и json. Собранные данные находятся в json. В необработанном ответе JSON-RPC нужное значение находится по пути result.content[0].text; его нужно разобрать, а затем обратиться к .json. Чат-клиент выполнит эту обработку за вас, а при прямом обращении к endpoint её нужно выполнить самостоятельно.
Получение объявлений о недвижимости на Zillow
hasdata_zillow_listing_getRealEstateListings
Страница объявлений с фильтрами по ключевому слову и местоположению.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
keyword | string | да | Местоположение для поиска, например Austin, TX |
type | string | да | forSale, forRent или sold |
price_min_ / price_max_ | number | Диапазон цен | |
beds_min_ / beds_max_ / baths_min_ / baths_max_ | number | Диапазоны по количеству спален и ванных комнат | |
homeTypes__ | array | house, condo, townhome, multiFamily, apartment, lot, manufactured | |
daysOnZillow | number/string | 1, 7, 14, 30, 90, 6m, 12m и более | |
sort | string | newest, priceLowToHigh, priceHighToLow, squareFeet и другие варианты | |
page | number | Страница результатов |
В документации также описаны фильтры по площади, размеру участка, году постройки и HOA, а также параметры otherAmenities__, views__, pets__, listingType, propertyStatus__, listingPublishOptions__ и другие.
Ответ содержит searchInformation с полем totalResults, массив properties и объект pagination, в котором nextPage — URL следующей страницы. Для каждого объекта возвращаются поля id, url, homeType, status, price, currency, оценочная стоимость аренды rentZestimate, daysOnZillow, площадь в квадратных футах в поле area, addressRaw и структурированный адрес address, координаты latitude и longitude, количество спален beds и ванных комнат baths, а также listingDetails, mediaDetails и photos.
{
"id": "60134551",
"url": "https://www.zillow.com/homedetails/6116-Speyside-Dr-Austin-TX-78754/60134551_zpid/",
"homeType": "SINGLE_FAMILY",
"status": "FOR_SALE",
"price": 320000,
"currency": "$",
"rentZestimate": 2286,
"daysOnZillow": 0,
"area": 2277,
"address": { "street": "6116 Speyside Dr", "city": "Austin", "state": "TX", "zipcode": "78754" },
"beds": 4,
"baths": 3
}
Получение подробной информации об объекте Zillow
Инструмент получения подробной информации об объекте Zillow
Полная информация об одном объекте по его URL.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
url | string | да | URL объекта Zillow — значение поля url из результата поиска |
extractAgentEmails | boolean | Попытаться получить адрес электронной почты агента по объявлению. Это стоит 5 дополнительных кредитов: запрос к объекту обойдётся в 10 кредитов вместо 5 |
Возвращается полная информация со страницы: price, currency, fees, beds, baths, area, yearBuilt, homeType, mlsId, структурированные данные address и geo, description и highlights, photos, schools, daysOnZillow, views, saves, блок agentInfo, а также массивы priceHistory, taxHistory и mortgage. Собственная оценка стоимости от Zillow передаётся в объекте zestimate, который содержит zestimate, estimatedSaleRange и rentZestimate. Воспринимайте эти данные как оценку, а не как подтверждённую стоимость.
В этом ответе
area— объект вида{ livingArea, livingAreaUnits }, а не обычное число, которое возвращает инструмент поиска. Чтобы получить площадь объекта в квадратных футах, используйтеarea.livingArea. Числовое сравнение, напримерarea > 2000, с объектом не сработает, хотя это может остаться незаметным.
{
"id": 60134551,
"status": "FOR_SALE",
"price": 320000,
"currency": "USD",
"yearBuilt": 2002,
"beds": 4,
"baths": 3,
"area": { "livingArea": 2277, "livingAreaUnits": "Square Feet" },
"fees": { "monthlyHoaFee": "$500 annually" },
"zestimate": { "zestimate": 318100, "estimatedSaleRange": "$302K - $334K", "rentZestimate": 2286 },
"address": { "street": "6116 Speyside Dr", "county": "Travis County" },
"agentInfo": { "agentName": "Marie Coleman", "brokerName": "eXp Realty" },
"priceHistory": [{ "date": "2026-08-24", "price": 320000, "event": "listedForSale" }],
"schools": { "elementarySchool": { "name": "Bluebonnet Trail", "district": "Manor ISD" } }
}
Ошибки и ситуации, в которых запрос не выполняется
Клиент почти никогда не получает HTTP-код ошибки при вызове инструмента. Уровень MCP возвращает код 200, а сведения об ошибке помещает в результат: isError принимает значение true, а причина указывается текстом. Вместо ожидаемого статуса агент получает сообщение.
Неверный ключ отображается в результате вызова инструмента, а не как ошибка подключения. Метод tools/list принимает любой непустой ключ и возвращает оба инструмента, поэтому клиент успешно завершает рукопожатие и показывает зелёный статус. Ошибка появляется только при первом вызове инструмента: isError: true и текст HasData API error: 401 Unauthorized. Обратите внимание на это сообщение: на предыдущих этапах проблема никак не обозначается.
Отсутствие ключа — единственный случай, когда возникает настоящая HTTP-ошибка. Проверка авторизации выполняется до вызова любого инструмента, поэтому соединение завершается с ошибкой 401. Заголовки CORS присутствуют, и браузерный клиент получает код состояния, а не непрозрачную сетевую ошибку.
Аргумент, нарушающий схему инструмента, отклоняется до начала сбора данных. Сервер возвращает isError: true и текст MCP error -32602: Input validation error, в котором указано проблемное поле. Данные не запрашиваются, кредит не списывается.
Если поиск ничего не находит, он возвращает успешный результат с пустым массивом properties, а не ошибку. Даже если по указанному местоположению и заданным фильтрам нет объявлений, значение requestMetadata.status будет ok. Прежде чем перебирать результаты, проверьте длину массива.
Если объект снят с публикации, сервер возвращает код 400, а значение requestMetadata.status устанавливается в error. URL из старого результата поиска может вести на уже удалённое объявление.
В результатах с данными также указывается requestMetadata.id. Его полезно сообщать службе поддержки.
Стоимость, бесплатный тариф и ограничения
Каждый инструмент Zillow стоит 5 кредитов за успешный вызов. Параметр extractAgentEmails добавляет к запросу объекта ещё 5 кредитов — итого 10 вместо 5. Не включайте его, если адрес электронной почты вам не нужен. Размер ответа на стоимость не влияет.
Бесплатный тариф предоставляет 1 000 кредитов в месяц без привязки карты — этого хватит на 200 вызовов Zillow по базовой ставке. Кредиты обновляются с началом расчётного периода, поэтому при небольшом объёме запросов агент может пользоваться бесплатным тарифом неограниченно долго.
Платные тарифы начинаются от $59 в месяц за 200 000 кредитов, то есть 40 000 вызовов. При увеличении объёма стоимость снижается: с $1.48 за 1 000 вызовов на начальном тарифе до $0.60 на тарифе Basic и $0.41 на тарифах Growth. Актуальные цены указаны на странице тарифов.
Тариф также определяет допустимое количество одновременных запросов. На бесплатном тарифе можно выполнять 1 запрос за раз, на Startup — 5, на Basic — 15, а на тарифах Growth — от 50 до 500. Если вы запускаете автоматизированные процессы без контроля, предусмотрите обработку превышения этого лимита.
Запрос, получивший ответ с кодом, отличным от 200, не тарифицируется. Успешный вызов, который ничего не нашёл, всё равно считается вызовом.
Выбор инструментов
Параметр запроса apis определяет, какие инструменты будут доступны агенту. Чем меньше инструментов, тем меньше контекста требуется для их описания и тем ниже вероятность, что модель выберет неподходящий инструмент.
?apis=zillow the two tools in this repo
?apis=zillow,redfin add Redfin real estate
?apis=zillow,google_maps add Google Maps places
В параметре можно указывать названия провайдеров, например zillow, или отдельных API, например zillow_listing. Названия с опечатками игнорируются. Если все указанные названия неверны, запрос завершится с ошибкой 400. В теле ответа будут перечислены неизвестные значения и все допустимые варианты. Если не указывать параметр, тот же адрес предоставляет доступ ко всем 57 инструментам HasData.
Сравнение с другими решениями
Собственные API-программы Zillow предназначены для участников и партнёров, которые работают со своим пулом объектов, например для пользователей Bridge Interactive и Mortgage APIs. Это не универсальный способ просматривать открытый рынок. Чтобы искать объявления и получать сведения о произвольных объектах, можно собирать данные с публичных страниц. Этот сервер выполняет такую задачу, предоставляя данные по стабильной схеме.
| Партнёрские API Zillow | Этот сервер | |
|---|---|---|
| Назначение | Передача собственного пула объектов или данных MLS | Просмотр открытого рынка |
| Доступ | Членство или одобрение партнёра | Один ключ и один URL |
| Поиск по всему рынку | Ограничен | Да, с расширенными фильтрами |
| Настройка | Подключение для бизнеса | Не требуется |
| Результат | Партнёрские потоки данных | Структурированный JSON с предварительно извлечёнными ценой и количеством спален |
Что этот сервер не делает. Он не размещает объявления, не отправляет заявки на контакт и не получает данные учётной записи. Сервер читает только те сведения, которые доступны на Zillow.com посетителю без авторизации.
Часто задаваемые вопросы
Есть ли у Zillow официальный MCP-сервер?
Zillow не публикует собственный MCP-сервер. Этот сервер поддерживается HasData и получает данные с публичных страниц Zillow.com.
Что такое MCP-сервер Zillow?
Это сервер, который предоставляет данные объявлений Zillow в виде инструментов, доступных для вызова AI-клиентом. Клиент отправляет вызов инструмента по протоколу Model Context Protocol, сервер получает данные и возвращает структурированный JSON, а модель обрабатывает результат. Этот сервер предоставляет два инструмента и работает удалённо.
Нужны ли учётная запись Zillow или API-ключ?
Нет. Единственные учётные данные, которые вам нужны, — ключ HasData. Инструменты получают данные с публичных страниц Zillow.com.
Почему в результатах поиска нет истории цен и сведений о школах?
Zillow не показывает эту информацию в карточках поиска. Она есть на странице объекта, данные с которой инструмент подробной информации получает по URL. Используйте поиск, чтобы отобрать подходящие объявления, а затем вызовите инструмент получения сведений об объекте.
Что означает оценка стоимости?
Объект zestimate содержит оценочную стоимость по версии Zillow, диапазон вокруг неё и оценку арендной платы. Это результат работы модели, а не оценка специалиста или подтверждённая цена продажи. Воспринимайте его как ориентир.
Можно ли использовать этот сервер вместе с другими API HasData?
Да. Параметр apis принимает список значений: например, ?apis=zillow,redfin предоставит агенту доступ к Zillow и Redfin. Если не указывать параметр, будут доступны все инструменты.
Связана ли HasData с Zillow?
Нет. HasData — независимый сервис, не связанный с Zillow Group, Inc., не одобренный и не спонсируемый этой компанией. Zillow — товарный знак его владельца.
Соблюдение требований и персональные данные
HasData получает только общедоступные данные. Условия платформы могут ограничивать автоматизированный доступ, и вы самостоятельно отвечаете за соблюдение применимых требований. Если собранные вами данные содержат персональную информацию, например контактные данные агента по объявлению, убедитесь, что у вас есть законное основание для её обработки в соответствии с GDPR, CCPA или аналогичными правилами вашей юрисдикции.
Ссылки HasData
| Страница продукта и конструктор запросов | Zillow Scraper API |
| Документация сервера | Документация MCP-сервера |
| Все 57 инструментов на одном сервере | HasData/hasdata-mcp |
| Руководства для клиентов | Клиенты и интеграции MCP |
| Все остальные источники, которые мы собираем | Zillow Scraper API и ещё 54 источника |
| Тарифы и стоимость запросов в кредитах | Тарифы и стоимость запросов в кредитах |
| Ключи и использование | Панель HasData |
| Node-лаунчер на npm | @hasdata/zillow-mcp |
| Python-лаунчер на PyPI | hasdata-zillow-mcp |
Разработка
Этот репозиторий содержит конфигурацию и документацию удалённого сервера. Сборка не требуется, как и создание контейнера.
Тесты в test/ проверяют контракт инструментов — ту часть, которая может измениться без коммитов в этом репозитории. Они проверяют, что ?apis=zillow возвращает ровно два инструмента, каждый инструмент по-прежнему объявляет обязательные параметры, названия не изменились, а используемый ключ действительно принимается. Последняя проверка вызывает инструмент и стоит 5 кредитов — такова цена проверочного теста, который может завершиться сбоем по обоснованной причине.
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test
Тот же набор тестов запускается в CI при каждом отправлении изменений и раз в неделю по расписанию, поскольку список инструментов на стороне сервиса может измениться без каких-либо изменений в этом репозитории. Сбой означает, что изменился список инструментов, перестал работать ключ или endpoint оказался недоступен. Сообщение об ошибке указывает, что именно произошло.
Участие в разработке
Наиболее полезный вклад — исправления таблиц инструментов и примеров ответов, поскольку именно эти данные чаще всего устаревают. Укажите вызов, который вы выполнили, и полученный ответ. Для pull request из fork набор тестов запускается без ключа, а проверки доступности сервиса пропускаются, а не завершаются ошибкой.
Лицензия
MIT. См. LICENSE.