Zillow Rental Data Scraper API
Our Zillow rental data API takes a location and a for_rent filter and returns every rental listing with its rent price, beds, baths, and square footage as structured JSON, so you can collect rent prices and rental listings for any city or ZIP in one call.
Quickstart
curl "https://api.zillowscraperapi.com/api/v1/zillow/search?location=Seattle,%20WA&status=for_rent&page=1&api_key=$API_KEY" import requests
BASE = "https://api.zillowscraperapi.com"
API_KEY = "YOUR_API_KEY"
# for_rent returns rental listings; price holds the monthly asking rent.
data = requests.get(
f"{BASE}/api/v1/zillow/search",
params={
"location": "Seattle, WA",
"status": "for_rent",
"page": 1,
"api_key": API_KEY,
},
timeout=30,
).json()
print(data["total_results"], "rentals in", data["location"])
for unit in data["results"]:
print(unit["address_zip"], f"${unit['price']:,}/mo", unit["beds"], "bd", unit["baths"], "ba", unit["sqft"], "sqft") Response
{
"query": "Seattle, WA",
"location": "Seattle, WA",
"page": 1,
"total_results": 10,
"results_count": 10,
"results": [
{
"position": 1,
"id": "463504654",
"title": "6505 44th Avenue NE, Seattle, WA 98115",
"url": "https://www.zillow.com/homedetails/6505-44th-Ave-NE-Seattle-WA-98115/463504654_zpid/",
"price": 899900,
"beds": 3,
"baths": 3,
"sqft": 1422,
"zpid": "463504654",
"address_street": "6505 44th Avenue NE",
"address_city": "Seattle",
"address_state": "WA",
"address_zip": "98115",
"zestimate": null,
"status": "FOR_SALE",
"status_text": "Active",
"home_type": "SINGLE_FAMILY",
"latitude": 47.675953,
"longitude": -122.281136,
"has_image": true,
"builder_name": "Enduring Estates LLC"
}
]
} | Field | Type | Description |
|---|---|---|
query | string | The location you searched, echoed back. |
location | string | The resolved location string for the results. |
page | integer | The results page returned, starting at 1. |
total_results | integer | Number of listings in the results array for this page. |
results | array | The rental listings for this location, each with the fields below. |
results[].price | integer | The monthly asking rent in whole dollars for a for_rent listing. |
results[].beds | integer | Bedroom count for the unit. |
results[].baths | integer | Bathroom count for the unit. |
Use it for
Rent price data by ZIP
Rental market tracking
Rent-per-square-foot analysis
Investor and landlord comps
Pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
How do I get Zillow rental data?
Send one GET request to our zillow/search endpoint with a location and status set to for_rent, plus your api_key. The response is a results array where each rental carries its monthly asking rent under the price field, along with beds, baths, square footage, address, ZIP, and coordinates. We handle the proxies, Zillow's PerimeterX challenge, and parsing, so you collect rent prices for a ZIP or city without running a scraper yourself.
Does Zillow have a rental data API?
Zillow publishes rental market data as bulk research files, most notably the Zillow Observed Rent Index, but it does not offer a public API that returns per-listing asking rents for a given ZIP. Our Zillow rental data API reads the public rentals pages and returns each listing's rent and details as structured JSON, filling the listing-level gap the research downloads leave.
Where is the rent price in the response?
For a for_rent search, the monthly asking rent comes back in the price field of each result, in whole dollars. The example response on this page shows the shared search schema (a for-sale example, where price is the list price); when you pass status=for_rent, the same fields describe rentals and price holds the rent. We never relabel or invent fields, so the shape stays identical across statuses.
Can I pull historical or monthly rent data?
The endpoint returns the live rental listings on Zillow at request time, so it captures current asking rents. To build a monthly history, run the same location on a schedule and store the results, which gives you a time series of asking rents you control. For market-level historical rent, Zillow's Observed Rent Index research files remain the source, and this API complements them with current per-listing data.
How many rentals come back per request?
One request returns a single results page, which holds roughly 40 units, and you can raise the limit parameter up to 500 or page deeper with the page parameter (1 to 20). Zillow caps a given search around a few hundred results, so covering a large metro means splitting it into tighter locations or ZIP codes and paging through each.
How fast is it and how is it billed?
Median end-to-end response is about 2.6 seconds per page, including proxy routing, PerimeterX handling, retries, and parsing. You are billed only for successful requests, so blocked fetches we retry behind the scenes do not land on your bill. The free tier includes 1,000 requests to test against real locations first.