> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.hellodata.ai/llms.txt.

# Get Property

GET https://api.hellodata.ai/property/{id}

Retrieve all the details of a property given its id.

- **ID changes**: it is rare, but can happen, to see the id of a property change. We consider it unlikely for bigger properties since they tend to have a more established "identity" among our data pipelines. For example, if multiples properties are merged into one, or major data changes make us change the id. In this case, you might receive a 404 error. The property search endpoint is free, so always feel free to query it in case that happens.
- **Payload usage**: this payload can be used to get the property details, the unit pricing, the expense benchmarks, and the rent comps. And you are free to cache it if you need to.
- **Date filtering**: You can optionally filter units, history, availability periods, and concessions by providing `from` and/or `to` date parameters. Only data that overlaps with the specified date range will be included. You can provide either date, both, or neither. This is particularly useful when you only need current or recent data, as it can significantly speed up API calls and reduce response payload size compared to retrieving the full historical dataset.

We make a few properties free to access to help with testing. These three properties are listed below but if you would like to use a different property to test with, we are happy to allow that for you.

| ID                                   | Building Name        | Address                                       |
|--------------------------------------|----------------------|-----------------------------------------------|
| e8769b06-1334-5ab6-b9c6-6dfccbf9ea78 | Reserve at Glenview  | 195 Waukegan Road, Glenview, IL 60025         |
| 20e4945a-ce78-5f2c-9053-6bdaca39044b | 7229-33 S Yates Blvd | 7229 South Yates Boulevard, Chicago, IL 60649 |
| 0e628031-57b8-5394-821d-13779318fef4 | OneEleven            | 111 West Wacker Drive, Chicago, IL 60601      |

Reference: https://docs.hellodata.ai/api-reference/api-reference/property/get-property

## Authentication

- `x-api-key` header (required) — API Key authentication via header
- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `id` (string, required) — The property id (UUIDv5 retrieved from the search endpoint).

### Query parameters

- `from` (string, optional) — Optional. Filter results to include only data that overlaps with dates on or after this date (ISO 8601 format, e.g., "2024-01-01").
- `to` (string, optional) — Optional. Filter results to include only data that overlaps with dates on or before this date (ISO 8601 format, e.g., "2024-12-31").
- `use_tmlp` (boolean, optional) — Optional. Adjusts the 'min_price', 'price', 'max_price', 'min_effective_price', 'effective_price', 'max_effective_price', 'price_plans' to be Total Monthly Leasing Price (TMLP) by adding in fees.
- `occupancy_over_time` (boolean, optional)

## Response

### 200

The property details.

- `id` (string, required) — The unique identifier of the property. It is a stringified UUIDv5. This value can occasionally change if multiple properties get merged into one.
- `building_name` (string, required, nullable) — The name of the building or property.
- `street_address` (string, required) — The primary street address of the property.
- `city` (string, required) — The city where the property is located.
- `state` (string, required) — The state where the property is located.
- `zip_code` (string, required) — The postal code for the property's location.
- `year_built` (double, required, nullable) — Year the property was originally built.
- `number_units` (double, required, nullable) — Total number of units in the property.
- `number_stories` (double, required, nullable) — Number of stories or levels in the property.
- `lat` (double, required) — Latitude coordinate of the property's location.
- `lon` (double, required) — Longitude coordinate of the property's location.
- `created_on` (string, required) — Date when the property details were last updated or created.
- `building_availability` (list of Availability, required) — The list of units and floorplans that have been listed for rent at the property since the start of the data collection.
- `building_quality` (BuildingQuality, required) — The quality scores for various aspects of the property, including both general areas and specific features.
- `street_address_alias` (list of string, required) — Alternate or commonly used names or aliases for the street address.
- `msa` (string, required, nullable) — Metropolitan Statistical Area the property belongs to, if applicable.
- `market_embedding` (list of double, required, nullable) — An array representing the market embedding vector, used for advanced analysis. If you want to compare two markets, you can use the cosine similarity between their market embeddings. Note: this vector is subject to change a couple of times a year as we improve our models.
- `building_name_alias` (list of string, required) — Alternative names or aliases for the building.
- `building_phone_number` (string, required, nullable) — Contact phone number for the building management or leasing office.
- `building_website` (string, required, nullable) — Website URL for the property or management company.
- `is_single_family` (boolean, required, nullable) — Indicates if the property is a single-family home.
- `is_condo` (boolean, required, nullable) — Indicates if the property consists of condominiums.
- `is_apartment` (boolean, required, nullable) — Indicates if the property is an apartment complex.
- `year_built_prediction` (string, required, nullable) — Predicted or estimated construction period or era based on listing images.
- `number_stories_prediction` (string, required, nullable) — Predicted or estimated range for the number of stories in the building based on facade images.
- `management_company` (string, required, nullable) — Name of the company managing the property.
- `pricing_strategy` (PricingStrategy, required) — Analysis of the property's pricing patterns and strategies.
- `cats_monthly_rent` (double, required, nullable) — Monthly rent charge for having cats.
- `cats_one_time_fee` (double, required, nullable) — One-time fee for having cats.
- `cats_deposit` (double, required, nullable) — Deposit required for having cats.
- `dogs_monthly_rent` (double, required, nullable) — Monthly rent charge for having dogs.
- `dogs_one_time_fee` (double, required, nullable) — One-time fee for having dogs.
- `dogs_deposit` (double, required, nullable) — Deposit required for having dogs.
- `admin_fee` (double, required, nullable) — Administrative fee charged by the property.
- `amenity_fee` (double, required, nullable) — Amenity fee charged by the property, if applicable.
- `application_fee` (double, required, nullable) — Application fee charged to apply for residency.
- `storage_fee` (double, required, nullable) — Fee for using storage facilities on the property.
- `parking_covered` (double, required, nullable) — Monthly charge for covered parking, if available.
- `parking_garage` (double, required, nullable) — Monthly charge for parking in a garage, if available.
- `parking_surface_lot` (double, required, nullable) — Monthly charge for parking in a surface lot, if available.
- `min_deposit` (double, required, nullable) — Minimum security deposit required.
- `max_deposit` (double, required, nullable) — Maximum security deposit required (may vary by unit).
- `building_amenities` (list of enum, required, nullable) — List of amenities available in the building.
  - Allowed values: `24_hour_maintenance`, `accepts_housing_voucher`, `ada_compliant`, `additional_storage_space_outside_unit`, `art_studio`, `attached_garage`, `basketball_court`, `bike_rack`, `bilingual`, `boat_dock`, `bocceball_court`, `business_center`, `cabana`, `carport`, `cats_allowed`, `club_house_party_room`, `barbecue_grill`, `community_chef_kitchen_space`, `community_dog_park`, `community_garden`, `community_pet_washing_station`, `community_room`, `community_wifi`, `computer_lab`, `controlled_access`, `corporate_suite`, `courtyard`, `daycare`, `detached_garage`, `disposal_chutes`, `dogs_allowed`, `doorman`, `electric_car_charging_station`, `elevator`, `fire_pit`, `fitness_center`, `concierge`, `foosball`, `game_room`, `gated_community_access`, `golf_simulator`, `green_community`, `guest_parking`, `guest_suite`, `historic_building`, `hot_tub`, `housekeeping_available`, `income_restricted`, `internet_lounge`, `landscaping`, `laundry_service`, `laundry_room`, `library`, `lobby`, `lounge`, `massage_room`, `multimedia_center`, `satisfaction_guaranteed`, `on_site_car_wash`, `on_site_maintenance`, `on_site_management`, `one_car_garage`, `online_payment_portal`, `organic_waste_composting`, `package_lockers`, `package_receiving`, `parking_garage`, `parking_included`, `pet_daycare_service`, `pets_allowed`, `pickleball_court`, `picnic_area`, `playground`, `pool_table`, `putting_green`, `racquetball_court`, `recycling`, `reserved_parking`, `resident_events`, `resident_referral_program`, `resident_rewards_program`, `rock_climbing_wall`, `rooftop_space`, `roommate_matching`, `sauna`, `secure_resident_parking`, `secured_covered_bike_storage`, `security_system`, `shared_office_space`, `short_term_lease_options`, `shuffle_board`, `non_smoking`, `snow_removal`, `soccer_field`, `spa`, `sport_court`, `sunroom`, `swimming_pool`, `table_tennis`, `tanning_beds`, `tennis_court`, `terrace`, `two_car_garage`, `valet_trash_service`, `volleyball_court`, `waterfront`, `workshop`, `yoga_studio`, `zen_garden`
- `unit_amenities` (list of enum, required, nullable) — List of amenities available in the units.
  - Allowed values: `air_conditioning`, `all_appliances_included`, `all_utilities_included`, `attic`, `backsplash`, `basement`, `bath_tub`, `bay_window`, `black_appliances`, `breakfast_bar`, `built_in_desk`, `carpet`, `ceiling_fan`, `central_air_conditioning`, `central_heat`, `city_view`, `concrete_floor`, `courtyard_view`, `crown_molding`, `custom_cabinets`, `deck`, `den`, `dining_room`, `dishwasher`, `double_sink_vanity`, `eat_in_kitchen`, `efficient_appliances`, `electricity_included`, `faux_wood_floor`, `fireplace`, `floor_to_ceiling_windows`, `french_doors`, `fully_upgraded`, `furnished`, `garbage_disposal`, `granite_countertops`, `hardwood_floor`, `heat_included`, `high_ceilings`, `in_wall_usb_ports`, `individual_locking_bedrooms`, `internet_included`, `kitchen_island`, `large_bedrooms`, `large_bathrooms`, `large_closets`, `large_windows`, `linoleum_floor`, `living_room`, `loft`, `marble_countertops`, `microwave`, `mountain_view`, `mud_room`, `nature_view`, `open_floor_plan`, `oven`, `pantry`, `patio_or_balcony`, `porch`, `private_bathroom`, `private_entrance`, `quartz_countertops`, `ranch_style`, `range`, `recently_renovated`, `refrigerator`, `sewer_included`, `skylight`, `smart_doorbell`, `smart_lighting`, `smart_locks`, `smart_thermostat`, `stainless_steel_appliances`, `stove`, `tile_floor`, `track_lighting`, `trash_compactor`, `trash_service_included`, `vaulted_ceilings`, `view`, `vinyl_floor`, `walk_in_closet`, `walk_in_shower`, `washer_dryer_hookups`, `washer_dryer_in_unit`, `water_included`, `water_view`, `white_appliances`, `window_ac_unit`, `window_covering`, `yard`
- `review_analysis` (ReviewAnalysis, optional, nullable) — Analysis of the property's public reviews over the past 24 months.
- `property_embedding` (list of double, optional, nullable) — An array representing the property embedding vector, used for advanced analysis. If you want to compare two properties, you can use the cosine similarity between their property embeddings. Note: this vector is subject to change a couple of times a year as we improve our models.
- `demographics` (PropertyDetailsResponseDemographics, optional) — &#x20;Subject to change in near future. The demographics for the property's location, if available.
- `census_tract_id` (string, optional, nullable) — The FIPS code of the property's location.
- `ami_limits` (PropertyDetailsResponseAmiLimits, optional) — AMI (Area Median Income) affordability limits by household size. The AMI Limits can be either 30%, 50%, 60%, 80%, or 120% Each of these percents has a price amount for 1 to 8 people denoted by the p suffix The 25 refers to the year 2025 Used to determine if a unit qualifies as affordable based on rent-to-income ratio.
- `is_student` (boolean, optional, nullable) — Indicates whether we have identified the property as a student housing complex. Detected based on the presence of certain amenities, unit naming conventions, price points, and other factors.
- `is_senior` (boolean, optional, nullable) — Indicates if the property is a senior living community.
- `is_build_to_rent` (boolean, optional, nullable) — Indicates if the property is a build-to-rent community.
- `is_affordable` (boolean, optional, nullable) — Indicates if the property contains affordable units. Uses the public database of LIHTC properties and the floorplan names from the property website + data from other public data sources.
- `number_units_prediction` (double, optional, nullable) — A prediction of the number of units based on images, number of floors, amenities, location, year built, and the number of units we have seen so far. NOTE: This is an approximation to understand the property's size when the exact number of units is not available, do not use it as a variable in your financial models.
- `concessions_history` (list of Concessions, optional) — Historical concession offers or promotions available at the property, along with extracted values from the text.
- `user_id` (string, optional, nullable) — When it's a custom property, this field will be populated with the user_id of the user who created the property.
- `street_view_url` (string, optional, nullable) — A URL to a custom street view image provided for the property. This field is only populated if the user has supplied their own street view image, overriding the default value.
- `is_lease_up` (boolean, optional, nullable) — Lease-up mode indicates that the building was recently built, and it is assumed that the developers are only showing a small number of their available units because they are still trying to fill their spaces. The function checks several conditions to determine if the building is in lease-up mode: 1. It verifies if the building was built recently (within the last two years). 2. It checks if the building has more than 10 units. 3. It counts the number of available units and tracks the earliest availability date. 4. It ensures that there have been at least 5 leases. 5. It checks if the earliest move-in date is within the last 18-months. 6. It calculates the percentage of units still being marketed and ensures it is at least 15%. If all these conditions are met, the building is considered to be in lease-up mode.
- `abnormal_lease_spikes` (list of AbnormalLeaseSpike, optional) — Abnormal lease spikes from portal/management transitions. Informational for the UI: the frontend shows warnings when a spike falls in the viewed period. Does not change lease counts.
- `occupancy_over_time` (list of OccupancyOverTime, optional, nullable) — DEPRECATED: This field will be removed in future versions.
- `fees` (list of AdditionalFee, optional, nullable) — All of the unstructured fees

## Errors

### 404 Not Found Error

- `message` (string, required)

## Types

### Availability

Describes the status and details of a unit or floorplan's availability, alongside various attributes like pricing and size. Contains historical availabilty and pricing data. In some rare cases, the availability object may represent a floorplan rather than a specific unit, when the listing advertises a generic floorplan.

- `id` (string, required) — Unique identifier for this unit.
- `is_floorplan` (boolean, required) — Flag indicating if the listing is for a generic floorplan rather than a specific unit. This happens when the listing advertises a generic floorplan rather than a specific unit.
- `bed` (double, required, nullable) — Number of bedrooms in the unit.
- `bath` (double, required, nullable) — Number of full bathrooms in the unit.
- `partial_bath` (double, required, nullable) — Number of half bathrooms in the unit.
- `sqft` (double, required, nullable) — The actual square footage of the unit.
- `floorplan_name` (string, required, nullable) — The name of the floorplan, if this entry represents a floorplan. Or the unit's floorplan name.
- `unit_name` (string, required, nullable) — The specific name or number of the unit, if applicable.
- `enter_market` (string, required, nullable) — The date the unit was first listed for rent. If null, the unit existed on 06-17-2023, when we first started collecting data, but we cannot say for certain on what day it first appeared.
- `exit_market` (string, required, nullable) — The last date the unit was listed for rent. If null, the unit is still active.
- `tags` (list of enum, required) — An array of tags that were predicted using floorplan images, floorplan names and unit amenities
  - Allowed values: `ada_unit`, `affordable.section_8`, `affordable.lihtc`, `balcony_patio`, `balcony_patio.enclosed`, `balcony_patio.large`, `balcony_patio.private`, `balcony_patio.small`, `balcony_patio.storage`, `corner_unit`, `den`, `dishwasher`, `double_occupancy`, `fireplace`, `floor`, `floor.penthouse`, `garage`, `garage.attached`, `garage.detached`, `garage.one_car`, `garage.two_car`, `kitchen_island`, `kitchen_island.large`, `renovated`, `renovated.fully`, `renovated.partially`, `renovated.recently`, `smarthome`, `stainless_steel_appliances`, `townhome`, `urban_1br`, `view`, `view.city`, `view.courtyard`, `view.direction`, `view.mountains`, `view.pool`, `view.water`, `view.woods`, `walk_in_closet`, `walk_in_closet.large`, `washer_dryer`, `washer_dryer.full_size`, `washer_dryer.stackable`, `washer_dryer_connections`
- `history` (list of Price, required) — The list of prices for the unit/floorplan over time.
- `availability_periods` (list of AvailabilityPeriod, required) — An array detailing the periods during which this unit was active. For price changes within each period, refer to the 'history' key.
- `floor` (double, required, nullable) — The floor number for the unit, derived from the patterns in the unit names among the building.
- `availability` (string, required, nullable) — Date when the unit will become or became available.
- `min_price` (double, required, nullable) — The lowest advertised rent for the unit or floorplan.
- `price` (double, required, nullable) — The asking rent for the unit or the lowest price in a range. Represents the latest asking rent we have seen for the unit. If you are looking for the asking rent over time, refer to the 'history' key.
- `max_price` (double, required, nullable) — The highest advertised rent for the unit or floorplan.
- `min_effective_price` (double, required, nullable) — The lowest effective rent after considering discounts or promotions.
- `effective_price` (double, required, nullable) — The effective rent after considering discounts or promotions. Represents the latest effective price we have seen for the unit. If you are looking for the effective price over time, refer to the 'history' key.
- `max_effective_price` (double, required, nullable) — The highest effective rent after considering discounts or promotions.
- `days_on_market` (double, required, nullable) — The number of days the unit has been on the market. exit_market - enter_market
- `min_sqft` (double, required, nullable) — The minimum square footage of the unit or floorplan.
- `max_sqft` (double, required, nullable) — The maximum square footage of the unit or floorplan.
- `created_on` (string, required) — The date when this record was last updated.
- `price_plans` (list of PricePlan, required) — The list of latest lease terms for the unit/floorplan
- `amenities` (list of string, required) — An array of non-normalized amenities strings direct from property websites
- `lease_term` (double, optional, nullable) — The lease term for the price and effective price
- `deposit` (double, optional, nullable) — The latest security deposit for this unit.
- `school_term` (string, optional, nullable) — Indicates the academic term in which this unit is offered.

### BuildingQuality

Defines the quality scores for various aspects of a property, including both general areas and specific features. Scores are based on the assessment of finishes, conditions, and amenities, derived from interior and exterior photo evaluations. Each score ranges from 0 to 1, where 0 indicates the lowest quality and 1 the highest.

- `property_overall_quality` (double, required, nullable) — The overall quality score of the property, reflecting an aggregate assessment of the entire property.
- `avg_quality_score_bedroom` (double, required, nullable) — The average quality score for all bedrooms, assessing finishes, condition, and amenities within these spaces.
- `avg_quality_score_kitchen` (double, required, nullable) — The average quality score for the kitchen, evaluating the finishes, appliances, and layout.
- `avg_quality_score_bathroom` (double, required, nullable) — The average quality score for all bathrooms, focusing on finishes, fixtures, and condition.
- `avg_quality_score_dining_room` (double, required, nullable) — The average quality score for the dining room, considering the space, finishes, and lighting.
- `avg_quality_score_common_areas` (double, required, nullable) — The average quality score for common areas, including lobbies, gardens, and other shared spaces.
- `avg_quality_score_fitness_center` (double, required, nullable) — The average quality score for the fitness center, assessing equipment quality, space, and maintenance.
- `avg_quality_score_laundry_room` (double, required, nullable) — The average quality score for the laundry room, focusing on the quality of machines and the maintenance of the space.
- `avg_quality_score_living_room` (double, required, nullable) — The average quality score for the living room, evaluating the comfort, finishes, and layout.
- `avg_quality_score_main_entrance` (double, required, nullable) — The average quality score for the main entrance, considering its appearance, security, and accessibility.
- `avg_quality_score_stairs_hallway` (double, required, nullable) — The average quality score for stairs and hallways, assessing the condition, lighting, and safety features.
- `avg_quality_score_swimming_pool` (double, required, nullable) — The average quality score for the swimming pool, if applicable, focusing on maintenance, size, and amenities.
- `avg_quality_score_walk_in_closet` (double, required, nullable) — The average quality score for walk-in closets, evaluating the size, organization options, and finishes.

### PricingStrategy

Describes the pricing strategy adopted by a property, detailing how prices have historically fluctuated based on market dynamics and property management decisions over the past 6 months. It encapsulates trends in price adjustments and time-related aspects of property marketing.

- `is_using_rev_management` (boolean, required, nullable) — Indicates whether revenue management tools are used to adjust pricing dynamically. Determined as a function of unit price volatility.
- `avg_duration` (double, required, nullable) — The average duration in days between price changes for the property.
- `avg_price_change` (double, required, nullable) — The average amount of price change when adjustments are made.
- `avg_time_on_market` (double, required, nullable) — The average time in days a unit remains on the market before being rented.
- `day_of_week_distribution` (list of double, required, nullable) — Distribution of price changes across days of the week, represented as the total changes on each day. The array is ordered Monday through Sunday (index 0 = Monday, index 1 = Tuesday, ..., index 6 = Sunday).
- `count_prices` (double, required, nullable) — The total number of price changes observed for the property. This equals the sum of all elements in `day_of_week_distribution`.

### ReviewAnalysis

The ReviewAnalysis object represents the average review scores for a property over the trailing 24 months. We also analyzed the reviews using Natural Language Processing to determine the most common pros and cons mentioned in the reviews.

- `avg_score` (double, required, nullable) — The average score for the property over the past 24 months.
- `count_reviews` (double, required, nullable) — The number of reviews used to calculate the average scores.
- `positive_counts` (Record_string.number_, required) — The number of times it was mentioned in reviews as a pro.
- `negative_counts` (Record_string.number_, required) — The number of times the category was mentioned in reviews as a con.

### PropertyDetailsResponseDemographics

&#x20;Subject to change in near future. The demographics for the property's location, if available.

### PropertyDetailsResponseAmiLimits

AMI (Area Median Income) affordability limits by household size. The AMI Limits can be either 30%, 50%, 60%, 80%, or 120% Each of these percents has a price amount for 1 to 8 people denoted by the p suffix The 25 refers to the year 2025 Used to determine if a unit qualifies as affordable based on rent-to-income ratio.

- `lim60_25p3` (double, required, nullable)
- `lim60_25p1` (double, required, nullable)
- `lim60_25p5` (double, required, nullable)
- `lim60_25p2` (double, required, nullable)
- `lim60_25p4` (double, required, nullable)
- `lim60_25p6` (double, required, nullable)
- `lim60_25p7` (double, required, nullable)
- `lim60_25p8` (double, required, nullable)
- `lim30_25p3` (double, required, nullable)
- `lim30_25p1` (double, required, nullable)
- `lim30_25p5` (double, required, nullable)
- `lim30_25p2` (double, required, nullable)
- `lim30_25p4` (double, required, nullable)
- `lim30_25p6` (double, required, nullable)
- `lim30_25p7` (double, required, nullable)
- `lim30_25p8` (double, required, nullable)
- `lim50_25p3` (double, required, nullable)
- `lim50_25p1` (double, required, nullable)
- `lim50_25p5` (double, required, nullable)
- `lim50_25p2` (double, required, nullable)
- `lim50_25p4` (double, required, nullable)
- `lim50_25p6` (double, required, nullable)
- `lim50_25p7` (double, required, nullable)
- `lim50_25p8` (double, required, nullable)
- `lim80_25p3` (double, required, nullable)
- `lim80_25p1` (double, required, nullable)
- `lim80_25p5` (double, required, nullable)
- `lim80_25p2` (double, required, nullable)
- `lim80_25p4` (double, required, nullable)
- `lim80_25p6` (double, required, nullable)
- `lim80_25p7` (double, required, nullable)
- `lim80_25p8` (double, required, nullable)
- `lim120_25p3` (double, required, nullable)
- `lim120_25p1` (double, required, nullable)
- `lim120_25p5` (double, required, nullable)
- `lim120_25p2` (double, required, nullable)
- `lim120_25p4` (double, required, nullable)
- `lim120_25p6` (double, required, nullable)
- `lim120_25p7` (double, required, nullable)
- `lim120_25p8` (double, required, nullable)

### Concessions

- `id` (string, required) — A unique identifer for this concession.
- `concessions` (string, required) — The text of the special being offered.
- `from_date` (string, required) — The start date from which the special offer was being marketed.
- `to_date` (string, required) — The end date when the special was no longer being marketed.
- `items` (list of ConcessionsItem, required)

### AbnormalLeaseSpike

A detected abnormal lease spike day, used for UI informational flags.

- `spike_date` (string, required) — Peak spike day.
- `flagged_unit_ids` (list of string, required) — Units associated with the spike on spike_date (context for spike detection).

### OccupancyOverTime

- `as_of` (string, required) — The date that the occupancy was recorded
- `leased` (double, required) — Leased represents the percentage of vacant units to total units. For stabilized assets, vacant units are defined as those available for move-in within the next 7 days.
- `exposure` (double, required) — Exposure represents the percentage of units in a building currently listed as available for move-in within the next 6 months. This includes units that are either already vacant or not being renewed, divided by the total number of units in the building.

### AdditionalFee

Represents an additional fee that does not fit into a predefined category.

- `label` (string, required) — A human-readable label describing the fee (e.g., "Service Charge", "Processing Fee").
- `amount` (double, required) — The monetary value of the fee.
- `frequency` (string, required) — How often the fee is paid (once, month, year).

### Price

Price object contains the pricing information for a unit in a given slice of time. **Price Range vs. Specific Price:** - When `min_price`/`max_price` are available but `price` is null, they represent communicated price ranges (e.g., floorplan advertising with varying unit prices). This is common when properties advertise a range like "$1,200-$1,800" rather than a specific unit price. - When `price` and `effective_price` are available, they represent the advertised price and effective price (price after specials applied) for a specific unit. In summary: price ranges (`min_price`/`max_price`) are used when advertising multiple units with different prices, while specific prices (`price`/`effective_price`) are used when advertising a single unit at a fixed price.

- `from_date` (string, required) — The start date for this price (inclusive).
- `to_date` (string, required) — The end date for this price (inclusive).
- `price` (double, required, nullable) — The market rent of the unit or the min_price when a unit is marketing a price range. The min_price is typically the cheapest lease term. **Note:** This may be null when the property is advertising a price range (see `min_price`/`max_price` in the `Price` interface). When `price` is null, `min_price` and `max_price` represent the communicated price range for floorplans or multiple units with varying prices. When `price` and `effective_price` are available, they represent the advertised price and effective price (price after specials applied) for a specific unit.
- `effective_price` (double, required, nullable) — The effective price of the unit, considering discounts or promotions.
- `period_id` (double, required) — Links a price to the active market period of a unit. Use with 'availability_periods' key.
- `min_price` (double, required, nullable) — The minimum market rent of the unit, if applicable. Often filled for floorplans. When `price` is null, this represents the lower bound of a communicated price range.
- `max_price` (double, required, nullable) — The maximum market rent of the unit, if applicable. Often filled for floorplans. When `price` is null, this represents the upper bound of a communicated price range.
- `min_effective_price` (double, required, nullable) — The minimum effective price of the unit, considering discounts or promotions, if applicable. Filled if min_price exists.
- `max_effective_price` (double, required, nullable) — The maximum effective price of the unit, considering discounts or promotions, if applicable. Filled if max_price exists.
- `lease_term` (double, optional, nullable) — The lease term for the price and effective price
- `price_plans` (list of list of double, optional) — A sorted list of terms with the following: [duration_in_months, price, effective_price]

### AvailabilityPeriod

- `period_id` (double, required) — Unique id for this units period. Can be used with the period_id in 'history' key.
- `enter_market` (string, required, nullable) — The date the unit was first listed for rent. If null, the unit existed on 06-17-2023, when we first started collecting data but we cannot say for certain on what day it first appeared.
- `exit_market` (string, required, nullable) — The last date the unit was listed for rent. If null, the unit is still active.
- `days_on_market` (double, required, nullable) — The number of days the unit has been on the market. exit_market - enter_market
- `availability` (string, required, nullable) — Date when the unit will become or became available.
- `deposit` (double, optional, nullable) — The security deposit of this unit during this period.
- `unavailable_periods` (list of UnavailablePeriod, optional)
- `price_plans` (list of PricePlan, optional, deprecated) — (Deprecated) The list of latest lease terms for the unit/floorplan's availability period. Use unit.history instead.

### PricePlan

Defines the latest lease terms available for this unit.

- `duration_in_months` (double, required) — Length of the lease agreement in months.
- `specials` (string, required, nullable) — Describes any promotional offers or discounts applicable to the lease.
- `price` (double, optional) — The asking rent for the unit with the specified term duration.
- `effective_price` (double, optional) — The effective rent for the unit with the specified term duration.
- `monthly_rent` (double, optional, deprecated) — (Deprecated) The asking rent for the unit with the specified term duration. Use price instead.

### Record_string.number_

Construct a type with a set of properties K of type T

### ConcessionsItem

One concession can contain a lot of information. We break it out depending on condition qualifiers.

- `condition_lease_term_months` (list of double, required) — Lease term conditions in months.
- `condition_deadline` (string, required, nullable) — Deadline condition for the concession, formatted as a string.
- `condition_bedrooms` (list of double, required) — Bedroom conditions for the concession.
- `condition_unit_names` (list of string, required) — Unit name conditions for the concession.
- `condition_floorplans` (list of string, required) — Floorplan conditions for the concession.
- `free_weeks_count` (double, required, nullable) — Number of free weeks offered. Distinct from free_months_count because 1 year is 52 weeks, so we use 1 month = 4.33 weeks for NER computations.
- `free_months_count` (double, required, nullable) — Number of free months offered.
- `free_months_until` (string, required, nullable) — The deadline until which free months are offered, formatted as a string.
- `one_time_dollars_off_amount` (double, required, nullable) — One-time dollar amount off the rent.
- `one_time_dollars_off_percentage` (double, required, nullable) — One-time percentage off the rent.
- `recurring_dollars_off_amount` (double, required, nullable) — Recurring dollar amount off the rent.
- `recurring_dollars_off_percentage` (double, required, nullable) — Recurring percentage off the rent.
- `waived_application_fee` (boolean, required, nullable) — Indicates if the application fee is waived.
- `waived_security_deposit` (boolean, required, nullable) — Indicates if the security deposit is waived.
- `waived_administrative_fee` (boolean, required, nullable) — Indicates if the administrative fee is waived.
- `waived_move_in_fee` (boolean, required, nullable) — Indicates if the move-in fee is waived.
- `cheaper_security_deposit` (boolean, required, nullable) — Indicates if a cheaper security deposit is available.
- `cheaper_administrative_fee` (boolean, required, nullable) — Indicates if a cheaper administrative fee is available.
- `cheaper_application_fee` (boolean, required, nullable) — Indicates if a cheaper application fee is available.
- `cheaper_move_in_fee` (boolean, required, nullable) — Indicates if a cheaper move-in fee is available.
- `cheaper_rent` (boolean, required, nullable) — Indicates if cheaper rent is available.
- `condition_specific_unit` (boolean, required, nullable) — Indicates if the concession is specific to certain units but doesn't say which.
- `special_included` (boolean, required, nullable) — Indicates if the concession was already included in asking price. For example for: "1 month free. Special included in advertisement"

### UnavailablePeriod

Represents a time period during which a unit was temporarily unavailable for marketing, despite being otherwise available. This can occur for various reasons, such as maintenance, pricing adjustments, or administrative updates.

- `from_date` (string, required) — The start date when the unit was taken off the market and became unavailable for display.
- `to_date` (string, required) — The end date when the unit became available for marketing again.

## Examples

**Response**

```json
{
  "id": "52907745-7672-470e-a803-a2f8feb52944",
  "building_name": "OneEleven",
  "street_address": "111 West Wacker Drive",
  "city": "Chicago",
  "state": "IL",
  "zip_code": "60601",
  "year_built": 2014,
  "number_units": 505,
  "number_stories": 60,
  "lat": 41.88651,
  "lon": -87.63141,
  "created_on": "2024-02-13",
  "building_availability": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "is_floorplan": true,
      "bed": 2,
      "bath": 2,
      "partial_bath": 1,
      "sqft": 850,
      "floorplan_name": "2B2B",
      "unit_name": "203",
      "enter_market": "2023-12-01",
      "exit_market": "2024-01-15",
      "tags": [
        "ada_unit"
      ],
      "history": [
        {
          "from_date": "2024-01-01",
          "to_date": "2024-03-31",
          "price": 1500,
          "effective_price": 1450,
          "period_id": 0,
          "min_price": 1200,
          "max_price": 1800,
          "min_effective_price": 1150,
          "max_effective_price": 1750,
          "lease_term": 13,
          "price_plans": [
            [
              12,
              1800,
              1750
            ],
            [
              11,
              1810,
              1750
            ]
          ]
        }
      ],
      "availability_periods": [
        {
          "period_id": 0,
          "enter_market": "2023-12-01",
          "exit_market": "2024-01-15",
          "days_on_market": 45,
          "availability": "2024-01-01",
          "deposit": 1.1,
          "unavailable_periods": [
            {
              "from_date": "2023-12-01",
              "to_date": "2024-01-14"
            }
          ],
          "price_plans": [
            {
              "duration_in_months": 12,
              "specials": "Special incentives available at OneEleven! Enjoy up to a half month free on select apartments.",
              "price": 1500,
              "effective_price": 1450,
              "monthly_rent": 1500
            }
          ]
        }
      ],
      "floor": 5,
      "availability": "2024-01-01",
      "min_price": 1200,
      "price": 1500,
      "max_price": 1800,
      "min_effective_price": 1150,
      "effective_price": 1450,
      "max_effective_price": 1750,
      "days_on_market": 45,
      "min_sqft": 800,
      "max_sqft": 900,
      "created_on": "2023-11-01",
      "price_plans": [
        {
          "duration_in_months": 12,
          "specials": "Special incentives available at OneEleven! Enjoy up to a half month free on select apartments.",
          "price": 1500,
          "effective_price": 1450,
          "monthly_rent": 1500
        }
      ],
      "amenities": [
        "string"
      ],
      "lease_term": 13,
      "deposit": 1.1,
      "school_term": "string"
    }
  ],
  "building_quality": {
    "property_overall_quality": 0.85,
    "avg_quality_score_bedroom": 0.82,
    "avg_quality_score_kitchen": 0.87,
    "avg_quality_score_bathroom": 0.81,
    "avg_quality_score_dining_room": 0.8,
    "avg_quality_score_common_areas": 0.83,
    "avg_quality_score_fitness_center": 0.78,
    "avg_quality_score_laundry_room": 0.75,
    "avg_quality_score_living_room": 0.84,
    "avg_quality_score_main_entrance": 0.86,
    "avg_quality_score_stairs_hallway": 0.79,
    "avg_quality_score_swimming_pool": 0.88,
    "avg_quality_score_walk_in_closet": 0.8
  },
  "street_address_alias": [
    "111 West Wacker",
    "111 West Wacker Drive"
  ],
  "msa": "Chicago-Naperville-Elgin, IL-IN-WI",
  "market_embedding": [
    1.1
  ],
  "building_name_alias": [
    "string"
  ],
  "building_phone_number": "7087250291",
  "building_website": "https://www.oneelevenchicago.com/",
  "is_single_family": false,
  "is_condo": false,
  "is_apartment": true,
  "year_built_prediction": "2020+",
  "number_stories_prediction": "11+",
  "management_company": "The Bozzuto Group",
  "pricing_strategy": {
    "is_using_rev_management": true,
    "avg_duration": 30,
    "avg_price_change": 100,
    "avg_time_on_market": 30,
    "day_of_week_distribution": [
      1.1
    ],
    "count_prices": 1.1
  },
  "cats_monthly_rent": 50,
  "cats_one_time_fee": 50,
  "cats_deposit": 50,
  "dogs_monthly_rent": 50,
  "dogs_one_time_fee": 50,
  "dogs_deposit": 50,
  "admin_fee": 600,
  "amenity_fee": 0,
  "application_fee": 65,
  "storage_fee": 50,
  "parking_covered": 300,
  "parking_garage": 319,
  "parking_surface_lot": 100,
  "min_deposit": 2248,
  "max_deposit": 2248,
  "building_amenities": [
    "24_hour_maintenance"
  ],
  "unit_amenities": [
    "air_conditioning"
  ],
  "review_analysis": {
    "avg_score": 1.1,
    "count_reviews": 1.1,
    "positive_counts": {},
    "negative_counts": {}
  },
  "property_embedding": [
    1.1
  ],
  "demographics": {},
  "census_tract_id": "11001007301",
  "ami_limits": {
    "lim60_25p3": 1.1,
    "lim60_25p1": 1.1,
    "lim60_25p5": 1.1,
    "lim60_25p2": 1.1,
    "lim60_25p4": 1.1,
    "lim60_25p6": 1.1,
    "lim60_25p7": 1.1,
    "lim60_25p8": 1.1,
    "lim30_25p3": 1.1,
    "lim30_25p1": 1.1,
    "lim30_25p5": 1.1,
    "lim30_25p2": 1.1,
    "lim30_25p4": 1.1,
    "lim30_25p6": 1.1,
    "lim30_25p7": 1.1,
    "lim30_25p8": 1.1,
    "lim50_25p3": 1.1,
    "lim50_25p1": 1.1,
    "lim50_25p5": 1.1,
    "lim50_25p2": 1.1,
    "lim50_25p4": 1.1,
    "lim50_25p6": 1.1,
    "lim50_25p7": 1.1,
    "lim50_25p8": 1.1,
    "lim80_25p3": 1.1,
    "lim80_25p1": 1.1,
    "lim80_25p5": 1.1,
    "lim80_25p2": 1.1,
    "lim80_25p4": 1.1,
    "lim80_25p6": 1.1,
    "lim80_25p7": 1.1,
    "lim80_25p8": 1.1,
    "lim120_25p3": 1.1,
    "lim120_25p1": 1.1,
    "lim120_25p5": 1.1,
    "lim120_25p2": 1.1,
    "lim120_25p4": 1.1,
    "lim120_25p6": 1.1,
    "lim120_25p7": 1.1,
    "lim120_25p8": 1.1
  },
  "is_student": false,
  "is_senior": false,
  "is_build_to_rent": false,
  "is_affordable": false,
  "number_units_prediction": 460,
  "concessions_history": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "concessions": "1 month free on 12 month lease if you move in by 12/31/2021",
      "from_date": "2023-12-01",
      "to_date": "2024-01-14",
      "items": [
        {
          "condition_lease_term_months": [
            12,
            13,
            14
          ],
          "condition_deadline": "2023-12-31",
          "condition_bedrooms": [
            1,
            2,
            3
          ],
          "condition_unit_names": [
            "0115",
            "0215"
          ],
          "condition_floorplans": [
            "Floorplan 1",
            "Floorplan 2"
          ],
          "free_weeks_count": 3,
          "free_months_count": 2,
          "free_months_until": "2023-12-31",
          "one_time_dollars_off_amount": 500,
          "one_time_dollars_off_percentage": 10,
          "recurring_dollars_off_amount": 50,
          "recurring_dollars_off_percentage": 5,
          "waived_application_fee": true,
          "waived_security_deposit": true,
          "waived_administrative_fee": true,
          "waived_move_in_fee": true,
          "cheaper_security_deposit": true,
          "cheaper_administrative_fee": true,
          "cheaper_application_fee": true,
          "cheaper_move_in_fee": true,
          "cheaper_rent": true,
          "condition_specific_unit": true,
          "special_included": true
        }
      ]
    }
  ],
  "user_id": "string",
  "street_view_url": "https://example.com/custom_street_view.jpg",
  "is_lease_up": false,
  "abnormal_lease_spikes": [
    {
      "spike_date": "2025-01-15",
      "flagged_unit_ids": [
        "0e628031-57b8-5394-821d-13779318fef4"
      ]
    }
  ],
  "occupancy_over_time": [
    {
      "as_of": "2021-01-01",
      "leased": 1.1,
      "exposure": 1.1
    }
  ],
  "fees": [
    {
      "label": "string",
      "amount": 1.1,
      "frequency": "string"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.hellodata.ai/property/0e628031-57b8-5394-821d-13779318fef4"

headers = {"x-api-key": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.hellodata.ai/property/0e628031-57b8-5394-821d-13779318fef4';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.hellodata.ai/property/0e628031-57b8-5394-821d-13779318fef4"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.hellodata.ai/property/0e628031-57b8-5394-821d-13779318fef4")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.hellodata.ai/property/0e628031-57b8-5394-821d-13779318fef4")
  .header("x-api-key", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.hellodata.ai/property/0e628031-57b8-5394-821d-13779318fef4', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.hellodata.ai/property/0e628031-57b8-5394-821d-13779318fef4");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["x-api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.hellodata.ai/property/0e628031-57b8-5394-821d-13779318fef4")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```