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
Conteúdo
- O que você precisa
- Início rápido
- Exemplos de prompts
- Ferramentas
- Erros e caminhos de falha
- Preços, plano gratuito e limites
- Seleção de ferramentas
- Como se compara
- FAQ
- Links HasData
- Desenvolvimento
- Contribuição
- Licença
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.
| Campo | Valor |
|---|---|
| URL | https://mcp.hasdata.com/api/mcp?apis=redfin |
| Transporte | HTTP, transmissível |
| Cabeçalho de autenticação | x-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âmetro | Tipo | Obrigatório | Observações |
|---|---|---|---|
keyword | string | sim | Um CEP, cidade, bairro, escola, distrito escolar, nome de prédio de apartamentos ou um endereço completo |
type | string | sim | forSale, forRent ou sold |
sort | string | recommended, newest, oldest, priceLowToHigh, priceHighToLow, bedrooms, bathrooms, lotSize, squareFeetPrice e mais | |
page | número | Pá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âmetro | Tipo | Observações |
|---|---|---|
price_min_ / price_max_ | número | Faixa de preço |
beds_min_ / beds_max_ | número | Contagem de quartos |
baths | string | Banheiros mínimos, one até four, mais oneAndHalf e twoAndHalf |
homeTypes__ | array | house, townhouse, townhome, condo, land, multiFamily, mobile, coOp, apartment, other. Quais valores se aplicam depende de type |
statusOptions__ | array | active, comingSoon, contingentPending |
listingType_category___ | array | byAgent, byOwnerFsbo, newConstruction, foreclosures |
timeOnRedfin | string | newListing até moreThan45Days |
soldWithinOption | string | Janela de vendas, de lastOneWeek a lastFiveYear. Veja o aviso abaixo |
yearBuilt_min_ / yearBuilt_max_ | string | Um 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_ | string | 2000 sqft até 100 acres, como escrito |
cost_hoa_ | número | Taxa máxima mensal de HOA |
cost_priceReduced_ | string | inTheLastDay até moreThan120Days |
homeFeatures_options___ | array | waterfront, hasAView, fireplace, fixerUpper, guestHouse, elevator, greenHome, accessibleHome e mais |
homeFeatures_poolType_ | string | privatePool, communityPool, privateOrCommunityPool, noPrivatePool |
homeFeatures_keywordSearch_ | string | Texto livre contra a descrição da listagem |
schools_greatSchoolRating_ | número | Avaliação mínima do GreatSchools, 1 a 10 |
transportScores_walkScore_ | número | Pontuação mínima de caminhabilidade, 1 a 100 |
rentalAmenities__ | array | inUnitWasherDryer, parkingAllowed, utilitiesIncluded, furnished, pool e mais |
pets__ | array | dogsAllowed, catsAllowed |
moveInDate | string | MM/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âmetro | Tipo | Obrigatório | Observações |
|---|---|---|---|
url | string | sim | A 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 IDX | Este servidor | |
|---|---|---|
| Elegibilidade | Uma corretora licenciada ou um relacionamento com agente | Uma chave de API |
| Configuração | Aplicação por MLS, contrato e revisão de conformidade | Um cabeçalho |
| Cobertura | Um MLS por feed, centenas nacionalmente | O que o Redfin publica, em um só lugar |
| Dados de vendas | Histórico completo onde o MLS permite | A janela recente que o Redfin mostra |
| Aluguéis | Frequentemente um feed separado ou ausente | A mesma ferramenta, com formato de faixa |
| Redistribuição | Restrita contratualmente | Sua responsabilidade de verificar |
| Custo | Taxas de configuração mais mensalidade, por MLS | Pago 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
- Redfin Scraper API, os endpoints REST por trás dessas ferramentas
- Documentação da API
- Documentação do servidor MCP
- Preços
- Painel
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.