Centris.ca Scraper — Quebec Real Estate Data & MLS API
Pricing
from $1.00 / 1,000 property extracteds
Centris.ca Scraper — Quebec Real Estate Data & MLS API
Scrape Centris.ca Quebec and Montreal real estate listings into clean structured data. Search by city, region, map polygon, coordinates or listing URL; filter by price, beds, baths, property type and foreclosure; export full listing details, photos and geocoordinates with an HTML report.
Pricing
from $1.00 / 1,000 property extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Centris.ca Scraper — Quebec Real Estate Data & MLS API 🏠
🎉 The only complete Centris.ca scraper — search Quebec real estate 4 ways, then pull full bilingual listing dossiers
For real estate investors, brokers, market analysts, and Quebec/Canada data teams who need fresh, structured MLS-grade listing data
📋 Overview
Pull Centris.ca Quebec and Montreal listings — for-sale AND rentals — into clean structured data. Search by city or region, by coordinates + radius, inside an arbitrary map polygon, or straight from a Centris search-results URL, then enrich any listing with a full bilingual (FR/EN) dossier: characteristics, units, financials, taxes, community profile, nearby amenities, photos and geocoordinates.
Why real estate teams choose this scraper:
- ✅ Only complete Centris scraper: 4 search modes + rich detail dossiers in one actor — nothing else on the market covers all of it for Centris.ca
- ⚡ Search any way you have data: location name, coordinates + radius, map polygon, or paste-a-URL — every mode auto-paginates up to 60 rows/page
- 🎯 Full Centris filter set: sale/rent, property type, price band, beds, baths, parking, garage, living/land area, pool, waterfront, elevator, open house, furnished, pets, and foreclosure
- 💰 Best price on the market: pay-per-result — charged only for listings actually returned, with a generous FREE tier to test on
- 💎 Sourcing-grade detail: bilingual FR/EN dossiers with structured characteristics, room-by-room units, municipal assessment, taxes and listing brokers
- ✨ Built-in market KPIs: median/average price, price distribution, and category + bedroom breakdowns in a clean HTML report
✨ Features
- 🧭 Four search modes: by location, by coordinates + radius, by map polygon, or by Centris search-results URL
- 🧾 Full detail dossiers: fetch complete listing data by listing number or URL — or auto-enrich every search row
- 🏷 Sale + rent: scrape either side of the Quebec market with a single
searchTypetoggle - 🔧 Rich server-side filters: price band, beds/baths/parking/garage, property type, foreclosure, waterfront, pool and more
- 📊 Market KPIs + HTML report: median/average price, distribution and inventory breakdowns computed automatically
- 🔁 Automatic de-duplication: the same listing is never charged or exported twice
- 🌐 Bilingual data (FR/EN): Quebec listings served in both French and English
- 📍 Location autocomplete: a helper mode to discover valid Centris locations before you search
- 📦 Bulk detail lookups: pass arrays of listing numbers and/or URLs for batch dossier extraction
🎬 Quick Start
Pick a mode, give it a location (or coordinates, polygon, or URL), and run. Results stream straight to the Apify dataset with an HTML market report in the key-value store. No setup beyond your input.
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~centris-ca-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"mode":"location","location":"Montreal","searchType":"For_Sale","maxResults":25}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose your search mode
Set mode to location, coordinates, polygon, or searchUrl — and provide the matching target (a city name, a lat/lng, a polygon, or a Centris URL).
Step 2: Add filters (optional)
Narrow results with searchType (sale/rent), price band, beds, baths, property type, foreclosure, waterfront and more.
Step 3: Run and export
Run the actor. Optionally set enrichDetails: true (PAID) to attach a full dossier to every listing.
That's it! In under a minute, you'll have:
- A clean, de-duplicated dataset of Quebec listings
- Prices, addresses, beds/baths, photos and geocoordinates
- An HTML market report with median price, distribution and inventory breakdowns
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | No | location, coordinates, polygon, searchUrl, listingDetail, or autocomplete (default location) |
location | string | For location mode | City, region or neighbourhood, e.g. Montreal |
latitude / longitude | number | For coordinates mode | Centre point of the radius search |
radius | number | No | Radius in km around the point (default 3) |
polygon | string | For polygon mode | ≥3 space-separated lat,lng points |
searchUrl | string | For searchUrl mode | A Centris search-results URL |
listingIds / listingUrls | array | For listingDetail mode | Listing numbers and/or URLs to fetch dossiers for |
searchType | string | No | For_Sale or For_Rent (default sale) |
category | string | No | Residential or Commercial |
propertyType | string | No | Comma-separated types, e.g. House, Condo, Plex |
minPrice / maxPrice | integer | No | Price band in CAD |
bedrooms / bathrooms / parking / garage | string | No | Exact (3) or N-or-more (3+) |
pool / waterfront / elevator / openHouse / furnished / petsAllowed / foreclosure | boolean | No | Feature filters |
maxResults | integer | No | Cap on listings per search (FREE tier capped at 25) |
enrichDetails | boolean | No | Attach a full dossier to every search row (PAID) |
Example — location search:
{"mode": "location","location": "Montreal","searchType": "For_Sale","propertyType": "Condo","minPrice": 300000,"maxPrice": 600000,"bedrooms": "2+","maxResults": 50}
Example — bulk detail lookup:
{"mode": "listingDetail","listingIds": ["23630164", "13441060"]}
📤 Output
Results are saved to the Apify dataset. Search rows carry the core listing fields; detail rows (and enriched rows) add the full dossier.
| Field | Type | Description |
|---|---|---|
propertyId | string | Centris listing number (join key) |
listingType | string | sale or rent |
category | string | e.g. Condo for sale, Triplex for sale |
price | number | Price in CAD |
priceText | string | Formatted price, e.g. $799,000 |
address | string | Street / full address |
bedrooms | integer | Bedroom count |
bathrooms | integer | Bathroom count |
photo | string | Primary listing photo URL |
url | string | Full listing URL |
listingTitle | string | Full title (detail rows) |
characteristics | array | Structured features, interior/exterior (detail rows) |
financialInfo | object | Assessment, taxes and fees (detail rows) |
agents | array | Listing broker(s) with name, agency and phone (detail rows) |
Example (search row):
{"propertyId": "23630164","listingType": "sale","category": "House for sale","price": 799000,"priceCurrency": "CAD","priceText": "$799,000","address": "4346, boulevard Jacques-Bizard","bedrooms": 3,"bathrooms": 2,"photo": "https://mspublic.centris.ca/media.ashx?id=...","url": "https://www.centris.ca/en/houses~for-sale~montreal-pierrefonds-roxboro/23630164"}
💼 Use Cases & Examples
1. Quebec & Montreal Market Analysis
Analysts tracking pricing and inventory across Quebec's biggest housing market.
Input: location: "Montreal", searchType: "For_Sale", maxResults: 200
Output: De-duplicated listings + an HTML report with median price and inventory mix
Use: Weekly market sweeps, pricing trend dashboards, neighbourhood comparisons
2. Comparables & Valuation Models
Data teams building comparables and training AVMs on fresh Quebec data.
Input: Location or polygon, enrichDetails: true
Output: Full dossiers with price, beds/baths, area, taxes and geocoordinates
Use: Automated valuation models, rent-prediction, comparable-sales datasets
3. Investor Deal Sourcing
Investors hunting foreclosures, plexes and waterfront opportunities.
Input: foreclosure: true or propertyType: "Plex, Triplex", price band
Output: Targeted listings with financials and gross scheduled income
Use: Off-market and value-add deal pipelines before the wider market reacts
4. Lead Generation
Sales teams pulling active listings and listing-broker contact data.
Input: mode: "listingDetail" with listing numbers, or enrichDetails: true
Output: Listing dossiers with broker name, agency and phone
Use: Outreach lists, CRM enrichment, prospecting pipelines
5. Canadian Housing Datasets & Dashboards
Researchers and product teams powering monitors and dashboards.
Input: Scheduled coordinates / polygon sweeps Output: Continuously refreshed structured Quebec listing data Use: Housing-market research, real-estate products, competitive monitoring
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/centris-ca-property-scraper').call({mode: 'location',location: 'Montreal',searchType: 'For_Sale',maxResults: 25});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/centris-ca-property-scraper').call(run_input={'mode': 'location', 'location': 'Montreal', 'searchType': 'For_Sale', 'maxResults': 25})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~centris-ca-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"mode":"location","location":"Montreal","searchType":"For_Sale","maxResults":25}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule or webhook
- HTTP Request: Call the actor API
- Process: Handle JSON results
- Action: Save, notify, or transform
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 listings per run — full feature access, same data quality
- No credit card required
- Perfect for testing and small projects
PAID Tier (Production Ready)
- Unlimited listings per run
- Bulk detail lookups + per-row enrichment
- Pay-per-result: only charged for listings actually returned
💰 Best price on the market — a low per-listing headline rate for search, with full bilingual dossiers priced by value.
❓ Frequently Asked Questions
Q: How many listings can I scrape? A: FREE tier: 25 per run. PAID tier: unlimited, with auto-pagination up to 60 rows per page.
Q: Can I search both for-sale and rentals?
A: Yes — set searchType to For_Sale or For_Rent. Centris does not publish sold data.
Q: How do I get full property details?
A: Use listingDetail mode with listing numbers/URLs, or set enrichDetails: true on any search to attach a full dossier to every row.
Q: Is the data bilingual? A: Yes — Quebec listings are served in both French and English; search rows are English-labelled and detail dossiers include French content.
Q: What output formats are available? A: JSON, CSV, Excel — export directly from the Apify dataset.
Q: Is this legal? A: Yes — we only extract publicly available listing data. See the legal section below.
🐛 Troubleshooting
No results returned
- Confirm the location resolves — try
autocompletemode with your query first - Widen your filters (price band, beds/baths) or increase
maxResults
A location isn't matched
- Use
autocompletemode to find the exact Centris location label, then search with it
Detail enrichment skipped
enrichDetailsrequires the PAID tier; on FREE it is silently disabled
Coordinates search too narrow
- Increase
radius(km) around your centre point
⚠️ Trademark Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Centris.ca, the Quebec Professional Association of Real Estate Brokers (QPAREB), or any of their subsidiaries or affiliates. "Centris" and "Centris.ca" are trademarks of their respective owners. All product and company names are the property of their respective holders. This tool extracts only publicly available listing information for legitimate research and analysis purposes.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools