Skip to main content
Zillow

Zillow Scraper API
listings, Zestimates and history

Send a Zillow search or property link and get the homes back as data: price, Zestimate, beds, baths, square feet, status and the listing broker. A property link adds its price history, tax history and nearby schools.

You sendwww.zillow.com/austin-tx/
41 listings+ map results1 credit
You get back (real run, trimmed)
{
"type": "search",
"totalResults": 5648,
"listingCount": 41,
"mapListingCount": 501,
"listings": [
{
"address": "8700 Olmsted Way, Austin, TX 78744",
"price": 800000,
"beds": 5,
"baths": 5,
"livingArea": 4066,
"statusText": "Active"
},
"… 40 more"
]
}
41

listings per search page, with price, Zestimate and status

500

more homes from the map on page 1 of a search, at no extra cost

1 credit

per page, for a search or a property with its history

$0

for a page that can't be delivered

Every Zillow page you can send

Copy the link from your browser, filters and all. Spidra works out what kind of page it is.

Searches

For sale, for rent or sold, by city, ZIP or any filtered search: 41 listings per page and the total count.

zillow.com/austin-tx/

Map results

Page 1 of a search also returns up to 500 homes Zillow plots on the map, with the same card fields.

"mapListings": [ ... ]

Properties

One home in full: Zestimate with its range, facts and features, price and tax history, schools, agents and photos.

zillow.com/homedetails/.../20089446_zpid/

Buildings and apartments

Floor plans with every unit's price, beds, baths and availability, plus amenities, pet policy and walk scores.

zillow.com/apartments/austin-tx/...

Agent profiles

Brokerage, phones and websites as published, licenses, rating, recent reviews, listings and recent sales.

zillow.com/profile/<screen-name>/

Agent directory

The agents listed for a city, with brokerage, rating, review count and sales stats.

zillow.com/professionals/real-estate-agent-reviews/austin-tx/

One call, every field

Point the scrape call at a Zillow link. With JSON output and no prompt, the data comes back as it is, for 1 credit and no AI cost.

Ask for markdown instead and you get the readable page as text. The structured data still comes back, in its own structuredData field next to the markdown.

import { SpidraClient } from "spidra";
 
const spidra = new SpidraClient({
apiKey: process.env.SPIDRA_API_KEY,
});
 
const result = await spidra.scrape({
urls: [{ url: "https://www.zillow.com/austin-tx/" }],
output: "json",
});
 
const data = result.content;
for (const l of data.listings) console.log(l.address, l.price, l.beds);
What you get for each home
Identity
Zillow ID (zpid), link, full address and its parts, county, parcel ID and coordinates
Price
List or sold price, price change and its date, price per square foot, HOA fee and tax assessed value
Zestimate
Zestimate with its low and high range, and the rent Zestimate
Facts
Beds, baths, living area, lot size, year built, home type, status, days on Zillow, views and saves, plus the full facts and features block
History
Price history (listed, sold, removed, with source) and tax history by year with tax paid and assessed value
Schools
Assigned and nearby schools with rating, grades, distance, district and enrollment
Listing
Listing agent, co-agent, broker and buyer agent as shown, MLS ID, MLS name and the MLS disclaimer
Extras
Description, all photos, virtual tour, open houses and nearby homes

What comes back

Real responses from Spidra, trimmed for length. Nothing here is mocked up.

Request
https://www.zillow.com/austin-tx/
Response (real run, October 18, 2026, trimmed)
{
"type": "search",
"title": "Austin TX Real Estate & Homes For Sale",
"totalResults": 5648,
"listingCount": 41,
"mapListingCount": 501,
"totalPages": 20,
"listings": [
{
"zpid": "458257394",
"url": "https://www.zillow.com/homedetails/8700-Olmsted-Way-Austin-TX-78744/458257394_zpid/",
"address": "8700 Olmsted Way, Austin, TX 78744",
"streetAddress": "8700 Olmsted Way",
"city": "Austin",
"state": "TX",
"zipcode": "78744",
"price": 800000,
"priceText": "$800,000",
"statusType": "FOR_SALE",
"statusText": "Active",
"homeStatus": "FOR_SALE",
"homeType": "SINGLE_FAMILY",
"marketingStatus": "For Sale by Agent",
"beds": 5,
"baths": 5,
"livingArea": 4066,
"lotAreaValue": 0.2571,
"lotAreaUnit": "acres",
"daysOnZillow": 11,
"priceChange": -25000,
"datePriceChanged": "2026-10-17T07:00:00.000Z",
"brokerName": "Compass RE Texas, LLC",
"latitude": 30.147654,
"longitude": -97.71276,
"imageUrl": "https://photos.zillowstatic.com/fp/466bf840d38c2655cfbd244f64661bc9-p_e.jpg",
"flexText": "Showcase",
"has3DModel": true,
"hasVideo": false,
"isFeatured": false,
"isShowcase": true,
"isBuilding": false
},
"… 40 more"
],
"mapListings": [
{
"zpid": "458257394",
"url": "https://www.zillow.com/homedetails/8700-Olmsted-Way-Austin-TX-78744/458257394_zpid/",
"address": "8700 Olmsted Way, Austin, TX 78744",
"streetAddress": "8700 Olmsted Way",
"city": "Austin",
"state": "TX",
"zipcode": "78744",
"price": 800000,
"priceText": "$800,000",
"statusType": "FOR_SALE",
"statusText": "Active",
"homeStatus": "FOR_SALE",
"homeType": "SINGLE_FAMILY",
"marketingStatus": "For Sale by Agent",
"beds": 5,
"baths": 5,
"livingArea": 4066,
"lotAreaValue": 0.2571,
"lotAreaUnit": "acres",
"daysOnZillow": 11,
"priceChange": -25000,
"datePriceChanged": "2026-10-17T07:00:00.000Z",
"brokerName": "Compass RE Texas, LLC",
"latitude": 30.147654,
"longitude": -97.71276,
"imageUrl": "https://photos.zillowstatic.com/fp/466bf840d38c2655cfbd244f64661bc9-p_e.jpg",
"flexText": "Showcase",
"has3DModel": true,
"hasVideo": false,
"isFeatured": false,
"isShowcase": true,
"isBuilding": false
},
"… 500 more"
]
}

The history Zillow loads after the page

A Zillow property page arrives with only half its data. Price history, tax history and schools load a moment later, from a separate call the page makes in your browser. Most scrapers that read the HTML miss them.

Spidra makes that same call for every property link and merges the answer in, so one request returns the sales record, years of tax assessments and the schools nearby. A historyLoaded flag tells you it worked.

10201 Kalua Dr, Sunland, CA (real run, trimmed)
"priceHistory": [{
"date": "2011-01-12",
"event": "Sold",
"price": 600000,
"pricePerSquareFoot": 292,
"source": "Public Record"
}],
"taxHistory": [{
"year": 2025,
"taxPaid": 9730.38,
"assessedValue": 768693
}],
"schools": [{
"name": "Stonehurst Avenue Elementary School",
"rating": 8,
"grades": "K-5",
"distance": 1
}],
"historyLoaded": true

41 listings, plus the whole map

A Zillow search page lists 41 homes. Zillow also plots far more homes on the map next to the list. On page 1, Spidra asks for that map too and returns around 500 more homes with the same fields: price, beds, baths, area, status, broker and coordinates.

For a whole city that is often most of the market from one request. Page 2 onward returns the 41 listings of that page, and nextPageUrl gives you the link.

Austin, TX search, page 1 (real run, trimmed)
"totalResults": 5648,
"listingCount": 41,
"totalPages": 20,
"nextPageUrl": "https://www.zillow.com/austin-tx/2_p/",
"mapListingCount": 501,
"mapListings": [{
"address": "8700 Olmsted Way, Austin, TX 78744",
"price": 800000,
"beds": 5,
"baths": 5,
"livingArea": 4066,
"daysOnZillow": 11,
"brokerName": "Compass RE Texas, LLC",
"latitude": 30.147654,
"longitude": -97.71276
}]

Send the search you already built

Set up the search on Zillow the way you want it: area, for sale or for rent, price range, beds, sort. Then send that link. Filters in the path or in the searchQueryState parameter are passed through as they are.

If a link only names a place, Spidra looks up its region first, because Zillow would otherwise show homes near the visitor instead. Use /homes/for_sale/ or /homes/for_rent/ in a ZIP search to fix the listing type.

Ask for the columns you want

Describe the answer as a prompt, a JSON schema or both, and it comes back in that shape. The AI reads a compact copy of the data Spidra already read, not the whole page.

Request
const result = await spidra.scrape({
urls: [{ url: "https://www.zillow.com/homedetails/10201-Kalua-Dr-Sunland-CA-91040/20089446_zpid/" }],
prompt: "Give the home's key facts and its last sale.",
schema: {
type: "object",
properties: {
price: {
type: "number"
},
zestimate: {
type: "number"
},
beds: {
type: "number"
},
baths: {
type: "number"
},
sqft: {
type: "number"
},
lastSoldPrice: {
type: "number"
},
lastSoldDate: {
type: "string"
}
}
},
});
What came back (real run)
{
"price": 1094600,
"zestimate": 1094600,
"beds": 4,
"baths": 3,
"sqft": 2058,
"lastSoldPrice": 600000,
"lastSoldDate": "2011-01-12"
}

This request cost 2 credits on October 18, 2026: 1 for the page plus the AI tokens. For the data as it is, use JSON output with no prompt for 1 credit.

What teams build with it

Zillow data feeds pricing, investing and market research.

Comps and valuation

Pull nearby sales, price history and Zestimates to check an asking price or build your own valuation model.

Investor deal flow

Watch new listings and price cuts in your target areas, with days on Zillow, rent Zestimates and tax data to screen them.

Rental market tracking

Track rents, unit availability and floor plans across buildings and neighborhoods over time.

How Spidra compares

Zillow scrapers are cheap and plentiful. Here is how they differ.

Apify (maxcopell)Bright DataHasDataSpidra
1,000 search listingsFrom $1.30From $0.75 per 1,000 records$2.46 down to $0.69 per 1,000 requestsAbout 25 pages of 41: $0.10 down to $0.05, plus the map results on page 1
1,000 property detailsFrom $1.70 (separate detail actor)From $0.75 per 1,000 records$2.46 down to $0.69 per 1,000 requests1,000 credits: $3.80 down to $1.99
Price and tax historyYesPrice historyYesYes, with schools, in the same request
AgentsSeparate agent actorsAgent profilesAgent info on property pagesAgent profiles and the agent directory
OutputFixed fieldsFixed fieldsFixed fieldsFixed fields, or your own schema or prompt
Beyond ZillowThousands of other actorsDatasets and other scrapersOther site APIsAny website, crawl, search, PDFs, MCP

Choose Apify or Bright Data if

You need hundreds of thousands of property details at the lowest price per record, or a ready-made historical dataset.

Choose Spidra if

You want search, property, building and agent pages through one call, the price and tax history Zillow loads later, and Zillow plus any other website on one API key.

Competitor prices are as published on their own pages on October 18, 2026 and may have changed. Spidra prices use 1 credit per page on each plan. Sources: Apify, Bright Data, HasData.

What to know before you build

We would rather you hear the limits from us than find them in production.

  • One page per request: a search link returns 41 listings, and page 1 adds around 500 map results. Zillow shows at most 20 pages of a search, so split big areas by ZIP, price range or map area.
  • Listing data on Zillow is licensed from MLSs. Property results carry the MLS name and disclaimer when Zillow shows one. Check what your use allows before you republish listings or photos.
  • Zestimate history and walk and transit scores for single homes are not returned. Buildings do include walk, transit and bike scores.
  • Agent emails come back only when the agent has published one. Agent profiles include the first 5 reviews, plus the total and the breakdown.
  • Spidra reads Zillow as a visitor who isn't signed in. Saved homes and saved searches are not available.
  • Agent contact details and for-sale-by-owner contacts are personal data. Handle them according to the privacy laws that apply to you.

What it costs

1 credit per page. Pages that can't be delivered are free. Work out your monthly volume below.

Monthly credits
3,000
Fits the Starter plan ($19/mo)

Example: 100 search pages a day is 4,100 listings plus the map results, about 3,000 credits a month. Plain JSON output uses no AI tokens.

PlanPriceZillow pages a month
Free$0up to 300 (one time)
Starter$19/moup to 5,000
BuilderPopular$79/moup to 25,000
Pro$249/moup to 125,000

Credits are shared across everything Spidra does, so the same plan covers Zillow and any other site.

Related scrapers

Same API key, same credits. See every scraper.

FAQ

Questions, answered

Zillow

Not one you can sign up for. Zillow shut down its public API in September 2021. Its data now goes through Bridge Interactive, which is limited to MLS members, brokers and use cases Zillow approves. Spidra reads the public Zillow pages instead, so you send a link and get JSON back.

Send a Zillow link and see what comes back.

Get 300 free credits, no card, and run your first Zillow search from the dashboard or the API.

Spidra is not affiliated with, endorsed by, or sponsored by Zillow. Zillow and Zestimate are trademarks of Zillow, Inc. Listing data shown on Zillow is licensed from MLSs and other sources. Check Zillow's terms of use and the laws that apply to you before you collect data, and use the data responsibly.