MCP server for Redfin: search for-sale, for-rent and sold listings with the full filter set, and read one property page in full. No MLS licence. 1,000 free credits every month.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/HasData/redfin-mcp{
"mcpServers": {
"redfin-mcp": {
"command": "node",
"args": ["/path/to/redfin-mcp/dist/index.js"]
}
}
}MCP Servers overview
# Redfin MCP Server
<!-- mcp-name: com.hasdata/redfin -->
A hosted Model Context Protocol (MCP) server that gives Claude, Cursor, Windsurf and any other MCP client two read-only Redfin tools. Search for-sale, for-rent and sold listings with the filter set Redfin shows a visitor, and read one property page in full, both as structured JSON, with no MLS licence and nothing to host.
It reads public Redfin pages that a signed-out visitor can see.
**1,000 free credits every month, no card required**, which is 200 Redfin calls at the 5-credit rate.
```
https://mcp.hasdata.com/api/mcp?apis=redfin
```
[](https://glama.ai/mcp/servers/HasData/redfin-mcp)
[](https://github.com/HasData/redfin-mcp/actions/workflows/contract.yml)
[](https://mcp.hasdata.com/api/mcp?apis=redfin)
[](#tools)
[](https://www.npmjs.com/package/@hasdata/redfin-mcp)
[](https://pypi.org/project/hasdata-redfin-mcp/)
[](LICENSE)
## Contents
- [What you need](#what-you-need)
- [Quick start](#quick-start)
- [Example prompts](#example-prompts)
- [Tools](#tools)
- [Errors and failure paths](#errors-and-failure-paths)
- [Pricing, free tier and limits](#pricing-free-tier-and-limits)
- [Tool selection](#tool-selection)
- [How it compares](#how-it-compares)
- [FAQ](#faq)
- [HasData links](#hasdata-links)
- [Development](#development)
- [Contributing](#contributing)
- [License](#license)
## What you need
An MCP client and a HasData API key from the [dashboard](https://app.hasdata.com/sign-up?utm_source=github&utm_medium=syndication&utm_campaign=redfin-mcp), free to create with no card, and the free tier covers about 200 calls a month at the 5-credit rate. This is a remote server, so the simplest path is a URL and an `x-api-key` header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as `@hasdata/redfin-mcp` on npm and `hasdata-redfin-mcp` on PyPI, shown below.
## Quick start
The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.
| Field | Value |
| :--- | :--- |
| URL | `https://mcp.hasdata.com/api/mcp?apis=redfin` |
| Transport | HTTP, streamable |
| Auth header | `x-api-key: HASDATA_API_KEY` |
Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.
<details>
<summary><b>Claude Code</b></summary>
```bash
claude mcp add --transport http redfin "https://mcp.hasdata.com/api/mcp?apis=redfin" \
--header "x-api-key: HASDATA_API_KEY"
```
</details>
<details>
<summary><b>Claude Desktop</b></summary>
Settings, then Connectors, then Add custom connector, then paste `https://mcp.hasdata.com/api/mcp?apis=redfin` and sign in.
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The `@hasdata/redfin-mcp` package is that launcher, and it reads the key from the environment. Add this to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"redfin": {
"command": "npx",
"args": ["-y", "@hasdata/redfin-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
```
For Python instead of Node, swap the launcher for the PyPI package, which `uvx` runs without a manual install:
```json
{
"mcpServers": {
"redfin": {
"command": "uvx",
"args": ["hasdata-redfin-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
```
</details>
<details>
<summary><b>Cursor</b></summary>
`~/.cursor/mcp.json` for every project, or `.cursor/mcp.json` for one:
```json
{
"mcpServers": {
"redfin": {
"url": "https://mcp.hasdata.com/api/mcp?apis=redfin",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
```
</details>
<details>
<summary><b>Windsurf</b></summary>
`~/.codeium/windsurf/mcp_config.json`. Windsurf calls the field `serverUrl`, not `url`:
```json
{
"mcpServers": {
"redfin": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=redfin",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
```
</details>
<details>
<summary><b>VS Code</b></summary>
`.vscode/mcp.json` in the workspace:
```json
{
"servers": {
"redfin": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=redfin",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
```
</details>
## Example prompts
Each of these lands on one tool, or on two in sequence when the second needs the URL the first returns.
- Find three-bedroom houses for sale in 78741 under $500,000 and sort them by price per square foot.
- What sold in Austin in the last three months, and how does that compare with what is listed now?
- Pull the full property page for this Redfin URL and summarise the condition from the description.
- Which rentals in Austin allow dogs and include in-unit laundry?
- Show me for-sale homes in the Austin Independent School District where the assigned elementary school rates 8 or better.
- Find fixer-uppers built before 1970 in this zipcode that have been on Redfin more than 30 days.
A prompt that names a market goes to the search tool. A prompt that hands you a Redfin URL goes straight to the property tool. Searching for a full street address is a third case, covered below, because it answers with one property rather than a list.
## Tools
Two tools, 5 credits per successful call.
### Get Redfin real estate listings
[`hasdata_redfin_listing_getRealEstateListings`](https://docs.hasdata.com/apis/redfin/listing?utm_source=github&utm_medium=syndication&utm_campaign=redfin-mcp)
A page of listings for a location, or one property when the location is a single address.
Two parameters are required, and the rest of the schema mirrors Redfin's own filter panel.
| Parameter | Type | Required | Notes |
| :--- | :--- | :--- | :--- |
| `keyword` | string | yes | A zipcode, city, neighborhood, school, school district, apartment building name, or a full street address |
| `type` | string | yes | `forSale`, `forRent` or `sold` |
| `sort` | string | | `recommended`, `newest`, `oldest`, `priceLowToHigh`, `priceHighToLow`, `bedrooms`, `bathrooms`, `lotSize`, `squareFeetPrice` and more |
| `page` | number | | Result page, starting at 1 |
The filters are named after the nested structure Redfin uses internally, flattened with underscores, so they have to be passed exactly as the schema spells them. `price_min_` and `price_max_` are the price band, `beds_min_` and `beds_max_` the bedroom count, `monthlyPayment_interestRate_` a mortgage assumption. A doubled underscore marks an array.
The ones worth knowing:
| Parameter | Type | Notes |
| :--- | :--- | :--- |
| `price_min_` / `price_max_` | number | Price band |
| `beds_min_` / `beds_max_` | number | Bedroom count |
| `baths` | string | Minimum baths, `one` through `four`, plus `oneAndHalf` and `twoAndHalf` |
| `homeTypes__` | array | `house`, `townhouse`, `townhome`, `condo`, `land`, `multiFamily`, `mobile`, `coOp`, `apartment`, `other`. Which values apply depends on `type` |
| `statusOptions__` | array | `active`, `comingSoon`, `contingentPending` |
| `listingType_category___` | array | `byAgent`, `byOwnerFsbo`, `newConstruction`, `foreclosures` |
| `timeOnRedfin` | string | `newListing` through `moreThan45Days` |
| `soldWithinOption` | string | Sold window, from `lastOneWeek` to `lastFiveYear`. See the warning below |
| `yearBuilt_min_` / `yearBuilt_max_` | string | A year from a fixed ladder, `1940` through `2026` |
| `forSaleSquareFeet_min_` / `_max_` | string | Floor area from a fixed ladder, `750` through `10000` |
| `lotSize_min_` / `lotSize_max_` | string | `2000 sqft` through `100 acres`, as written |
| `cost_hoa_` | number | Maximum monthly HOA fee |
| `cost_priceReduced_` | string | `inTheLastDay` through `moreThan120Days` |
| `homeFeatures_options___` | array | `waterfront`, `hasAView`, `fireplace`, `fixerUpper`, `guestHouse`, `elevator`, `greenHome`, `accessibleHome` and more |
| `homeFeatures_poolType_` | string | `privatePool`, `communityPool`, `privateOrCommunityPool`, `noPrivatePool` |
| `homeFeatures_keywordSearch_` | string | Free text against the listing description |
| `schools_greatSchoolRating_` | number | Minimum GreatSchools rating, 1 to 10 |
| `transportScores_walkScore_` | number | Minimum walk score, 1 to 100 |
| `rentalAmenities__` | array | `inUnitWasherDryer`, `parkingAllowed`, `utilitiesIncluded`, `furnished`, `pool` and more |
| `pets__` | array | `dogsAllowed`, `catsAllowed` |
| `moveInDate` | string | `MM/DD/YYYY` |
A market search returns `searchInformation` with `totalResults`, a `properties` array of 40, and `pagination` with `currentPage`, `nextPage` and an `otherPages` map. A for-sale or sold property carries `id`, `mlsId`, `url`, `homeType`, `status`, `price`, `beds`, `baths`, `area`, `yearBuilt`, `daysOnSite`, `addressRaw`, a parsed `address`, `latitude`, `longitude`, `description`, `atAGlanceFacts` and `photos`.
```json
{
"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 DrWhat people ask about redfin-mcp
What is HasData/redfin-mcp?
+
HasData/redfin-mcp is mcp servers for the Claude AI ecosystem. MCP server for Redfin: search for-sale, for-rent and sold listings with the full filter set, and read one property page in full. No MLS licence. 1,000 free credits every month. It has 0 GitHub stars and its last recorded update is dated 2026-09-09.
How do I install redfin-mcp?
+
You can install redfin-mcp by cloning the repository (https://github.com/HasData/redfin-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is HasData/redfin-mcp safe to use?
+
Our security agent has analyzed HasData/redfin-mcp and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains HasData/redfin-mcp?
+
HasData/redfin-mcp is maintained by HasData. The last recorded GitHub activity is dated 2026-09-09, with 0 open issues.
Are there alternatives to redfin-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy redfin-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/hasdata-redfin-mcp)<a href="https://claudewave.com/repo/hasdata-redfin-mcp"><img src="https://claudewave.com/api/badge/hasdata-redfin-mcp" alt="Featured on ClaudeWave: HasData/redfin-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!