StreetEasy API endpoint
Searches StreetEasy's public quick-search page and returns its rendered neighborhood, building, complex, school, agent, and recorded-sale groups. Recorded-sale entries are a limited anonymous preview when the page requires registration to see the remaining matches.
/streeteasy/quick-searchquery (required): free-text search phrase, 1–160 characters.Returns the result sections visible on StreetEasy's public quick-search page. The currently observed section IDs are area_results, building_results, community_results, school_results, agent_results, and closing_results. Section titles and totals come from the live page. Each entry includes its linked name, StreetEasy URL, and visible context text when present.
closing_results is a limited anonymous preview. StreetEasy showed three entries while stating that registration is required to view all matching recorded sales; total_count is the displayed upstream total, not the number returned. Other sections contain the entries rendered on the page and do not expose a separate pagination control.
An empty query is rejected. An upstream challenge page or an unexpected page layout is returned as an upstream error rather than an empty result.
| Field | Filled in, of 6 checked | Values in the sample |
|---|---|---|
| id | 6 | |
| title | 6 | “Neighborhood (1)” and 5 other values |
| total_count | 6 | 1 to 30, median 3 |
| entries | 6 | median 3 entries |
| is_preview | 1 | true in 1 of 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | Yes | Free-text StreetEasy quick-search query (1-160 characters) | Astoria | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/streeteasy/quick-search?query=Astoria" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "Astoria",
"groups": [
{
"id": "area_results",
"title": "Neighborhood (1)",
"total_count": 1,
"entries": [
{
"name": "Astoria",
"url": "https://streeteasy.com/area/astoria",
"details": [
"465 rentals 463 sales"
]
}
]
},
{
"id": "closing_results",
"title": "Recorded sales (30)",
"total_count": 30,
"is_preview": true,
"entries": [
{
"name": "Astoria Bank",
"url": "https://streeteasy.com/nyc/closing/10703432",
"details": [
"Sold 68-17 Myrtle Avenue in Glendale for $1,565,000 on 09/25/2019"
]
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/streeteasy.QuickSearchResult
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| groups | array | No | ||||
| groups[].entries | array | No | ||||
| groups[].entries[].details | array | No | ||||
| groups[].entries[].name | string | No | ||||
| groups[].entries[].url | string | No | ||||
| groups[].id | string | No | ||||
| groups[].is_preview | boolean | No | ||||
| groups[].title | string | No | ||||
| groups[].total_count | integer | No | ||||
| query | string | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/streeteasy/quick-search?query=Astoria" \
-H "x-api-key: $CRAWLORA_API_KEY"