HouseData — Zillow data
Zillow data for agents: listings, records, Zestimate history, market stats. 19 tools, pay per call.
Should I use this
Quality & Safety
Findings (3)
- LOWin zillow_property_facts
- LOWin zillow_schools
- LOWin zillow_scores
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (19)
🟢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
Evidence