Greystar API endpoint
Retrieves a public Greystar community profile by its numeric property id: location, description, amenities, office hours, walk scores, tours, floor plans, published fees, and currently available units with starting prices and available dates. Get ids from /greystar/search.
/greystar/properties/{id}MCP tool: greystar_property
id (path, required): numeric Greystar property id, for example 10124. Take it from a /greystar/search result or from the p_<id> segment of a greystar.com property URL. Non-numeric ids return 400.Returns the public community profile: location (address, coordinates, market area, neighborhood), descriptions, highlights, amenities, features, public phone and email, office_hours, walk/bike/transit scores, 3D tours, floorplans, published fees, and available_units with starting prices, available dates, and lease terms. Placeholder text such as "Information coming soon!" is dropped, so lists can be empty. Prices are null when none is published. An unknown or unpublished id returns 404; an upstream failure or malformed response returns an upstream error.
| Field | Filled in, of 38 checked | Values in the sample |
|---|---|---|
| label | 38 | “Parking - Garage” and 37 other values |
| category | 38 | administrative (21), services (11), pets (4) and 1 more |
| group | 38 | “parking” and 8 other values |
| type | 38 | “parking_other” and 22 other values |
| frequency | 38 | monthly (16), per_occurrence (16), one_time (5) and 1 more |
| value_type | 38 | amount (17), text (12), range (5) and 1 more |
| amount | 17 | 3 to 500, median 45 |
| min_amount | 5 | 6.95 to 45, median 20 |
| max_amount | 5 | 10.95 to 100, median 75 |
| percentage_amount | 4 | 9.99 to 200, median 85 |
| disclaimer | 15 | “Price varies based on number of items.” and 8 other values |
| is_required | 38 | true in 13 of 38 |
| is_refundable | 38 | true in 2 of 38 |
| is_included | 38 | true in 0 of 38 |
| is_taxable | 38 | true in 0 of 38 |
| is_per_applicant | 38 | true in 1 of 38 |
| text_amount | 12 | Varies (8), Usage-Based (Utilities) (4) |
| due_at | 6 | move_in (4), application (2) |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Numeric Greystar property id, e.g. 10124 | 10124 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/greystar/properties/10124" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "10124",
"name": "The Beverly at Shadow Lake",
"url": "https://www.greystar.com/the-beverly-at-shadow-lake-houston-tx/p_10124",
"location": {
"address": "2920 Shadowbriar Dr",
"city": "Houston",
"state": "TX",
"state_name": "Texas",
"postal_code": "77082",
"country_code": "US",
"latitude": 29.73,
"longitude": -95.6,
"market_area": "Greater Houston",
"neighborhood": "Westchase",
"slug": "the-beverly-at-shadow-lake-houston-tx"
},
"building_type": "Garden",
"amenities": [],
"features": [],
"phone": "(832) 843-2814",
"walk_score": 62,
"required_monthly_fees_min": 48,
"required_monthly_fees_max": 48,
"floorplans": [
{
"id": "645750",
"label": "B2B",
"bedrooms": 2,
"bathrooms": 2
}
],
"fees": [],
"available_units": [
{
"unit_id": "7760689",
"unit_number": "1-1137",
"area": 1175,
"available_on": "2026-09-25",
"floorplan_label": "B2B",
"min_price": 1500,
"max_price": 1500,
"min_base_rent_lease_term": 12
}
],
"tours": []
}
}Request schema
No body schema
Response schema
#/definitions/greystar.PropertyDetails
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| amenities | array | No | ||||
| available_units | array | No | ||||
| available_units[].area | integer | No | ||||
| available_units[].available_on | string | No | ||||
| available_units[].building | string | No | ||||
| available_units[].floor | string | No | ||||
| available_units[].floorplan_id | string | No | ||||
| available_units[].floorplan_label | string | No | ||||
| available_units[].max_price | number | No | ||||
| available_units[].min_base_rent_lease_term | integer | No | ||||
| available_units[].min_price | number | No | ||||
| available_units[].unit_id | string | No | ||||
| available_units[].unit_number | string | No | ||||
| bike_score | integer | No | ||||
| building_type | string | No | ||||
| string | No | |||||
| facebook_url | string | No | ||||
| features | array | No | ||||
| fees | array | No | ||||
| fees[].amount | number | No | ||||
| fees[].category | string | No | ||||
| fees[].disclaimer | string | No | ||||
| fees[].due_at | string | No | ||||
| fees[].frequency | string | No | ||||
| fees[].group | string | No | ||||
| fees[].is_included | boolean | No | ||||
| fees[].is_per_applicant | boolean | No | ||||
| fees[].is_refundable | boolean | No | ||||
| fees[].is_required | boolean | No | ||||
| fees[].is_taxable | boolean | No | ||||
| fees[].label | string | No | ||||
| fees[].max_amount | number | No | ||||
| fees[].min_amount | number | No | ||||
| fees[].percentage_amount | number | No | ||||
| fees[].text_amount | string | No | ||||
| fees[].type | string | No | ||||
| fees[].value_type | string | No | ||||
| floorplans | array | No | ||||
| floorplans[].bathrooms | integer | No | ||||
| floorplans[].bedrooms | integer | No | ||||
| floorplans[].id | string | No | ||||
| floorplans[].image_url | string | No | ||||
| floorplans[].label | string | No | ||||
| highlights | object | No | ||||
| id | string | No | ||||
| image | greystar.Image | No | ||||
| image.alt | string | No | ||||
| image.height | integer | No | ||||
| image.url | string | No | ||||
| image.width | integer | No | ||||
| instagram_url | string | No | ||||
| location | greystar.Location | No | ||||
| location.address | string | No | ||||
| location.city | string | No | ||||
| location.country_code | string | No | ||||
| location.latitude | number | No | ||||
| location.longitude | number | No | ||||
| location.market_area | string | No | ||||
| location.neighborhood | string | No | ||||
| location.postal_code | string | No | ||||
| location.slug | string | No | ||||
| location.state | string | No | ||||
| location.state_name | string | No | ||||
| long_description | string | No | ||||
| name | string | No | ||||
| office_hours | object | No | ||||
| phone | string | No | ||||
| required_monthly_fees_max | number | No | ||||
| required_monthly_fees_min | number | No | ||||
| short_description | string | No | ||||
| tours | array | No | ||||
| tours[].provider | string | No | ||||
| tours[].title | string | No | ||||
| tours[].url | string | No | ||||
| transit_score | integer | No | ||||
| url | string | No | ||||
| walk_score | integer | No | ||||
| website_url | string | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/greystar/properties/10124" \
-H "x-api-key: $CRAWLORA_API_KEY"