If you’re building a rental investment tool, a property management dashboard, or a proptech app that needs rent estimates, you need rental data from an API. Not a spreadsheet. Not a manual Zillow search. An API that returns rent estimates as numbers you can calculate with.
Zillow’s rent Zestimate is the most widely recognized rental estimate in the U.S. But Zillow doesn’t offer a public API for it. They locked it behind Bridge Interactive in 2021, and Bridge requires MLS affiliation.
In 2026, the practical path to Zillow rental data is a third-party REST API. Here’s how to pull rent Zestimates, search rental listings, and calculate investment metrics with working code.
How do I get Zillow rent estimates through an API?
Every Zillapi property lookup returns the rentZestimate field as an integer in dollars. It’s Zillow’s estimated monthly rent for that property, the same number you see on Zillow.com’s rental estimate page. One API call. One credit. No scraping.
import requests, os
r = requests.get( "https://api.zillapi.com/v1/properties/by-address", params={"address": "17 Zelma Dr, Greenville, SC 29617"}, headers={"Authorization": f"Bearer {os.environ['ZILLAPI_KEY']}"},)data = r.json()["data"]print(f"Rent Zestimate: ${data['rentZestimate']:,}/mo")print(f"Home Value: ${data['zestimate']:,}")Output:
Rent Zestimate: $1,850/moHome Value: $305,100The rent Zestimate comes back alongside the home value Zestimate in every property response. You don’t need a separate endpoint or a separate credit. Both numbers are always there.
In JavaScript:
const res = await fetch( `https://api.zillapi.com/v1/properties/by-address?${new URLSearchParams({ address: "17 Zelma Dr, Greenville, SC 29617" })}`, { headers: { Authorization: `Bearer ${process.env.ZILLAPI_KEY}` } });const { data } = await res.json();console.log(`Rent Zestimate: $${data.rentZestimate.toLocaleString()}/mo`);How do I search for rental listings?
The search endpoint returns active rental listings when you set the listing status filter. Pass a bounding box to define the geographic area and add filters for price, bedrooms, and property type.
r = requests.post( "https://api.zillapi.com/v1/search", json={ "bbox": { "west": -82.45, "south": 34.80, "east": -82.35, "north": 34.90 }, "listingStatus": "FOR_RENT", "maxPrice": 2500, "minBedrooms": 2, "homeType": ["SINGLE_FAMILY", "TOWNHOUSE"] }, headers={"Authorization": f"Bearer {os.environ['ZILLAPI_KEY']}"},)
rentals = r.json()["data"]print(f"Found {len(rentals)} rentals")for listing in rentals[:5]: print(f" {listing['address']['streetAddress']}: ${listing['price']:,}/mo - {listing['bedrooms']}bd/{listing['bathrooms']}ba")Each rental listing comes back with the asking rent, property details, photos, listing agent contact info, and the rent Zestimate for comparison. If the asking rent is significantly above the rent Zestimate, the property might be overpriced. If it’s below, it could be a deal.
One search call costs 1 credit regardless of how many listings come back.
How do I calculate cap rate and rent yield?
This is why most investors want rental data from an API. You need both the rent estimate and the property value to calculate investment returns. With Zillapi, both come in one call.
Gross rent yield (a cap rate proxy):
rent_annual = data["rentZestimate"] * 12home_value = data["zestimate"]gross_yield = (rent_annual / home_value) * 100print(f"Gross rent yield: {gross_yield:.1f}%")For the example property: (1850 * 12) / 305100 = 7.3%.
Rent-to-price ratio (the “1% rule” screening metric):
rent_to_price = (data["rentZestimate"] / data["zestimate"]) * 100print(f"Rent-to-price ratio: {rent_to_price:.2f}%")# 0.61% — below the 1% thresholdBatch screening across a list of addresses:
addresses = [ "17 Zelma Dr, Greenville, SC 29617", "100 Main St, Greenville, SC 29601", "45 Augusta St, Greenville, SC 29601",]
for addr in addresses: r = requests.get( "https://api.zillapi.com/v1/properties/by-address", params={"address": addr, "fields": "zestimate,rentZestimate,address"}, headers={"Authorization": f"Bearer {os.environ['ZILLAPI_KEY']}"}, ) d = r.json()["data"] if d["zestimate"] and d["rentZestimate"]: yield_pct = (d["rentZestimate"] * 12 / d["zestimate"]) * 100 print(f"{addr}: ${d['rentZestimate']:,}/mo rent, ${d['zestimate']:,} value, {yield_pct:.1f}% yield")At 200 requests per minute, you can screen 1,000 properties in 5 minutes. Each lookup costs 1 credit. The fields parameter trims the response to just the fields you need, which speeds up processing.
What rental data fields does the API return?
Every property lookup returns rental-relevant fields alongside the full 300+ field response. Here are the ones rental investors use most:
| Field | Type | Example | What it tells you |
|---|---|---|---|
| rentZestimate | integer | 1850 | Zillow’s monthly rent estimate in dollars |
| zestimate | integer | 305100 | Zillow’s home value estimate in dollars |
| price | integer | 295000 | Current listing price (if listed) |
| homeStatus | string | FOR_RENT | Whether the property is listed for rent |
| bedrooms | integer | 3 | Bedroom count |
| bathrooms | integer | 2 | Bathroom count |
| livingArea | integer | 1432 | Square footage |
| yearBuilt | integer | 1965 | Year built |
| taxAssessedValue | integer | 187400 | County tax assessment |
| homeType | string | SINGLE_FAMILY | Property type |
| schools | array | […] | Nearby schools with ratings |
| priceHistory | array | […] | Past sales and price changes |
The fields parameter lets you request only what you need:
?fields=rentZestimate,zestimate,bedrooms,bathrooms,livingArea,taxAssessedValueThat cuts the response from ~3,000 tokens to under 100. Useful when you’re processing thousands of properties and want to minimize bandwidth.
How does this compare to other rental data APIs?
Several APIs offer rental estimates. They differ in data source, coverage, and pricing. Here’s how they compare for rental-specific use cases.
| Provider | Rent estimates | Data source | Free tier | Per-call cost | Coverage |
|---|---|---|---|---|---|
| Zillapi | rentZestimate | Zillow | 100 credits | $0.005 | 160M+ properties |
| RentCast | Own AVM | Public records + MLS | 50/month | ~$0.01+ | 140M+ properties |
| Rentometer | Own model | Listing aggregation | No | ~$0.10+ | Major metros |
| HouseCanary | Own AVM | Proprietary + MLS | No | Custom | Nationwide |
| RentComp | Comparable rents | Listing data | No | Custom | Top 50 metros |
Three things stand out from this table.
Zillapi is the only provider that returns Zillow’s actual rent Zestimate. The others use their own valuation models. If your users expect to see the same rent estimate they find on Zillow.com, Zillapi is the only option.
Zillapi is also the cheapest per call. At $0.005, you can screen 1,000 rental properties for $5. RentCast starts at $74/month. Rentometer starts at $99/month for API access.
Coverage varies. Zillapi and RentCast cover the full U.S. Rentometer and RentComp are strongest in major metros. HouseCanary has broad coverage but requires custom pricing conversations.
What can you build with rental data from an API?
I see developers use rental API data for four main things.
The most common is rental property screening tools. Investors paste a list of addresses, the tool pulls rent Zestimates and home values, calculates yield for each one, and ranks them. The entire workflow is one loop and a sort.
Next is property management dashboards. Property managers with 10 to 500 units need current rent estimates without ordering market studies. Pull the rent Zestimate for every unit monthly, compare to actual rents, and flag units where you’re leaving money on the table.
Then there’s rental listing aggregation. The search endpoint returns active FOR_RENT listings with photos, agent contact, and asking rent. Build a rental search experience that pulls from Zillow’s rental inventory.
And increasingly, AI agents for real estate investors. An investor asks “find me 3-bedroom rentals under $2,000 in Greenville SC with at least 6% yield” and the agent calls the search endpoint, filters results, calculates yield, and answers with specific properties. The AI agent guide shows how to wire this up.
How much does rental API access cost?
The rent Zestimate is one field in a larger property response. You don’t pay separately for it. Every Zillapi API call returns the rent Zestimate along with the home value Zestimate and 300+ other fields at the same price.
| Plan | Credits | Cost | Per property |
|---|---|---|---|
| Free | 100 (one-time) | $0 | $0.00 |
| Monthly | 1,000/month | $5/mo | $0.005 |
| Annual | 12,000/year | $54/yr | $0.0045 |
No credit card needed for the free tier. 100 rent estimates for $0.
For a rental investor screening 200 properties per month, the $5 monthly plan covers it with 800 credits to spare. For a property management company tracking 500 units monthly, the annual plan at $54/year is the clear choice.
Get your first rent estimate in 60 seconds
Go to zillapi.com. Sign up with your email. Get 100 free credits.
Pull a rent Zestimate for a property you own or manage. Compare it to what you’re actually charging. If the number is useful, you’ve found your rental data API.
For the full developer walkthrough with more code examples, see our Python tutorial or JavaScript tutorial. For pricing details across all providers, see the complete cost breakdown.
Frequently asked questions
Is there a Zillow rental data API in 2026?
Not from Zillow directly for most developers. Zillow’s official API through Bridge Interactive requires MLS affiliation and does not expose rent Zestimates. Third-party REST APIs like Zillapi return the rentZestimate field as an integer in dollars for any U.S. property, along with rental listings and 300+ other fields. You sign up with email, get 100 free credits, and pull rental data immediately.
How do I get a rent Zestimate through an API?
Call the Zillapi /v1/properties/by-address endpoint with any U.S. address. The JSON response includes a rentZestimate field as an integer in dollars representing Zillow’s monthly rent estimate. It also returns the zestimate (home value) in the same call, so you can calculate gross rent yield with one request. Each call costs 1 credit.
Can I search for rental listings through an API?
Yes. The Zillapi /v1/search endpoint accepts a listingStatus filter for FOR_RENT properties. Pass a bounding box with geographic coordinates and optional filters like minPrice, maxPrice, and minBedrooms. Each matching rental listing comes back with rent price, property details, photos, and listing agent contact info.
How accurate is the Zillow rent Zestimate?
Zillow does not publish separate accuracy metrics for rent Zestimates the way it does for home value Zestimates. The rent Zestimate is an automated estimate based on comparable rentals, property attributes, and local market data. It works best in dense urban areas with many rental comps and is less reliable in rural areas or for unusual property types.
What is the cheapest rental data API?
Zillapi costs $0.005 per call on the monthly plan and returns both the rent Zestimate and home value Zestimate in a single request. RentCast starts at $74 per month. Rentometer starts at $99 per month for API access. HouseCanary offers custom pricing. Zillapi’s 100 free credits at signup let you test rental data workflows at zero cost.
Can I calculate cap rate with the Zillow rental API?
Yes. Every Zillapi property response includes both the zestimate field (home value) and the rentZestimate field (monthly rent). Multiply the rent by 12 and divide by the Zestimate to get a gross rent yield proxy. For a property with a $1,850 rent Zestimate and a $305,100 Zestimate, the gross yield is 7.3%. One API call gives you both numbers.