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

# Address lookup

> Look up properties by a street address.

The address is geocoded, then matched against parcel geometry. A `404` means the address could not be geocoded; a `200` with an empty array means the address could not be matched to a property.

## Properties without a boundary

PropertyLayer does not hold a boundary for every address. Where the address resolves to a property but no boundary covers it, the property is still returned, with `geom`, `bpd_uuid`, `latitude` and `longitude` all null. Everything the county recorded comes back as usual: owner, valuation, taxes, sale history.

> [!NOTE]
>
> Guard reads of `geom` and `bpd_uuid` on this endpoint rather than assuming both are present. `bpd_uuid` is the key for [Query](/api-reference/query) and building footprints, so a property returned this way cannot be looked up again by ID.

This only ever applies to a single, unambiguous match. If the address does not identify exactly one property, the response is empty rather than a nearby property.

## Condominiums and other multi-unit parcels

A condominium is one parcel boundary and many assessor records: the building's master parcel, plus one record per unit carrying that unit's owner, valuation, taxes and sale history. The units have no boundary of their own, so a lookup on the building's address returns the master parcel, with `unit_records_count` set to the number of unit records filed at that address. Counties often file the master as a placeholder ("REFERENCE ONLY" in Miami-Dade) with every value zero.

* **Address with a unit** (`4747 Collins Ave Apt 701, Miami Beach, FL 33140`, or `#701`): the response is that unit's record alone, served on the building's boundary. `geom`, `bpd_stack_uuid`, latitude and longitude are the building's; `bpd_uuid` is null because the unit has no boundary identity of its own.
* **Address without a unit**: the master parcel, with `unit_records_count`. Add `include_units=true` to also receive the unit records, after the master and in parcel id order, up to 500 per request; page with `units_offset`.

```bash theme={null}
curl "https://api.propertylayer.com/properties/address?address=4747+Collins+Ave,+Miami+Beach,+FL+33140&include_units=true" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

Every property in the response is metered, so a building with 260 units costs 261 properties with `include_units=true` and one without.

## Enrichments

Every property carries the county tax assessor record as top-level sections: `ownership`, `situs_address`, `valuation_current`, `transfers`, `buildings`, `taxes` and more. No flag required. See [Data fields](/guides/data-fields).

Set `include_buildings=true` to also attach ORNL footprint geometry as `building_footprints`.

```bash theme={null}
curl "https://api.propertylayer.com/properties/address?address=1600+Pennsylvania+Ave+NW,+Washington,+DC" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

`building_footprints` is omitted unless `include_buildings=true`. It has nothing to do with `buildings`, which is the assessor's per-structure detail.

## Response

Every endpoint returns the same object. The [Property model](/api-reference/property-model) has the full field reference: tax assessor sections, parcel geometry, and enrichments.


## OpenAPI

````yaml GET /properties/address
openapi: 3.1.0
info:
  title: PropertyLayer API
  description: >-
    Access nationwide property data — parcel boundaries, tax assessor records,
    and building footprints — by geographic polygon, point, or address.
  version: 1.0.0
servers:
  - url: https://api.propertylayer.com
    description: Production
security: []
paths:
  /properties/address:
    get:
      tags:
        - properties
      summary: Get Property By Address
      description: >-
        Geocode an address, then return matching properties.


        A unit number in the address (`Apt 701`, `#701`) selects that unit's
        assessor

        record. Without one, a multi-unit parcel reports `unit_records_count`
        and,

        with `include_units=true`, is followed by its units.
      operationId: get_property_by_address_properties_address_get
      parameters:
        - name: address
          in: query
          required: true
          schema:
            type: string
            description: Full address (e.g. '123 Main St, Springfield, IL 62701')
            title: Address
          description: Full address (e.g. '123 Main St, Springfield, IL 62701')
        - name: include_buildings
          in: query
          required: false
          schema:
            type: boolean
            description: Include building footprints for each property
            default: false
            title: Include Buildings
          description: Include building footprints for each property
        - name: include_units
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              For a condominium or other multi-unit parcel, also return the
              unit-level assessor records filed at the address, after the parcel
              itself. Up to 500 per request; see units_offset. Each unit
              returned is metered as a property.
            default: false
            title: Include Units
          description: >-
            For a condominium or other multi-unit parcel, also return the
            unit-level assessor records filed at the address, after the parcel
            itself. Up to 500 per request; see units_offset. Each unit returned
            is metered as a property.
        - name: units_offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            description: Skip this many units when include_units is set
            default: 0
            title: Units Offset
          description: Skip this many units when include_units is set
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                description: >-
                  A Property object. See the Property model for the full
                  response shape — tax assessor sections, parcel geometry, and
                  enrichment fields.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                type: object
                description: >-
                  A Property object. See the Property model for the full
                  response shape — tax assessor sections, parcel geometry, and
                  enrichment fields.
      security:
        - HTTPBearer: []
components:
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

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