HouseData — Zillow data

Zillow data for agents: listings, records, Zestimate history, market stats. 19 tools, pay per call.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
88%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'zillow_property_facts' description lacks action verbin zillow_property_facts
  • LOWTool 'zillow_schools' description lacks action verbin zillow_schools
  • LOWTool 'zillow_scores' description lacks action verbin zillow_scores

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,823Tokens (tool definitions)
~1.9 KBTypical response size
Significant attention impact (3.77% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "zillow": {
      "url": "https://mcp.housedata.dev/mcp"
    }
  }
}

Remote endpoints

https://mcp.housedata.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (19)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢zillow_search_listings(location, regionId, status, sort, sortAscending, ...)

Listings for a place typed as on Zillow — a city (Austin, TX), a ZIP, a neighborhood or a county — for sale, for rent or recently sold. One row per listing with its zpid, address, price, beds, baths, living area, days on Zillow and Zestimate; up to 40 per page and 1,000 per search (page x pageSize). Rentals come back as buildings (resultType propertyGroup, with a buildingId) and single homes (property). Sort daysOn ascending for newest first.

Input Schema

{
  "type": "object",
  "properties": {
    "location": {
      "description": "A city, ZIP, neighborhood or county as typed into Zillow. Required unless regionId is given.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "regionId": {
      "description": "A Zillow region id from zillow_autocomplete_places or zillow_region, instead of location.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "status": {
      "description": "forSale (default), forRent or sold. (one of forSale, forRent, sold, default forSale)",
      "type": "string",
      "enum": [
        "forSale",
        "forRent",
        "sold"
      ]
    },
    "sort": {
      "description": "Zillow's sort orders; daysOn with sortAscending true is newest first. (one of relevance, daysOn, price, beds, baths, livingArea, lotArea, yearBuilt, recentlyChanged, featured, rentalPriorityScore)",
      "type": "string",
      "enum": [
        "relevance",
        "daysOn",
        "price",
        "beds",
        "baths",
        "livingArea",
        "lotArea",
        "yearBuilt",
        "recentlyChanged",
        "featured",
        "rentalPriorityScore"
      ]
    },
    "sortAscending": {
      "description": "Reverse the sort; false by default. (default false)",
      "type": "boolean"
    },
    "page": {
      "description": "Page number; page x pageSize must not exceed 1,000. (default 1)",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "description": "Rows per page, up to 40. (1-40, default 20)",
      "type": "integer",
      "minimum": 1,
      "maximum": 40
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_autocomplete_places(q, types, count, expand)

The regions Zillow knows for a partial place name — cities, ZIPs, neighborhoods, counties — each with its region id, type and centre. What a search box needs before zillow_search_listings, and the way to a regionId.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ],
      "description": "The partial place name, as a person would type it."
    },
    "types": {
      "description": "Comma-separated region types to keep, e.g. city,zipcode,neighborhood. (default REGIONS)",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "count": {
      "description": "How many suggestions to return. (1-20, default 5)",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "q"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_region(location, regionId, expand)

A place name resolved to Zillow's region — id, type, parent state and city, centre and the exact bounding rectangle search uses — or a region id described. Give location or regionId.

Input Schema

{
  "type": "object",
  "properties": {
    "location": {
      "description": "A place name to resolve, as typed into Zillow.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "regionId": {
      "description": "A Zillow region id to describe, instead of location.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_property(zpid, expand)

The record for any zpid, listed or off market — every zpid has one. Compact: the headline (status, price, Zestimate, rent Zestimate, address, coordinates, beds, baths, living area, year built, home type, lot, HOA, days on Zillow, hero photo). expand true: everything — 23 facts, price and tax history, schools with ratings, listing agent and broker, MLS, walk/transit/bike scores, nearby homes, open houses, description and the photo gallery (~17 KB).

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id — the number before _zpid in any Zillow property URL, and on every search row."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_property_facts(zpid, expand)

The facts for one home: beds, baths, living area, lot, year built, home type, parking, heating and cooling, HOA, price per square foot, and the rest of Zillow's fact sheet — with the current status and price.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_price_history(zpid, expand)

Every listing, price cut, pending, sale and delisting Zillow records for a home, newest first, with the price, the change and the source.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_tax_history(zpid, expand)

Assessed value and tax paid by year for a home, as far back as Zillow records them.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_schools(zpid, expand)

The schools assigned to a home — name, level, grades, distance and GreatSchools rating.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_scores(zpid, expand)

Walk Score, Transit Score and Bike Score for a home's location, with their descriptions.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_nearby_homes(zpid, expand)

Homes Zillow shows near this one, each with zpid, address, price, beds, baths, living area and status.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_photos(zpid, size, expand)

The photo gallery for a home — one URL per photo, in order, with the hero photo first. size full adds every size Zillow serves for each photo.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "size": {
      "description": "full to add every image size Zillow serves (larger answer). (one of full)",
      "type": "string",
      "enum": [
        "full"
      ]
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_zestimate(zpid, expand)

The Zestimate for any zpid, listed or not: the value with its low and high, the value 30 days ago, the rent Zestimate, and zestimateHistory — one point a month for about ten years — plus the home's price history. Null where Zillow publishes no Zestimate; nothing is estimated in its place.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_comps(zpid, expand)

The comparable homes Zillow uses to value this one — each with zpid, address, price, beds, baths, living area, distance and sale date where sold.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_listing_agent(zpid, expand)

The listing agent's full profile for a listed home — name, license, phone, email, website, brokerage, bio, social links, Zillow rating and review count — with the broker and the MLS id. Agent fields are null on a home with no active listing. Personal data: handle it as such.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id of a listed home."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_top_agents(zpid, expand)

The agents Zillow ranks around a home by sales in the past year: name, Zillow id, sales count, min/max/average/median sale price, sales in this price range, bio and profile. Who actually sells here.

Input Schema

{
  "type": "object",
  "properties": {
    "zpid": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "pattern": "^[0-9]{1,12}$"
        },
        {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      ],
      "description": "The Zillow property id."
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "required": [
    "zpid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_market_stats(location, regionId, months, expand)

Monthly market statistics for a region, newest first: market temperature with Zillow's buyer/seller label, for-sale inventory, new listings, new pending, median days to pending, and the share sold above and below list — up to 100 months. Give location (a place name) or regionId; `latest` carries the newest row of each series.

Input Schema

{
  "type": "object",
  "properties": {
    "location": {
      "description": "A city, ZIP, neighborhood, county or metro as typed into Zillow.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "regionId": {
      "description": "A Zillow region id, instead of location.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "months": {
      "description": "How many months back, up to 100 (default 12). (1-100, default 12)",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_mortgage_rates(expand)

Today's mortgage rates as Zillow lists them — product (30-year fixed, FHA, VA, 15-year, ARMs), rate and APR, with Zillow's tag for each.

Input Schema

{
  "type": "object",
  "properties": {
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_building(buildingId, lat, lng, expand)

A rental building — name, address, description, amenities, unit and floor-plan counts, rent range and photos — by buildingId (from a forRent search row with resultType propertyGroup) or by lat and lng.

Input Schema

{
  "type": "object",
  "properties": {
    "buildingId": {
      "description": "The building id from a rental search row (resultType propertyGroup).",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "lat": {
      "description": "Latitude, with lng, instead of buildingId.",
      "type": "number"
    },
    "lng": {
      "description": "Longitude, with lat, instead of buildingId.",
      "type": "number"
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢zillow_floor_plans(buildingId, lat, lng, expand)

Every floor plan of a rental building — name, beds, baths, square feet, rent range, lease term — and the units available under each, with unit number, price, square feet and move-in date. Compact drops photo and tour links; expand true keeps them.

Input Schema

{
  "type": "object",
  "properties": {
    "buildingId": {
      "description": "The building id from a rental search row (resultType propertyGroup).",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "number"
        }
      ]
    },
    "lat": {
      "description": "Latitude, with lng, instead of buildingId.",
      "type": "number"
    },
    "lng": {
      "description": "Longitude, with lat, instead of buildingId.",
      "type": "number"
    },
    "expand": {
      "description": "false (default): the compact form - the headline of a record or a search row, or the answer minus photo and tour links. true: the complete response from the data API (a full record is ~17 KB). Same price either way.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded19 tools