# 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, 1 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

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.

***

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("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=aitorsm/duproprio",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "DuProprio Property Scraper",
        "description": "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.",
        "version": "0.0",
        "x-build-id": "gV03Ge4F2nHa3Id9G"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/aitorsm~duproprio/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-aitorsm-duproprio",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/aitorsm~duproprio/runs": {
            "post": {
                "operationId": "runs-sync-aitorsm-duproprio",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/aitorsm~duproprio/run-sync": {
            "post": {
                "operationId": "run-sync-aitorsm-duproprio",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with. It should be a listing or property detail URLs.",
                        "default": [
                            {
                                "url": "https://duproprio.com/en/rental/search/list"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxPages": {
                        "title": "Maximum number of pages of the listing to scrape",
                        "type": "integer",
                        "description": "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.",
                        "default": 1
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
