Skip to main content

1. Resolve the parcel

From a point, which is what a search box gives you:
Or from an APN on a seller record:
Either way you get a property_id. For a point inside coverage with no parcel within 100 m, the API answers a 404. For a point outside every loaded market, the API answers 422 outside_coverage. The two are different answers.

2. Read the parcel

The answer always includes the parcel facts: segment, beds, baths, square feet, year built and pool. It also includes the owner facts that do not identify the owner: owner-occupied or absentee, a trust, how long held, and rental-registered. Inside a loaded city, it also includes the short_term_rental block.

When the owner is named

The answer includes the owner’s name and mailing address in two cases:
  1. The parcel is a confirmed holding of a registry investor.
  2. The city registered the current owner as the operator of a short-term rental business there, by a date or a name. Then business_use is true with attribution_basis PURCHASE_DATE, OWNER_NAME or LICENCE_START. PURCHASE_DATE is a licence applied for or issued after the purchase. OWNER_NAME is a name on the record that keys to the owner. LICENCE_START is a purchase before the city’s licence regime began.
You get names: null with redacted_reason: "not_an_investor_hold" for an ordinary household, for a prior owner’s permit, and for an owner-occupied home with a casita permit. You also get it for a licence attributed only by assumption (ASSUMED).
This is deliberate. The API finds investors and city-registered rental businesses. It is not a people-search tool.
Even in those two cases this host does not serve the fields. They come back null with contact_redacted: true. A null redacted_reason marks an owner the API names where it serves contact data. A non-null reason marks one it does not. See Authentication.