The /rental-yield endpoint returns HUD Small Area Fair Market Rent data for a ZIP code by bedroom count, combined with a gross rental yield calculation using the current median sale price.
Request
GET /rental-yield?zip_code={zip_code}&bedrooms={bedrooms}
Parameters:
zip_code (string, required) — 5-digit US ZIP code
bedrooms (integer, optional) — 1 to 5 (default: 2)
Headers:
x-rapidapi-proxy-secret: YOUR_API_KEY
There is no studio option. The endpoint validates bedrooms as 1–5 and returns 422 for anything outside that range, including 0. Values above the HUD 4-bedroom band fall back to the 4-bedroom rent.
Response Schema
{
"zip_code": "78701",
"bedrooms": 2,
"median_sale_price": 475000,
"estimated_monthly_rent": 1850, // USD/month (HUD SAFMR)
"estimated_annual_rent": 22200, // USD/year
"gross_yield_pct": 4.67, // percent
"yield_rating": "Average",
"rent_to_price_ratio": 0.389, // monthly rent as % of price
"hud_fmr_year": 2025, // HUD vintage year
"data_source": "hud_fmr",
"disclaimer": "Gross yield. Subtract ~35–45% for expenses to estimate net yield."
}
The yield is gross — there is no net-yield field, because the expense load is the part only you can know. Applying the same 40% ratio the /property-estimate endpoint uses would put this example nearer 2.8% net.
Where a ZIP has no HUD row of its own the response is served from a regional anchor instead, with data_source: "estimated" plus estimate_anchor and data_note fields explaining the substitution. Branch on data_source before treating a rent as ZIP-specific.
All Bedroom Types (Batch)
To get every bedroom band for a ZIP code, call the endpoint once per bedroom value across the supported 1–5 range:
import asyncio, httpx
async def all_bedroom_yields(zip_code, key):
headers = {"x-rapidapi-proxy-secret": key}
async with httpx.AsyncClient() as c:
tasks = [c.get("https://zipmarketdata.com/rental-yield",
params={"zip_code": zip_code, "bedrooms": br},
headers=headers) for br in range(1, 6)]
responses = await asyncio.gather(*tasks)
return {r.json()["bedrooms"]: r.json() for r in responses}