# DuProprio Property Scraper (`aitorsm/duproprio`) Actor

DuProprio Scraper: Extract comprehensive property data from Canada's leading for-sale-by-owner platform. Get detailed listings, pricing, features, taxes, photos, and more for real estate market research, investment analysis, and lead generation. Perfect for investors, agents, and analysts.

- **URL**: https://apify.com/aitorsm/duproprio.md
- **Developed by:** [Aitor Sanchez-Mansilla](https://apify.com/aitorsm) (community)
- **Categories:** Real estate, Automation, Integrations
- **Stats:** 16 total users, 0 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## DuProprio Scraper - Comprehensive Property Data Extraction for Real Estate Analysis, Investment, and More

[![DuProprio Scraper status](https://apify.com/actor-badge?actor=aitorsm/duproprio)](https://apify.com/aitorsm/duproprio)

The **DuProprio Scraper** allows you to efficiently extract detailed property data from [DuProprio](https://duproprio.com/), one of Canada's largest "for sale by owner" real estate platforms. It provides comprehensive information on properties such as:

- **Basic Information**: Property ID, price, property type, transaction type (sale/rent)
- **Location Details**: Complete address with street, city, region, province, and GPS coordinates
- **Property Characteristics**: Bedrooms, bathrooms, powder rooms, floors, living area, lot size
- **Detailed Features**: Exterior siding, heating systems, garage/parking, basement, flooring, and more
- **Financial Data**: Municipal assessment, monthly/annual expenses, property taxes, school taxes
- **Property Details**: Year built, building dimensions, court orientation, municipal assessment
- **Room-by-Room Analysis**: Each room's dimensions, storey, and flooring materials
- **Visual Assets**: High-quality property photos
- **Additional Information**: Owner remarks, availability dates, property tags

With a **user-friendly visual input**, this tool is perfect for real estate professionals, investors, market researchers, and data analysts looking to gain comprehensive insights into the Canadian real estate market.

### Use Cases

- **Real Estate Market Research**: Analyze pricing trends, property availability, and market conditions across different Canadian regions to identify emerging opportunities and understand local market dynamics.

- **Property Investment Analysis**: Evaluate potential investment properties by extracting detailed financial data, property characteristics, and neighborhood information to calculate ROI and assess property value.

- **Competitive Market Analysis**: Monitor competitor property listings, pricing strategies, and feature offerings to optimize your own property listings and stay competitive in the market.

- **Property Portfolio Management**: Track and manage multiple property listings by automatically collecting up-to-date information, availability status, and market performance metrics.

### Cost

This Actor uses pay-per-event pricing with tiered rates:

- **No subscription** - $0.04 per Event Scraped
- **Bronze Tier** - $0.035 per Event Scraped
- **Silver Tier** - $0.03 per Event Scraped
- **Gold Tier** - $0.025 per Event Scraped

Aplify's platform costs are included, so the total amount is totally predictable.

### Input

The input of this actor consists simply on the **startUrls** which can be listings or property detail pages, from the english version of the website. If you are on the french version please click "EN" at the top right corner.

Examples of startUrls:
https://duproprio.com/en/search/list
https://duproprio.com/en/rental/search/list
https://duproprio.com/en/rental/search/list?search=true\&regions%5B0%5D=3\&parent=1\&pageNumber=1\&sort=-published\_at
... and also any specific property URL.

Appart from that there is also a **maxPages** field to limit the maximum number of pages to scrape from that listing. It can be left blank to scrape the whole listing.

Feel free to reach out if you need more advanced filtering options!

The data is returned in **JSON format**, which is ideal for integration into analytics platforms, websites, or apps. Below is an example of the structured output you will receive:

```json
{
    "url": "https://duproprio.com/en/monteregie-rive-sud-montreal/st-jean-sur-richelieu-st-jean-sur-richelieu/bungalow-for-sale/hab-440-rue-marie-rollet-1114707",
    "id": "1114707",
    "price": 659000,
    "propertyType": "Bungalow",
    "transactionType": "sale",
    "address": {
      "street": "440 rue Marie-Rollet",
      "city": "St-Jean-sur-Richelieu",
      "region": "St-Jean-sur-Richelieu",
      "province": "Montérégie (Rive-Sud Montréal)"
    },
    "availability": null,
    "tags": null,
    "bedrooms": 3,
    "bathrooms": 1,
    "powderRooms": null,
    "floors": 1,
    "livingArea": {
      "squareFeet": 1211.53,
      "squareMeters": 112.55,
      "display": "1,211.53 ft² (112.55 m²)"
    },
    "lotSize": {
      "squareFeet": 13013.57,
      "squareMeters": 1209,
      "display": "13,013.57 ft² (1,209 m²)"
    },
    "buildingDimensions": null,
    "municipalAssessment": null,
    "yearBuilt": 1962,
    "courtOrientation": null,
    "features": {
      "exteriorSiding": [
        "Brick"
      ],
      "heating": [
        "Forced air",
        "Electric"
      ],
      "kitchen": [
        "Melamine cabinets",
        "Stove",
        "Double sink"
      ],
      "equipmentservicesIncluded": [
        "Central vacuum",
        "Shed",
        "Cold room",
        "Central air",
        "Stove",
        "Fireplace",
        "Humidifier",
        "Ceiling fixtures",
        "Stove",
        "Blinds",
        "A/C"
      ],
      "bathroom": [
        "Bath and shower"
      ],
      "basement": [
        "Partially finished"
      ],
      "renovationsAndUpgrades": [
        "Heating",
        "Central air",
        "Kitchen",
        "Painting",
        "Landscaping"
      ],
      "parkingFeatures": [
        "Asphalt"
      ],
      "environment": [
        "Highway access",
        "Near park",
        "Residential area"
      ],
      "lotDescription": [
        "Flat geography",
        "Hedged",
        "Patio/deck",
        "Landscaped"
      ],
      "nearbyCommerce": [
        "Supermarket",
        "Drugstore",
        "Financial institution",
        "Restaurant",
        "Shopping Center",
        "Bar"
      ],
      "nearHealthServices": [
        "Hospital",
        "Dentist",
        "Medical center",
        "Health club / Spa"
      ],
      "nearbyEducation": [
        "Daycare",
        "Kindergarten",
        "Elementary school",
        "High School",
        "College"
      ],
      "nearbyRecreation": [
        "Golf course",
        "Gym",
        "Sports center",
        "Library",
        "Museum",
        "Bicycle path",
        "Pedestrian path",
        "Swimming pool"
      ],
      "mainCharacteristics": {
        "bedrooms": 3,
        "bathrooms": 1,
        "levels": 1,
        "livingArea": "1,211.53 ft² (112.55 m²)",
        "lot_dimensions": 13013
      }
    },
    "rooms": [
      {
        "name": "Apartment dining room",
        "storey": "Main floor",
        "flooring": "Hardwood",
        "dimensions": {
          "display": "8' 4\" x 14' 8\" (2,54 m x 4,47 m)",
          "imperial": "8' 4\" x 14' 8\"",
          "metric": "2,54 m x 4,47 m",
          "imperialValues": {
            "length": "8' 4\"",
            "width": "14' 8\""
          },
          "metricValues": {
            "length": "2,54 m",
            "width": "4,47 m"
          }
        }
      },
      {
        "name": "Apartment living room",
        "storey": "Main floor",
        "flooring": "Carpet",
        "dimensions": {
          "display": "19' x 14' 6\" (5,79 m x 4,42 m)",
          "imperial": "19' x 14' 6\"",
          "metric": "5,79 m x 4,42 m",
          "imperialValues": {
            "length": "19'",
            "width": "14' 6\""
          },
          "metricValues": {
            "length": "5,79 m",
            "width": "4,42 m"
          }
        }
      },
      {
        "name": "Bathroom",
        "storey": "Main floor",
        "flooring": "Ceramic",
        "dimensions": {
          "display": "7' 5\" x 11' 2\" (2,26 m x 3,4 m)",
          "imperial": "7' 5\" x 11' 2\"",
          "metric": "2,26 m x 3,4 m",
          "imperialValues": {
            "length": "7' 5\"",
            "width": "11' 2\""
          },
          "metricValues": {
            "length": "2,26 m",
            "width": "3,4 m"
          }
        }
      },
      {
        "name": "Bedroom 1 (Primary)",
        "storey": "Main floor",
        "flooring": "Hardwood",
        "dimensions": {
          "display": "11' x 11' 7\" (3,35 m x 3,53 m)",
          "imperial": "11' x 11' 7\"",
          "metric": "3,35 m x 3,53 m",
          "imperialValues": {
            "length": "11'",
            "width": "11' 7\""
          },
          "metricValues": {
            "length": "3,35 m",
            "width": "3,53 m"
          }
        }
      },
      {
        "name": "Bedroom 2",
        "storey": "Main floor",
        "flooring": "Hardwood",
        "dimensions": {
          "display": "10' 3\" x 11' 9\" (3,12 m x 3,58 m)",
          "imperial": "10' 3\" x 11' 9\"",
          "metric": "3,12 m x 3,58 m",
          "imperialValues": {
            "length": "10' 3\"",
            "width": "11' 9\""
          },
          "metricValues": {
            "length": "3,12 m",
            "width": "3,58 m"
          }
        }
      },
      {
        "name": "Bedroom 3",
        "storey": "Main floor",
        "flooring": "Hardwood",
        "dimensions": {
          "display": "9' 9\" x 10' 9\" (2,97 m x 3,28 m)",
          "imperial": "9' 9\" x 10' 9\"",
          "metric": "2,97 m x 3,28 m",
          "imperialValues": {
            "length": "9' 9\"",
            "width": "10' 9\""
          },
          "metricValues": {
            "length": "2,97 m",
            "width": "3,28 m"
          }
        }
      },
      {
        "name": "Kitchen",
        "storey": "Main floor",
        "flooring": "Vinyl",
        "dimensions": {
          "display": "14' 9\" x 10' 2\" (4,5 m x 3,1 m)",
          "imperial": "14' 9\" x 10' 2\"",
          "metric": "4,5 m x 3,1 m",
          "imperialValues": {
            "length": "14' 9\"",
            "width": "10' 2\""
          },
          "metricValues": {
            "length": "4,5 m",
            "width": "3,1 m"
          }
        }
      },
      {
        "name": "Basement",
        "storey": "Basement",
        "flooring": "Vinyl",
        "dimensions": {
          "display": "21' 7\" x 28' 5\" (6,58 m x 8,66 m)",
          "imperial": "21' 7\" x 28' 5\"",
          "metric": "6,58 m x 8,66 m",
          "imperialValues": {
            "length": "21' 7\"",
            "width": "28' 5\""
          },
          "metricValues": {
            "length": "6,58 m",
            "width": "8,66 m"
          }
        }
      },
      {
        "name": "Basement",
        "storey": "Basement",
        "flooring": "Vinyl",
        "dimensions": {
          "display": "20' x 25' 2\" (6,1 m x 7,67 m)",
          "imperial": "20' x 25' 2\"",
          "metric": "6,1 m x 7,67 m",
          "imperialValues": {
            "length": "20'",
            "width": "25' 2\""
          },
          "metricValues": {
            "length": "6,1 m",
            "width": "7,67 m"
          }
        }
      }
    ],
    "expenses": {
      "costTable": {
        "items": [],
        "total": {
          "monthly": 0,
          "annual": 0
        }
      }
    },
    "monthlyTaxes": 0,
    "ownerRemarks": "Charming, comfortable, brick house with large, pie shaped lot. Very well located, it offers a practical living environment in a peaceful neighborhood. This bungalow surrounded by mature trees offers 3 spacious bedrooms. The modern blinds and light fixtures included ensure the comfort of the private space. It is just a short walk from a primary school with quick access to all of your destinations. With three outdoor parking spaces, this property will meet all of your needs or has the potential to meet them. Rare on the market, do not hesitate to contact us quickly to schedule a visit!",
    "coordinates": {
      "lat": 45.32346,
      "lng": -73.27325
    },
    "photos": [
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376821.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202512/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15386745.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361609.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376691.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361617.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361600.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361599.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361598.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361595.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361596.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361597.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361601.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361603.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361604.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361607.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361608.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361610.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361611.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361613.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361614.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361615.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361618.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15361619.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376688.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376690.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376692.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376693.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376695.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376696.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376697.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376814.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376816.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376817.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376818.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376819.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1600-15376820.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376821.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361617.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376691.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361600.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361599.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361598.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361595.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361596.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361597.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361601.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361603.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361604.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361607.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361608.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361610.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361611.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361613.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361614.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361615.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361618.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15361619.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376688.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376690.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376692.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376693.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376695.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376696.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376697.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376814.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376816.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376817.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376818.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376819.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202511/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15376820.jpg",
      "https://photos.duproprio.com/photos/public/for_sale/202512/1114707/bungalow-st-jean-sur-richelieu-st-jean-sur-richelieu-1024-15386745.jpg"
  ]
}
```

### How to Use

1. **Get your desired url to scrape**: Go to DuProprio website, apply the filters you want and the, after the page is refreshed, copy the URL, and then paste it here in the Actor's input tab startUrls field. If you want, set also the maxPages parameter.
2. **Run the Actor**: Start the scraping process, and the Actor will fetch property data according to your specifications.
3. **Export Data**: Once scraping is complete, export the data in JSON format for further analysis or integration.

### Output

Each scraped property is returned as a structured JSON record. Once a run finishes you can download the dataset as **JSON, CSV, Excel, HTML, or XML** from the Storage tab, or pull it programmatically. Below is a trimmed example output record showing the main fields (see the full example in the **Input** section above for every nested field):

```json
{
  "url": "https://duproprio.com/en/montreal/le-plateau-mont-royal/condo-for-sale/1118802",
  "propertyId": "1118802",
  "price": 525000,
  "propertyType": "Condo",
  "transactionType": "sale",
  "address": {
    "street": "1234 rue Saint-Denis",
    "city": "Montréal",
    "region": "Le Plateau-Mont-Royal",
    "province": "Montréal (Île)"
  },
  "bedrooms": 2,
  "bathrooms": 1,
  "powderRooms": null,
  "floors": 1,
  "livingArea": {
    "squareFeet": 925.0,
    "squareMeters": 85.93,
    "display": "925.00 ft² (85.93 m²)"
  },
  "yearBuilt": 2008,
  "monthlyTaxes": 410,
  "coordinates": { "lat": 45.5231, "lng": -73.5817 },
  "ownerRemarks": "Bright, renovated condo steps from the metro...",
  "photos": [
    "https://photos.duproprio.com/photos/public/for_sale/1118802/condo-1600-1.jpg"
  ]
}
```

The `price` and `monthlyTaxes` values are in **CAD**. Empty optional fields (e.g. `powderRooms`, `availability`, `tags`) are returned as `null` so your schema stays consistent across every record.

### FAQ

**Is there a DuProprio API — why use this scraper instead?**
DuProprio does not offer a public API. There are no developer credentials, no documented endpoints, and no official way to bulk-download listings for analysis. Even browsing the site by hand, you can only see a limited number of results per page and many structured fields (room-by-room dimensions, GPS coordinates, municipal assessment, full feature lists) are spread across the page and tedious to copy. This Actor fills that gap: point it at any search or property URL and it returns clean, structured JSON for every listing — no API key, no rate-limit juggling, and no missing fields.

**Can I export the data to CSV or Excel?**
Yes. Every run is stored as an Apify dataset, which you can download in **CSV, Excel, JSON, HTML, or XML** with one click from the Storage tab, or fetch via the Apify API for automated workflows.

**Can I filter which properties I scrape (region, sale vs. rent, price)?**
Yes. Apply any filters you want directly on the DuProprio website (region, price range, property type, sale vs. rental), let the page refresh, then copy the resulting URL into the `startUrls` field. The Actor scrapes exactly the filtered listing you give it. Use `maxPages` to cap how many listing pages are crawled.

**How many listings can I scrape and what does it cost?**
There is no hard limit — you can scrape an entire region in one run. Pricing is pay-per-event (see the **Cost** section above), so the total is predictable and scales with the number of properties you extract.

### Related Actors

Building a Canadian real-estate dataset? These sibling Actors pair well with the DuProprio Scraper:

- [Centris Scraper](https://apify.com/aitorsm/centris-scraper) — extract listings from Centris, Quebec's largest MLS-backed real estate platform.
- [Realtor Properties Scraper](https://apify.com/aitorsm/realtor-properties-scraper) — pull property listings from Realtor.ca for nationwide Canadian coverage.
- [Contact Extractor](https://apify.com/aitorsm/email-extractor) — enrich any list of websites with emails, phone numbers, and social profiles for outreach.

***

If you need additional custom features or filtering options, feel free to [reach out](mailto:business@aitorsm.com) to discuss your specific requirements.

If this actor has been useful to you, please consider to add it to your bookmarks 📑 on Apify.

# Actor input Schema

## `startUrls` (type: `array`):

URLs to start with. It should be a listing or property detail URLs.

## `maxPages` (type: `integer`):

Maximum number of pages of the listing to scrape. Leave blank to scrape until the last page. If you introduced two or more listing URLs, this value applies for all of them.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://duproprio.com/en/rental/search/list"
    }
  ],
  "maxPages": 1
}
```

# Actor output Schema

## `properties` (type: `string`):

List of scraped properties

## `overview` (type: `string`):

Overview table of properties

## `details` (type: `string`):

Detailed view of property listings

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://duproprio.com/en/rental/search/list"
        }
    ],
    "maxPages": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("aitorsm/duproprio").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://duproprio.com/en/rental/search/list" }],
    "maxPages": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("aitorsm/duproprio").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://duproprio.com/en/rental/search/list"
    }
  ],
  "maxPages": 1
}' |
apify call aitorsm/duproprio --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aitorsm/duproprio"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/73WXaVW7fQSItbgTs/builds/H1TrrHHskBDACTN1y/openapi.json
