> ## Documentation Index
> Fetch the complete documentation index at: https://docs.quoindata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Multifamily properties

> Find apartment properties by address or owner and read each one's full profile: units, rents, loans, owners and more.

Multifamily endpoints cover apartment properties. Each property is one profile that gathers its facts, buildings, unit mix, rents, loans, owners, tax accounts and parcels. These endpoints need a **Multifamily** API key; create one in the portal under **API keys**. Property records keys do not work here.

## Find a property

Search by address or property name:

```bash theme={null}
curl -G "https://developer.quoindata.com/api/v4/multifamily/search" \
  -H "Authorization: Bearer $QUOIN_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  --data-urlencode "q=123 Main St"
```

Or by owner, operator or contact name with `by=owner`. A name matches when it contains every word you type. When the words narrow to five names or fewer, the search also follows each name's mailing addresses one step, to properties whose owner record uses the same address. Each result's `connection` says why it is listed.

```bash theme={null}
curl -G "https://developer.quoindata.com/api/v4/multifamily/search" \
  -H "Authorization: Bearer $QUOIN_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  --data-urlencode "q=Acme Realty" \
  --data-urlencode "by=owner"
```

Results are the best matches, ranked, in `data.items`. Set `limit` up to 100 for address searches and up to 500 for owner searches, so one owner search can list a whole portfolio. Search is not paged: if you get exactly `limit` results there may be more, so narrow the query or add `state`. Read full profiles one property at a time.

## Read the profile

Pass a result's `property_id`:

```bash theme={null}
curl "https://developer.quoindata.com/api/v4/multifamily/a7be1205-9cb8-48bc-b98c-ad040367f6bc" \
  -H "Authorization: Bearer $QUOIN_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
```

`data` is the property:

| Field | Contents |
| - | - |
| `facts` | Property-level values: name, address, units, year built, class, rents by bedroom, vacancy, owners, management, sale and loan details, flood zone, transit |
| `addresses`, `buildings`, `parcels`, `tax_accounts` | Every address, building, parcel and tax account that belongs to the property |
| `unit_mix` | Units, size and asking rent by bedroom count |
| `loans` | Recorded and agency loan observations |
| `owners` | Named owners and operators with their roles and mailing addresses |
| `rentals` | Rental listing observations: amenities, photos, a bedroom summary and one row per listing |
| `calculated_fields` | How derived values were calculated |
| `connected_properties` | Properties that share an owner, mailing address or street address, and why |

## Things to know

* **Null means no value is held.** A field can be `null` or absent; treat both as not reported, never as zero.
* **Inferred values are marked.** An owner or operator that was inferred, rather than stated by a source, ends with " (inferred)". Check with `value.endsWith(" (inferred)")`.
* **Personal data is for business use.** Owner and contact names, mailing addresses and phone numbers come from public records. Use them only for business purposes, follow telemarketing and do-not-call rules, and don't use them for consumer marketing.
* **Fields are only added.** Within v4, multifamily fields may be added but are never renamed or removed.
* **Billing.** Searches with matches and profile reads are billable. Empty searches, unknown ids and errors are free.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.