Appearance
Neighborhoods API
GET /neighborhoods
List all Montreal neighborhoods with basic content fields.
Query Parameters
| Param | Type | Description |
|---|---|---|
| borough | string | Filter by borough name |
Response
json
{
"neighborhoods": [
{
"id": "uuid",
"name": "Mile End",
"slug": "mile-end",
"borough": "Le Plateau-Mont-Royal",
"latitude": "45.5270000",
"longitude": "-73.5960000",
"descriptionEn": "Markdown description...",
"descriptionFr": "Description en markdown...",
"coverImageUrl": "https://...",
"walkabilityScore": 92,
"transitScore": 88,
"createdAt": "2026-02-28T00:00:00.000Z"
}
]
}GET /neighborhoods/:slug
Get full neighborhood profile with content, SEO fields, per-bedroom stats, property type breakdown, and latest listings.
Response
json
{
"neighborhood": {
"id": "uuid",
"name": "Mile End",
"slug": "mile-end",
"borough": "Le Plateau-Mont-Royal",
"descriptionEn": "# Mile End\n\nCreative neighborhood...",
"descriptionFr": "# Mile End\n\nQuartier créatif...",
"highlightsEn": "- Great coffee shops\n- Transit accessible",
"highlightsFr": "- Excellents cafés\n- Accessible en transport",
"seoTitleEn": "Apartments in Mile End",
"seoTitleFr": "Appartements à Mile End",
"seoDescriptionEn": "Find rentals in Mile End...",
"seoDescriptionFr": "Trouvez des locations à Mile End...",
"coverImageUrl": "https://...",
"walkabilityScore": 92,
"transitScore": 88,
"createdAt": "2026-02-28T00:00:00.000Z"
},
"stats": {
"totalListings": 61,
"avgPrice": 196902,
"minPrice": 85000,
"maxPrice": 350000,
"byBedroom": [
{ "bedrooms": 0, "avgPrice": 114953, "activeCount": 45, "minPrice": 73000, "maxPrice": 159500 },
{ "bedrooms": 1, "avgPrice": 151302, "activeCount": 51, "minPrice": 75000, "maxPrice": 235000 },
{ "bedrooms": 2, "avgPrice": 187927, "activeCount": 33, "minPrice": 97500, "maxPrice": 269000 },
{ "bedrooms": 3, "avgPrice": 235850, "activeCount": 28, "minPrice": 97500, "maxPrice": 320000 },
{ "bedrooms": 4, "avgPrice": 278480, "activeCount": 9, "minPrice": 68300, "maxPrice": 499000 }
],
"byPropertyType": [
{ "propertyType": "apartment", "count": 42 },
{ "propertyType": "condo", "count": 12 }
]
},
"latestListings": [
{ "id": "uuid", "title": "...", "pricePerMonth": 150000, "primaryImage": { "url": "..." } }
]
}- Prices in stats are integer cents (196902 = $1,969)
byBedroom: bedrooms 0 = Studio, 4 = 4+ bedrooms. Uses active+archived listings for price averagesbyPropertyType: active listings onlylatestListings: 6 most recent active listings with primary images
GET /neighborhoods/:slug/snapshots
Historical stats snapshots for price trends. Data accumulates daily via a scheduled job.
Query Parameters
| Param | Type | Default | Description |
|---|---|---|---|
| from | date | 90 days ago | Start date (YYYY-MM-DD) |
| to | date | today | End date (YYYY-MM-DD) |
| bedrooms | integer | all | Filter by bedroom count (0=studio, 1-3, 4=4+) |
Response
json
{
"snapshots": [
{
"date": "2026-03-01T00:00:00.000Z",
"bedrooms": null,
"avgPrice": 170308,
"listingCount": 166,
"minPrice": 68300,
"maxPrice": 499000
}
]
}bedrooms: null= overall aggregate for the neighborhood- Snapshots are computed daily at 2:00 AM by the scraper service
Boroughs
Neighborhoods are grouped by Montreal borough (arrondissement):
- Ahuntsic-Cartierville
- CDN-NDG
- Lachine
- LaSalle
- Le Plateau-Mont-Royal
- Le Sud-Ouest
- Mercier-Hochelaga-Maisonneuve
- Outremont
- Rosemont-La Petite-Patrie
- Saint-Laurent
- Verdun
- Ville-Marie
- Villeray-Saint-Michel-Parc-Extension