Skip to main content
search_listings searches apartment listings through BrightPlace’s search stack using strict-match mode.

When to use it

Use search_listings when a renter asks for apartments matching objective criteria such as price, location, bedrooms, bathrooms, amenities, or move-in timing. Do not use it for protected-class or demographic steering requests. Those requests return FAIR_HOUSING_VIOLATION.

Input

{
  "query": "rooftop pool near transit",
  "filters": {
    "locations": [{ "city": "brooklyn", "state": "ny" }],
    "beds": 1,
    "baths": 1,
    "minPrice": 2500,
    "maxPrice": 4500
  },
  "limit": 20
}
FieldTypeRequiredNotes
querystringNoSemantic search text. Empty strings are treated as omitted.
filters.locationsarrayNoCity/state filters. Use lowercase city and two-letter state.
filters.bedsnumberNoExact bedroom count.
filters.bathsnumberNoMinimum bathroom count.
filters.minPricenumberNoMinimum monthly rent.
filters.maxPricenumberNoMaximum monthly rent.
limitintegerNoDefaults to 20. Maximum 50.
Filter-only searches are allowed at the MCP boundary. BrightPlace currently uses a neutral internal query for downstream compatibility when query is omitted.

Output

The tool returns ListingSummary[].
[
  {
    "listing_id": "listing-record-id",
    "unit_id": "unit-id",
    "property_name": "Example Apartments",
    "unit_name": "Apt 5B",
    "latitude": 40.7128,
    "longitude": -74.006,
    "beds": 1,
    "baths": 1,
    "sqft": 720,
    "rent": 3400,
    "concessions": ["1 month free on select lease terms"],
    "fees": [
      {
        "name": "Application fee",
        "amount": 75,
        "frequency": "one_time"
      }
    ],
    "available_at": "2026-07-01",
    "primary_photo_url": "https://example.com/photo.jpg"
  }
]
listing_id is the listing snapshot id to pass into get_listing, get_tour_availability, and book_tour.