Redfin MCP Server

Listagens do Redfin à venda, para aluguel e vendidas, além de páginas completas de propriedades, como JSON estruturado.

Documentação

Servidor Redfin MCP

Um servidor de Model Context Protocol (MCP) hospedado que oferece ao Claude, Cursor, Windsurf e qualquer outro cliente MCP duas ferramentas somente leitura do Redfin. Pesquise listagens à venda, para alugar e vendidas com o conjunto de filtros que o Redfin mostra a um visitante, e leia uma página de propriedade por completo, ambos como JSON estruturado, sem licença MLS e sem nada para hospedar.

Ele lê páginas públicas do Redfin que um visitante desconectado pode ver.

1.000 créditos grátis todo mês, sem necessidade de cartão, o que equivale a 200 chamadas ao Redfin na taxa de 5 créditos.

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

Glama score tool contract MCP Tools npm PyPI License

Conteúdo

O que você precisa

Um cliente MCP e uma chave de API HasData do painel, gratuita para criar sem cartão, e o plano gratuito cobre cerca de 200 chamadas por mês 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. Um cliente que só fala stdio o acessa por meio de um lançador leve, publicado como @hasdata/redfin-mcp no npm e hasdata-redfin-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=redfin
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 redfin "https://mcp.hasdata.com/api/mcp?apis=redfin" \
  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop

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

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

{
  "mcpServers": {
    "redfin": {
      "command": "npx",
      "args": ["-y", "@hasdata/redfin-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": {
    "redfin": {
      "command": "uvx",
      "args": ["hasdata-redfin-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}
Cursor

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

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

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

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

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

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

Exemplos de prompts

Cada um destes cai em uma ferramenta, ou em duas em sequência quando a segunda precisa da URL que a primeira retorna.

  • Encontre casas de três quartos à venda em 78741 abaixo de US$ 500.000 e ordene-as por preço por metro quadrado.
  • O que foi vendido em Austin nos últimos três meses, e como isso se compara com o que está listado agora?
  • Puxe a página completa da propriedade para esta URL do Redfin e resuma a condição a partir da descrição.
  • Quais aluguéis em Austin permitem cães e incluem lavanderia na unidade?
  • Mostre-me casas à venda no Distrito Escolar Independente de Austin onde a escola primária designada tem avaliação 8 ou melhor.
  • Encontre casas para reformar construídas antes de 1970 neste CEP que estão no Redfin há mais de 30 dias.

Um prompt que nomeia um mercado vai para a ferramenta de busca. Um prompt que entrega uma URL do Redfin vai direto para a ferramenta de propriedade. Buscar um endereço completo é um terceiro caso, coberto abaixo, porque responde com uma propriedade em vez de uma lista.

Ferramentas

Duas ferramentas, 5 créditos por chamada bem-sucedida.

Obter listagens de imóveis Redfin

hasdata_redfin_listing_getRealEstateListings

Uma página de listagens para um local, ou uma propriedade quando o local é um único endereço.

Dois parâmetros são obrigatórios, e o restante do esquema espelha o próprio painel de filtros do Redfin.

ParâmetroTipoObrigatórioObservações
keywordstringsimUm CEP, cidade, bairro, escola, distrito escolar, nome de prédio de apartamentos ou um endereço completo
typestringsimforSale, forRent ou sold
sortstringrecommended, newest, oldest, priceLowToHigh, priceHighToLow, bedrooms, bathrooms, lotSize, squareFeetPrice e mais
pagenúmeroPágina de resultados, começando em 1

Os filtros são nomeados após a estrutura aninhada que o Redfin usa internamente, achatados com sublinhados, então precisam ser passados exatamente como o esquema os escreve. price_min_ e price_max_ são a faixa de preço, beds_min_ e beds_max_ a contagem de quartos, monthlyPayment_interestRate_ uma suposição de hipoteca. Um sublinhado duplo marca um array.

Os que valem a pena conhecer:

ParâmetroTipoObservações
price_min_ / price_max_númeroFaixa de preço
beds_min_ / beds_max_númeroContagem de quartos
bathsstringBanheiros mínimos, one até four, mais oneAndHalf e twoAndHalf
homeTypes__arrayhouse, townhouse, townhome, condo, land, multiFamily, mobile, coOp, apartment, other. Quais valores se aplicam depende de type
statusOptions__arrayactive, comingSoon, contingentPending
listingType_category___arraybyAgent, byOwnerFsbo, newConstruction, foreclosures
timeOnRedfinstringnewListing até moreThan45Days
soldWithinOptionstringJanela de vendas, de lastOneWeek a lastFiveYear. Veja o aviso abaixo
yearBuilt_min_ / yearBuilt_max_stringUm ano de uma escada fixa, 1940 até 2026
forSaleSquareFeet_min_ / _max_stringÁrea útil de uma escada fixa, 750 até 10000
lotSize_min_ / lotSize_max_string2000 sqft até 100 acres, como escrito
cost_hoa_númeroTaxa máxima mensal de HOA
cost_priceReduced_stringinTheLastDay até moreThan120Days
homeFeatures_options___arraywaterfront, hasAView, fireplace, fixerUpper, guestHouse, elevator, greenHome, accessibleHome e mais
homeFeatures_poolType_stringprivatePool, communityPool, privateOrCommunityPool, noPrivatePool
homeFeatures_keywordSearch_stringTexto livre contra a descrição da listagem
schools_greatSchoolRating_númeroAvaliação mínima do GreatSchools, 1 a 10
transportScores_walkScore_númeroPontuação mínima de caminhabilidade, 1 a 100
rentalAmenities__arrayinUnitWasherDryer, parkingAllowed, utilitiesIncluded, furnished, pool e mais
pets__arraydogsAllowed, catsAllowed
moveInDatestringMM/DD/YYYY

Uma busca de mercado retorna searchInformation com totalResults, um array properties de 40, e pagination com currentPage, nextPage e um mapa otherPages. Uma propriedade à venda ou vendida carrega id, mlsId, url, homeType, status, price, beds, baths, area, yearBuilt, daysOnSite, addressRaw, um address analisado, latitude, longitude, description, atAGlanceFacts e photos.

{
  "id": 31625298,
  "mlsId": "2190201772333567097",
  "url": "https://www.redfin.com/TX/Austin/1721-Deerfield-Dr-78741/home/31625298",
  "homeType": "House",
  "status": "FOR_SALE",
  "price": 675000,
  "beds": 3,
  "baths": 2,
  "area": 1667,
  "yearBuilt": 1963,
  "daysOnSite": 0,
  "addressRaw": "1721 Deerfield Dr, Austin, TX 78741",
  "address": { "street": "1721 Deerfield Dr", "city": "Austin", "state": "TX", "zipcode": "78741" },
  "latitude": 30.231372,
  "longitude": -97.734893,
  "atAGlanceFacts": [
    { "factLabel": "Property Type", "factValue": "Single-family" },
    { "factLabel": "Year Built", "factValue": "1963" },
    { "factLabel": "Price/Sq.Ft.", "factValue": "$405" }
  ]
}

Um aluguel é um prédio em vez de uma casa, então type: forRent retorna um formato diferente. price, beds, baths e area cada um se torna um objeto { min, max } entre as unidades disponíveis, e a entrada adiciona propertyName, availableUnits, agentEmail e agentPhone enquanto remove mlsId, homeType, yearBuilt e daysOnSite.

{
  "id": "31510362",
  "propertyName": "The Sonata",
  "status": "FOR_RENT",
  "availableUnits": 12,
  "price": { "min": 745, "max": 1300 },
  "beds": { "min": 1, "max": 2 },
  "baths": { "min": 1, "max": 2 },
  "area": { "min": 474, "max": 976 },
  "addressRaw": "1070 Mearns Meadow Blvd, Austin, TX 78758"
}

Obter detalhes da propriedade Redfin

hasdata_redfin_property_getPropertyDetails

Uma página de propriedade por completo, pela sua URL do Redfin.

ParâmetroTipoObrigatórioObservações
urlstringsimA URL da propriedade Redfin, como a ferramenta de busca a retorna

Retorna um objeto property. Além de tudo que o resultado da busca carrega, adiciona propertyDetails, schools, nearby, agentInfo, viewsActivity, openHouseSchedule, updatedAt, um objeto geo e a coleção completa photos, que chegou a 61 imagens na propriedade abaixo.

propertyDetails é o bloco de especificações, agrupado em parking, interior, exterior, utilities e publicFacts. Cada grupo é um array de seções rotuladas, e cada seção é um array de pares label e value, então lê-se como a página apresenta, em vez de um objeto tipado. Procure um fato pelo seu rótulo em vez de pela posição.

schools.assignedSchools carrega as escolas de abrangência com greatSchoolsRating, parentRating, distanceInMiles e um sinalizador servesHome, que é o campo que diz se a escola realmente atende este endereço.

{
  "id": 31625298,
  "homeType": "Single Family Residential",
  "status": "COMING SOON",
  "price": 675000,
  "beds": 3,
  "baths": 2,
  "area": 1667,
  "yearBuilt": 1963,
  "geo": { "latitude": 30.231372, "longitude": -97.734893 },
  "updatedAt": "Sep 9, 2026 4:04 AM",
  "viewsActivity": { "views": 98, "favorites": 5 },
  "agentInfo": {
    "agentName": "Lilly Rockwell",
    "agentPhoneNumber": "512-413-1975",
    "brokerName": "Compass",
    "brokerPhoneNumber": ""
  },
  "propertyDetails": {
    "parking": [{ "parkingInformation": [{ "label": "Has Garage", "value": "yes" }] }],
    "utilities": [{ "utilitiesInformation": [{ "label": "Has Air Conditioning", "value": "yes" }] }]
  },
  "schools": { "assignedSchools": [{ "greatSchoolsRating": 6, "parentRating": 5, "servesHome": true }] }
}

Erros e caminhos de falha

Planeje estes em vez de assumir um caminho feliz.

soldWithinOption está atualmente quebrado e silenciosamente retorna casas à venda rotuladas como SOLD. Passar qualquer um de seus valores coloca o valor diretamente no filtro do Redfin, o Redfin não o reconhece, e a resposta é a lista ativa de venda com status marcado como SOLD. Cada listagem voltou idêntica à busca simples de venda em nossas verificações. Deixe o parâmetro de fora. type: sold sozinho funciona corretamente e cobre os últimos três meses, que é a janela padrão do próprio Redfin.

A ferramenta de busca retorna três formatos diferentes, e qual você obtém depende da palavra-chave. Uma palavra-chave de mercado responde com searchInformation, properties e pagination. Um endereço completo ou um prédio nomeado responde com um único objeto property e sem array properties, sem searchInformation e sem pagination. Uma busca de aluguel responde com as entradas em formato de faixa mostradas acima. Ramifique na presença de properties antes de iterar.

totalResults chega no máximo a 350, e isso é um teto em vez de uma contagem. Austin e Nova York ambos relatam 350 enquanto um único CEP relata 168 e uma cidade pequena 57. A paginação para em nove páginas de 40. Para enumerar um mercado grande, divida-o por CEP, faixa de preço ou tipo de casa em vez de paginar, porque não há página dez.

A busca de vendas não fornece preços de venda como um campo separado. price contém o que a página mostra para esse status, então um preço de venda e um preço de venda realizado chegam no mesmo campo. Leia status junto com ele toda vez. Não há histórico de preços, histórico de impostos ou Redfin Estimate na resposta da propriedade. Eles aparecem na página, mas não estão no que a ferramenta retorna hoje. O que você recebe em vez disso é propertyDetails.publicFacts, que traz os fatos no estilo do avaliador como pares de rótulo e valor.

nearby.pointsOfInterest são lugares próximos, não vendas comparáveis. Seus categories vêm de um conjunto de dados de lugares de terceiros e frequentemente estão errados, então uma agência de empréstimo com título pode chegar marcada como um bar. Use os nomes e coordenadas, e não confie na categoria.

openHouseSchedule pode ser um array contendo um objeto vazio quando a página tem a seção, mas sem datas nela. Teste o conteúdo, não o comprimento.

brokerPhoneNumber e outros campos do agente retornam como strings vazias em vez de null. Trate string vazia como ausente.

Resultados que carregam dados também carregam um requestMetadata.id que vale a pena citar como suporte.

Preços, plano gratuito e limites

Cada ferramenta Redfin custa 5 créditos por chamada bem-sucedida. O tamanho da resposta não muda o preço, então uma página com 40 listagens e uma única propriedade custam o mesmo.

O plano gratuito é 1.000 créditos todo mês sem cartão, o que equivale a 200 chamadas Redfin na taxa base. Ele renova com o ciclo de cobrança, então um agente de baixo volume opera no plano gratuito indefinidamente.

Os planos pagos começam em US$ 49 por mês para 200.000 créditos, o que equivale a 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 plano gratuito permite 1 requisição por vez, Startup 15, Business 30, Growth 50, e os planos de alto volume variam de 200 a 1.500. Tente novamente no 429 com backoff em qualquer coisa não supervisionada, porque um agente que percorre uma lista de propriedades atingirá o teto antes de você.

Uma requisição que retorna não-200 não é cobrada. Uma chamada bem-sucedida que não encontra nada ainda é uma chamada.

Seleção de ferramentas

Comece pelo que o prompt lhe dá. Um mercado, um CEP ou um distrito escolar vai para a ferramenta de busca. Uma URL Redfin vai direto para a ferramenta de propriedade. Gastar uma chamada de busca para alcançar uma URL que você já tem é o desperdício mais comum.

Depois escolha pela profundidade. O resultado da busca é suficiente para ranqueamento, varreduras de preço e resumos de mercado, e já carrega preço, quartos, banheiros, área, ano de construção e dias no site. A ferramenta de propriedade é a única que retorna o bloco de especificações, as escolas designadas e o agente da listagem, e vale uma chamada por propriedade que você se importa, em vez de uma por linha.

Filtre no lado do servidor. O schema espelha precisamente o painel de filtros do Redfin, então uma consulta como "três quartos, abaixo de US$ 500 mil, construído antes de 1970, neste CEP" é uma chamada com quatro parâmetros, não uma varredura de página seguida de filtragem local.

Como se compara

Não há API pública do Redfin, então a alternativa real é um feed MLS ou IDX.

Feed MLS ou IDXEste servidor
ElegibilidadeUma corretora licenciada ou um relacionamento com agenteUma chave de API
ConfiguraçãoAplicação por MLS, contrato e revisão de conformidadeUm cabeçalho
CoberturaUm MLS por feed, centenas nacionalmenteO que o Redfin publica, em um só lugar
Dados de vendasHistórico completo onde o MLS permiteA janela recente que o Redfin mostra
AluguéisFrequentemente um feed separado ou ausenteA mesma ferramenta, com formato de faixa
RedistribuiçãoRestrita contratualmenteSua responsabilidade de verificar
CustoTaxas de configuração mais mensalidade, por MLSPago além do plano gratuito, 5 créditos por chamada

A linha que decide é a elegibilidade. Um feed MLS é a fonte autoritativa e precisa de uma licença que você não pode comprar como desenvolvedor, o que o descarta para pesquisa, protótipos e qualquer coisa que um agente faça em seu nome. Quando você é uma corretora com um feed já existente, o feed é mais completo e mais atual, e você deve usá-lo.

FAQ

Existe um servidor MCP oficial do Redfin?

O Redfin não publica um, e também não publica uma API pública. Este é mantido pela HasData e lê páginas públicas do Redfin.

O que é um servidor MCP do Redfin?

Um servidor MCP expõe ferramentas que um cliente de IA pode chamar. Este transforma resultados de busca e páginas de propriedade do Redfin em JSON sobre o qual um agente pode raciocinar, sem um navegador ou biblioteca de scraping na sua stack.

Preciso de uma licença MLS ou de uma conta Redfin?

Não. A única credencial é sua chave HasData.

Por que buscar um endereço retorna uma propriedade em vez de uma lista?

Porque o Redfin resolve um endereço completo para a página daquela propriedade, em vez de um conjunto de resultados. A ferramenta repassa isso, então a resposta contém um único objeto property no mesmo formato que a ferramenta de propriedade retorna. É um atalho útil quando você tem um endereço, mas não uma URL.

Como puxo todas as listagens de uma cidade?

Você não consegue, em uma única varredura. O Redfin limita um conjunto de resultados a 350 em nove páginas, então um mercado grande precisa ser dividido em consultas menores por CEP, faixa de preço ou tipo de imóvel, e as fatias costuradas juntas.

Posso filtrar listagens vendidas por data?

Não de forma confiável agora. type: sold funciona e retorna a janela padrão de três meses do Redfin, mas soldWithinOption não está sendo traduzido em um filtro que o Redfin aceita, e passá-lo retorna listagens ativas rotuladas como SOLD. Deixe-o de fora até que isso seja corrigido.

Cobre aluguéis?

Sim, através de type: forRent. Espere o formato de faixa em vez do formato de casa única, porque um resultado de aluguel é um edifício com várias unidades disponíveis.

Posso usar isso junto com outras APIs HasData?

Sim. Uma chave cobre tudo, e um endpoint serve todos através do parâmetro apis. Aponte um cliente para ?apis=redfin,zillow para obter ambos os conjuntos de ferramentas em uma conexão, ou para mcp.hasdata.com/api/mcp para o catálogo completo.

A HasData é afiliada ao Redfin?

Não. A HasData é um serviço independente e não é afiliada, endossada ou patrocinada pelo Redfin. Redfin é uma marca registrada de seu respectivo proprietário. As ferramentas trabalham apenas com dados publicamente disponíveis, e você é responsável por usar os resultados em conformidade com os termos do Redfin e a lei que se aplica a você.

Conformidade e dados pessoais

Listagens carregam detalhes de contato do agente. Uma propriedade à venda retorna agentInfo com um nome e um número de telefone direto, e um aluguel retorna agentEmail e agentPhone. Esses pertencem a pessoas identificáveis, publicados em capacidade profissional, o que não os tira do escopo do GDPR ou do CCPA. Marketing para eles é regulado separadamente novamente, e agentes imobiliários são um alvo comum exatamente disso, então verifique suas obrigações antes de construir uma lista de contatos. Análise de mercado não precisa desses campos de forma alguma.

Links HasData

Outros servidores MCP HasData: Google Search, Google Maps, Google Trends, Google Flights, DuckDuckGo, YouTube, TikTok, Instagram, Amazon, Shopify, Yelp, Zillow, Airbnb, Booking.com, Indeed.

Desenvolvimento

O lançador é uma ponte stdio fina para o servidor remoto, então não há nada para construir.

npm install
HASDATA_API_KEY=your_key_here npm test

Os testes em test/ afirmam o contrato da ferramenta, a parte que pode quebrar sem um commit aqui. Eles verificam que ?apis=redfin retorna a contagem esperada de ferramentas, que nenhum nome mudou, que cada ferramenta ainda declara seus parâmetros obrigatórios e carrega uma descrição, que os enums de filtro que este README documenta ainda são os que o schema oferece, e que a chave em uso é realmente aceita. Essa última verificação chama uma ferramenta de verdade e custa 5 créditos, que é o preço de um canário que pode falhar pelo motivo certo.

A suíte de contrato também roda semanalmente em um cronograma, porque a lista de ferramentas upstream pode mudar sem que ninguém toque neste repositório.

Contribuindo

Uma tabela de ferramentas, uma amostra de resposta ou um comportamento documentado que não corresponde à realidade vale uma issue. Há um modelo exatamente para isso. Pull requests são bem-vindos para o mesmo, e para qualquer coisa no lançador.

Licença

MIT, veja LICENSE.