monthlyHoaFee

monthlyHoaFee is the homeowners association fee per month as shown on the home's Zillow page, in US dollars.

FieldType
data.monthlyHoaFeenumber or null

What it means

The value is the fee for one month. Condos and townhouses usually carry one, and so do many single-family homes in planned communities: a recorded single-family listing in Austin had a small monthly fee next to a large one on a Chicago high-rise condo.

The fee is what the listing shows, which usually comes from the listing agent's data. It can be out of date, and it may or may not include special assessments. Treat it as the listing's figure, not as a statement from the association.

A common use is a monthly carrying cost: mortgage payment plus property tax over twelve months plus the HOA fee. Combine it with taxAnnualAmount and price, and say that the result is an estimate built from listing data.

Recorded example

Recorded lookup of a home for sale
{
  "homeType": "CONDO",
  "monthlyHoaFee": 1001
}
Recorded lookup of a home for sale
{
  "homeType": "SINGLE_FAMILY",
  "monthlyHoaFee": 75
}
Recorded lookup of a home for sale
{
  "homeType": "SINGLE_FAMILY",
  "monthlyHoaFee": null
}

Values are copied from recorded lookups of public Zillow pages, with the other fields of data left out. They show the shape and typical values, not today's data for these homes.

When it is null

  • The listing doesn't show an HOA fee. That is common for single-family homes, for rentals and for homes that aren't listed.
  • Null means not shown. It doesn't prove the home has no HOA.

Read it in code

Send a Zillow link, a zpid or an address to GET /v1/zillow/property with your key in the x-api-key header, then read the field from data:

curl and jq
curl -sG "https://api.propertiesapi.com/v1/zillow/property" \
  -H "x-api-key: $PROPERTIESAPI_KEY" \
  --data-urlencode "url=https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/" \
  | jq '.data | {monthlyHoaFee}'
Python
import os
import requests

r = requests.get(
    "https://api.propertiesapi.com/v1/zillow/property",
    params={"url": "https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/"},
    headers={"x-api-key": os.environ["PROPERTIESAPI_KEY"]},
    timeout=120,
)
r.raise_for_status()
home = r.json()["data"]
hoa = home["monthlyHoaFee"]
print("HOA:", "not shown" if hoa is None else f"{hoa:,.0f} a month")
JavaScript (Node)
const url = "https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/";
const res = await fetch(
  `https://api.propertiesapi.com/v1/zillow/property?url=${encodeURIComponent(url)}`,
  { headers: { "x-api-key": process.env.PROPERTIESAPI_KEY } },
);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { data: home } = await res.json();
const hoa = home.monthlyHoaFee;
console.log("HOA:", hoa == null ? "not shown" : `${hoa} a month`);

Common mistakes

  • Reading null as zero dollars. Show it as unknown, or ask the user, before you add it to a total.
  • Treating the fee as yearly or quarterly. PropertiesAPI returns the monthly amount.
  • Assuming the fee covers the same things everywhere. What an HOA fee includes, such as water, heat or insurance, varies by building.

Zillow is a trademark of Zillow, Inc. PropertiesAPI is an independent service and is not affiliated with, endorsed by or sponsored by Zillow.

monthlyHoaFee questions

Is the HOA fee monthly?+

Yes. monthlyHoaFee is the fee for one month, as the listing shows it.

Why is monthlyHoaFee null for a condo?+

The listing didn't show a fee. Null means not shown, not that there is no association.

Does it include special assessments?+

Only if the listing included them in the fee it shows. The API returns one number and no breakdown.