HasData Zillow MCP Server

Listagens do Zillow para venda, aluguel e vendidas, além de detalhes completos do imóvel, em JSON estruturado.

Documentação

Servidor MCP do Zillow

Um servidor de Model Context Protocol (MCP) hospedado que oferece ao Claude, Cursor, Windsurf e qualquer outro cliente MCP duas ferramentas somente leitura do Zillow. Pesquise imóveis à venda, para alugar e vendidos com filtros avançados, e leia uma propriedade individual por completo, tudo como JSON estruturado, sem conta no Zillow e sem nada para hospedar.

Ele lê páginas públicas de listagens em Zillow.com que um visitante desconectado pode ver.

https://mcp.hasdata.com/api/mcp?apis=zillow

Glama score tool contract MCP Tools npm PyPI License

Conteúdo

O que você precisa

Um cliente MCP e uma chave de API do HasData do painel, gratuita para criar sem cartão, e o teste cobre cerca de 200 chamadas na taxa de 5 créditos. Este é um servidor remoto, então o caminho mais simples é uma URL e um cabeçalho x-api-key, sem contêiner para executar e sem conta no Zillow em nenhum lugar do fluxo. Um cliente que só fala stdio o acessa por meio de um lançador leve, publicado como @hasdata/zillow-mcp no npm e hasdata-zillow-mcp no PyPI, mostrado abaixo.

Início rápido

A URL do servidor é a mesma para todos os clientes. Nós o executamos na prática no Claude Code e no Claude Desktop. Os outros blocos seguem o formato documentado de cada cliente para um servidor remoto.

CampoValor
URLhttps://mcp.hasdata.com/api/mcp?apis=zillow
TransporteHTTP, transmissível
Cabeçalho de autenticaçãox-api-key: HASDATA_API_KEY

Clientes com suporte a OAuth podem adicionar a mesma URL como conector e entrar sem colocar uma chave em um arquivo de configuração.

Claude Code
claude mcp add --transport http zillow "https://mcp.hasdata.com/api/mcp?apis=zillow" \
  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop

Configurações, depois Conectores, depois Adicionar conector personalizado, depois cole https://mcp.hasdata.com/api/mcp?apis=zillow e entre.

Para o caminho do arquivo de configuração, o Claude Desktop carrega apenas servidores locais (stdio), então ele acessa um servidor remoto por meio de um lançador stdio. O pacote @hasdata/zillow-mcp é esse lançador, e ele lê a chave do ambiente. Adicione isto a claude_desktop_config.json:

{
  "mcpServers": {
    "zillow": {
      "command": "npx",
      "args": ["-y", "@hasdata/zillow-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Para Python em vez de Node, troque o lançador pelo pacote PyPI, que uvx executa sem instalação manual:

{
  "mcpServers": {
    "zillow": {
      "command": "uvx",
      "args": ["hasdata-zillow-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}
Cursor

~/.cursor/mcp.json para todos os projetos, ou .cursor/mcp.json para um:

{
  "mcpServers": {
    "zillow": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=zillow",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json. O Windsurf chama o campo serverUrl, não url:

{
  "mcpServers": {
    "zillow": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=zillow",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
VS Code

.vscode/mcp.json no espaço de trabalho:

{
  "servers": {
    "zillow": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=zillow",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Exemplos de prompts

Prompts, não código. Cole um e o agente escolhe a ferramenta por conta própria. Cada um é anotado com as chamadas que faz, porque cada chamada bem-sucedida custa 5 créditos.

Pesquise imóveis à venda em Austin, TX, com pelo menos três quartos abaixo de US$ 600 mil, ordenados dos mais recentes primeiro, e me dê os dez mais recentes com preço e dias no mercado.

Uma chamada, 5 créditos. Preço, quartos, área e dias no mercado voltam no resultado da pesquisa.

Pegue o primeiro resultado e extraia seus detalhes completos: histórico de preços, histórico de impostos, a estimativa de preço e as escolas designadas.

Uma chamada, 5 créditos. Esses dados estão na página da propriedade, que a ferramenta de detalhes lê pela URL.

Encontre condomínios para alugar em Austin que aceitam gatos e depois extraia a estimativa de aluguel dos três mais baratos.

Quatro chamadas, 20 créditos. Uma pesquisa e depois uma chamada de propriedade para cada um dos três.

Para esta URL de propriedade, me dê o preço de listagem, a estimativa de preço e as três últimas vendas no histórico de preços.

Uma chamada, 5 créditos.

Um resultado de pesquisa é suficiente para classificar e criar uma lista curta. Histórico de preços, histórico de impostos, a estimativa, escolas e o corretor vêm da chamada de propriedade, então um prompt que cria uma lista curta e depois inspeciona três imóveis é uma pesquisa mais três chamadas de propriedade.

Ferramentas

Duas ferramentas, somente leitura. As amostras abaixo são reduzidas de chamadas reais, e os números mudam conforme o mercado se move. Leia-as como formatos. Cada nome de ferramenta leva à referência do endpoint, que traz a lista completa de campos.

As amostras são o payload, não a resposta inteira. Um resultado tools/call carrega um bloco de texto, e esse texto é ele próprio JSON contendo url, status, text e json, com os dados extraídos sob json. De uma resposta JSON-RPC bruta, o caminho é result.content[0].text, analisado, e depois .json. Um cliente de chat desembrulha isso para você, e código que fala diretamente com o endpoint não faz.

Obter listagens de imóveis do Zillow

hasdata_zillow_listing_getRealEstateListings

Uma página de listagens por palavra-chave de localização, filtrada.

ParâmetroTipoObrigatórioObservações
keywordstringsimO local a pesquisar, como Austin, TX
typestringsimforSale, forRent ou sold
price_min_ / price_max_númeroFaixa de preço
beds_min_ / beds_max_ / baths_min_ / baths_max_númeroFaixas de quartos e banheiros
homeTypes__arrayhouse, condo, townhome, multiFamily, apartment, lot, manufactured
daysOnZillownúmero/string1, 7, 14, 30, 90, 6m, 12m e acima
sortstringnewest, priceLowToHigh, priceHighToLow, squareFeet e mais
pagenúmeroPágina de resultados

A referência também documenta faixas de metragem quadrada, tamanho do lote, ano de construção e HOA, além de otherAmenities__, views__, pets__, listingType, propertyStatus__, listingPublishOptions__ e mais.

Retorna searchInformation com totalResults, um array properties e pagination cujo nextPage é a URL da página seguinte. Cada propriedade carrega id, url, homeType, status, price, currency, uma estimativa de aluguel rentZestimate, daysOnZillow, area em pés quadrados, addressRaw e um address estruturado, latitude, longitude, beds, baths, listingDetails, mediaDetails e 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
}

Obter detalhes de propriedade do Zillow

hasdata_zillow_property_getPropertyDetails

Uma propriedade por completo, pela URL.

ParâmetroTipoObrigatórioObservações
urlstringsimUma URL de propriedade do Zillow, o campo url de um resultado de listagem
extractAgentEmailsbooleanoTenta extrair o e-mail do corretor da listagem. Adiciona 5 créditos, então a chamada de propriedade custa 10 em vez de 5

Retorna a página completa: price, currency, fees, beds, baths, area, yearBuilt, homeType, mlsId, um address e geo estruturados, o description e highlights, photos, schools, daysOnZillow, views, saves, um bloco agentInfo e arrays priceHistory, taxHistory e mortgage. A própria estimativa de preço do Zillow chega em um objeto zestimate contendo zestimate, um estimatedSaleRange e um rentZestimate. Leia como uma estimativa, não como um valor confirmado.

area é um objeto aqui, { livingArea, livingAreaUnits }, não o número simples que a ferramenta de pesquisa retorna. Leia area.livingArea para a metragem quadrada em uma página de propriedade, ou uma comparação numérica como area > 2000 falha silenciosamente contra um objeto.

{
  "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" } }
}

Erros e caminhos de falha

Seu cliente quase nunca vê um código de erro HTTP de uma chamada de ferramenta. A camada MCP responde 200 e coloca a falha dentro do resultado, com isError definido como true e o motivo como texto. O agente lê uma mensagem onde você poderia esperar uma linha de status.

Uma chave errada aparece como saída da ferramenta, não como uma conexão falha. tools/list aceita qualquer chave não vazia e retorna ambas as ferramentas, então o cliente completa o handshake e mostra verde. A primeira chamada de ferramenta então volta com isError: true e o texto HasData API error: 401 Unauthorized. Fique atento a essa string, porque nada antes no fluxo relata o problema.

Uma chave ausente é o único erro HTTP real. A autorização roda antes de qualquer ferramenta, e a própria conexão falha com 401. Os cabeçalhos CORS estão presentes, e um cliente de navegador lê o status e não uma falha de rede opaca.

Um argumento que quebra o esquema de uma ferramenta é rejeitado antes de virar uma extração. O servidor responde com isError: true e o texto MCP error -32602: Input validation error, nomeando o campo problemático. Nada é buscado e nada é cobrado.

Uma pesquisa sem correspondências retorna um resultado bem-sucedido com um array properties vazio, não um erro. Um local e filtros definidos sem inventário ainda voltam com requestMetadata.status definido como ok. Teste o comprimento do array antes de iterar.

Uma propriedade que foi removida da listagem retorna 400 com requestMetadata.status definido como error. Uma URL de uma pesquisa antiga pode apontar para uma listagem que não existe mais.

Resultados que carregam dados também carregam um requestMetadata.id que vale citar no suporte.

Preços, plano gratuito e limites

Cada ferramenta do Zillow custa 5 créditos por chamada bem-sucedida. Ativar extractAgentEmails adiciona 5 créditos à chamada de propriedade, 10 em vez de 5, então deixe desativado a menos que precise do e-mail. O tamanho da resposta não muda o preço.

O teste gratuito é 1.000 créditos por 30 dias sem cartão, o que dá 200 chamadas do Zillow na taxa base. Depois disso, uma conta ativa continua recebendo 100 créditos recarregados diariamente sempre que o saldo cair abaixo de 100, então um agente de baixo volume roda no plano gratuito indefinidamente.

Os planos pagos começam em US$ 49 por mês para 200.000 créditos, o que dá 40.000 chamadas. O preço unitário cai com o volume, de US$ 1,23 por 1.000 chamadas no plano inicial para US$ 0,50 no Business, US$ 0,42 no Growth e US$ 0,37 nos maiores planos de alto volume.

Seu plano também define a concorrência. O teste gratuito permite 1 requisição por vez, Startup 15, Business 30, Growth 50, e os planos de alto volume vão de 200 a 1.500. Trate o caso de estouro defensivamente em qualquer coisa não supervisionada.

Uma requisição que volta com status diferente de 200 não é cobrada. Uma chamada bem-sucedida que não encontra nada ainda é uma chamada.

Seleção de ferramentas

O parâmetro de consulta apis decide quais ferramentas seu agente vê. Menos ferramentas significa menos contexto gasto em definições de ferramentas e menos chances de o modelo alcançar a errada.

?apis=zillow                     the two tools in this repo
?apis=zillow,redfin              add Redfin real estate
?apis=zillow,google_maps         add Google Maps places

O parâmetro aceita nomes de provedores como zillow e nomes de APIs individuais como zillow_listing. Nomes com erro de digitação são ignorados. Se todos os nomes estiverem errados, a requisição falha com 400, e o corpo lista tanto o que não foi reconhecido quanto todos os valores válidos. Remova o parâmetro e o mesmo endpoint expõe todas as 57 ferramentas do HasData.

Como se compara

Os próprios programas de API da Zillow são para membros e parceiros que movimentam seu próprio inventário, como as APIs Bridge Interactive e Mortgage, e não uma forma autônoma de ler o mercado público. Para pesquisar listagens e ler propriedades arbitrárias, raspar as páginas públicas é o caminho, e este servidor faz isso por trás de um esquema estável.

APIs parceiras da ZillowEste servidor
PropósitoMover seu próprio inventário ou o do MLSLer o mercado público
AcessoAprovação de membro ou parceiroUma chave e uma URL
Pesquisa em todo o mercadoRestritaSim, com filtros avançados
ConfiguraçãoOnboarding empresarialNenhuma
SaídaFeeds de parceirosJSON estruturado, preço e quartos pré-parseados

O que este servidor não faz. Sem postagem, sem envio de leads, sem dados de conta. Ele lê o que um visitante desconectado pode ver no Zillow.com.

FAQ

Existe um servidor MCP oficial da Zillow?

A Zillow não publica um. Este é mantido pela HasData e lê páginas públicas, por isso não precisa de conta na Zillow.

O que é um servidor MCP da Zillow?

Um servidor que expõe dados de listagens da Zillow como ferramentas que um cliente de IA pode chamar. O cliente envia uma chamada de ferramenta pelo Model Context Protocol, o servidor busca os dados e retorna JSON estruturado, e o modelo trabalha com o resultado. Este expõe duas ferramentas e roda remotamente.

Preciso de uma conta ou chave de API da Zillow?

Não. A única credencial é a sua chave HasData. Não há associação à Zillow para solicitar, porque as ferramentas leem páginas públicas do Zillow.com.

Por que um resultado de busca não mostra histórico de preços ou escolas?

Porque a Zillow não os coloca no cartão de busca. Eles ficam na página da propriedade, que a ferramenta de detalhes lê por URL. Busque para filtrar e depois chame a ferramenta de propriedade para profundidade.

O que significa a estimativa de preço?

O objeto zestimate contém o valor estimado da própria Zillow, uma faixa em torno dele e uma estimativa de aluguel. É uma saída de modelo, não uma avaliação ou preço de venda confirmado. Trate como uma estimativa.

Posso usar isso junto com outras APIs da HasData?

Sim. O parâmetro apis aceita uma lista, e ?apis=zillow,redfin dá ao seu agente Zillow mais Redfin. Remova o parâmetro e você obtém tudo.

A HasData é afiliada à Zillow?

Não. A HasData é um serviço independente e não é afiliada, endossada ou patrocinada pela Zillow Group, Inc. Zillow é uma marca registrada de seu respectivo proprietário.

Conformidade e dados pessoais

A HasData acessa apenas dados publicamente disponíveis. Os termos de uma plataforma podem restringir o acesso automatizado, e você é responsável pela sua própria conformidade. Onde os dados coletados incluírem informações pessoais, como dados de contato de um corretor de listagem, certifique-se de ter uma base legal para isso sob o GDPR, CCPA ou as regras equivalentes na sua jurisdição.

Links da HasData

Página do produto e construtor de solicitaçõesZillow Scraper API
Documentação do servidorDocs do servidor MCP
Todas as 57 ferramentas em um servidorHasData/hasdata-mcp
Tutoriais de clientesClientes e integrações MCP
Tudo o mais que raspamosZillow Scraper API e mais 54
Planos e custos de créditosPlanos e custos de créditos
Chaves e usoPainel da HasData
Lançador Node no npm@hasdata/zillow-mcp
Lançador Python no PyPIhasdata-zillow-mcp

Desenvolvimento

Este repositório é configuração e documentação para um servidor remoto. Não há etapa de build e nada para containerizar.

Os testes em test/ verificam o contrato das ferramentas, a parte que pode quebrar sem um commit aqui. Eles verificam que ?apis=zillow retorna exatamente duas ferramentas, que toda ferramenta ainda declara seus parâmetros obrigatórios, que nenhum nome mudou e que a chave em uso é realmente aceita. Esse último check chama uma ferramenta de verdade e custa 5 créditos, que é o preço de um canário que pode falhar pelo motivo certo.

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

A mesma suíte roda no CI a cada push e uma vez por semana em agendamento, porque a lista de ferramentas upstream pode mudar sem ninguém tocar neste repositório. Uma falha significa que a lista de ferramentas mudou, a chave parou de funcionar ou o endpoint estava inacessível, e a mensagem de verificação diz qual.

Contribuindo

Correções nas tabelas de ferramentas e nas amostras de resposta são a contribuição mais útil, porque são as partes que se desatualizam. Inclua a chamada que você fez e a resposta que obteve. Pull requests de forks rodam a suíte sem chave, e os checks ao vivo pulam em vez de ficarem vermelhos.

Licença

MIT. Veja LICENSE.