Properties
Look up any property by ID, address, or search across millions of listings with rich detail including price history, tax records, and neighborhood scores.
Get Property by ID
Retrieve comprehensive property data by Straply property ID. Returns the full property record including address, listing details, price history, tax history, and neighborhood scores.
/v1/properties/{id} Path Parameters
| Parameter | Type | Description |
|---|---|---|
id required | string | The unique Straply property identifier. |
Request
curl "https://api.straply.com/v1/properties/sp_8k3j2m" \ -H "Authorization: Bearer sk_live_your_api_key"
Response
{ "id": "sp_8k3j2m", "zpid": 2084541708, "address": { "streetAddress": "742 Evergreen Terrace", "city": "Springfield", "state": "IL", "zipCode": "62704", "county": "Sangamon" }, "coordinates": { "latitude": 39.7817, "longitude": -89.6501 }, "status": "FOR_SALE", "listPrice": 425000, "zestimate": 418500, "bedrooms": 4, "bathrooms": 2.5, "livingArea": 2450, "lotSize": 8712, "yearBuilt": 1987, "propertyType": "SINGLE_FAMILY", "daysOnMarket": 14, "priceHistory": [ { "date": "2026-02-24", "event": "Listed", "price": 425000, "source": "MLS" }, { "date": "2019-06-15", "event": "Sold", "price": 335000, "source": "MLS" } ], "taxHistory": [ { "year": 2025, "taxPaid": 6842, "assessedValue": 398000 } ], "scores": { "walkScore": 62, "transitScore": 34, "bikeScore": 48 }, "lastUpdated": "2026-03-10T08:14:22Z" }
Look Up by Address
Look up a property using structured address components. This endpoint uses exact matching on the provided fields — no fuzzy matching or autocomplete. All address parts must be provided separately as query parameters.
/v1/properties/lookup Query Parameters
| Parameter | Type | Description |
|---|---|---|
streetAddress required | string | Street number and name, e.g. 742 Evergreen Terrace. |
city required | string | City name. |
state required | string | Two-letter state abbreviation, e.g. IL. |
zipCode | string | 5-digit ZIP code. Optional but improves match accuracy. |
Request
curl "https://api.straply.com/v1/properties/lookup?streetAddress=742+Evergreen+Terrace&city=Springfield&state=IL" \ -H "Authorization: Bearer sk_live_your_api_key"
Response
Returns the same property object as the Get Property endpoint. If no match is found, returns a 404 error.
{ "id": "sp_8k3j2m", "address": { "streetAddress": "742 Evergreen Terrace", "city": "Springfield", "state": "IL", "zipCode": "62704" }, "status": "FOR_SALE", "listPrice": 425000, // ... full property object }
Search Properties
Search across all properties with flexible filters. At least one geographic filter is required: zipCode, city + state, or state alone. Results are paginated and sorted by relevance by default.
/v1/properties Query Parameters
Geographic filter required. You must provide at least one of: zipCode, city + state, or state.
| Parameter | Type | Description |
|---|---|---|
zipCode | string | 5-digit ZIP code to search within. |
city | string | City name. Must be combined with state. |
state | string | Two-letter state abbreviation. |
status | string | Listing status. One of: FOR_SALE, PENDING, RECENTLY_SOLD, OFF_MARKET. |
propertyType | string | One of: SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, LAND, MANUFACTURED. |
minPrice | integer | Minimum list price in dollars. |
maxPrice | integer | Maximum list price in dollars. |
minBeds | integer | Minimum number of bedrooms. |
maxBeds | integer | Maximum number of bedrooms. |
minBaths | integer | Minimum number of bathrooms. |
minSqft | integer | Minimum living area in square feet. |
maxSqft | integer | Maximum living area in square feet. |
minYearBuilt | integer | Minimum year the property was built. |
maxDaysOnMarket | integer | Maximum number of days the property has been listed. |
limit | integer | Results per page. Default 25, maximum 100. |
offset | integer | Number of results to skip. Default 0. |
sort | string | Sort field. One of: listPrice, daysOnMarket, livingArea, yearBuilt, lastUpdated. |
order | string | Sort direction. One of: asc, desc. Default desc. |
Request
curl "https://api.straply.com/v1/properties?zipCode=62704&status=FOR_SALE&minBeds=3&maxPrice=500000&sort=listPrice&order=asc&limit=25" \ -H "Authorization: Bearer sk_live_your_api_key"
Response
{ "data": [ { "id": "sp_8k3j2m", "address": { "streetAddress": "742 Evergreen Terrace", "city": "Springfield", "state": "IL", "zipCode": "62704" }, "status": "FOR_SALE", "listPrice": 285000, "bedrooms": 3, "bathrooms": 2, "livingArea": 1820, "propertyType": "SINGLE_FAMILY" }, { "id": "sp_r4t9wp", "address": { "streetAddress": "1205 W Monroe St", "city": "Springfield", "state": "IL", "zipCode": "62704" }, "status": "FOR_SALE", "listPrice": 342000, "bedrooms": 4, "bathrooms": 2.5, "livingArea": 2210, "propertyType": "SINGLE_FAMILY" } ], "meta": { "total": 147, "limit": 25, "offset": 0, "hasMore": true } }
Pagination
Results are paginated using limit and offset parameters. The meta object in the response tells you the total number of matching results and whether more pages are available.
To fetch the next page, increment offset by the value of limit. For example, to get page 2 with 25 results per page, set offset=25. Continue until hasMore is false.
curl "https://api.straply.com/v1/properties?zipCode=62704&status=FOR_SALE&limit=25&offset=25" \ -H "Authorization: Bearer sk_live_your_api_key"
Tip: The meta.total count reflects the total number of matching properties at query time. Use it to calculate total pages: Math.ceil(total / limit).