# Places4Students Property Scraper (`kinaesthetic_millionaire/places4students`) Actor

Scrapes detailed listings from Places4Students, providing rental info like price, amenities, and descriptions for student housing options. Example output includes room availability, rent rates, and property features like inclusivity of utilities and Wi-Fi.

- **URL**: https://apify.com/kinaesthetic\_millionaire/places4students.md
- **Developed by:** [Parsedom Inc](https://apify.com/kinaesthetic_millionaire) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Places4Students Property Scraper

A fast and reliable web scraper for collecting student housing listings from [Places4Students](https://www.places4students.com). This tool is designed for developers, data analysts, researchers, and real estate professionals who want structured rental property data near universities and colleges.

The scraper automatically extracts key listing details such as property title, price, description, property information, lease terms, amenities, included utilities, and contact details. It supports scalable data collection across multiple school listing pages, making it useful for both small and large data gathering tasks.

### 🎯 Use Cases

#### Student Housing Research

- Analyze rental pricing trends near universities and colleges
- Compare property features (amenities, utilities, lease terms) across campuses
- Track availability and pricing changes over time

#### Listing Database & Catalog Building

- Build structured databases of student rental listings
- Power internal dashboards and analytics tools
- Feed consistent JSON listing data into backend systems

#### Lead Generation & Property Management

- Generate property lead lists for landlords and property managers
- Identify properties near specific schools for targeted outreach
- Populate CRM systems with fresh listing insights

#### Pricing & Competitive Analysis

- Monitor competitor listings and rental pricing strategies
- Compare lease terms and included utilities across markets
- Identify well-valued or premium student housing options

#### Automation & Workflow Integration

- Automate recurring data pulls for continuous monitoring
- Trigger downstream workflows (alerts, reports) via API
- Integrate with business tools (analytics, BI, dashboards)

#### Investment & Portfolio Decisions

- Build datasets for student rental investment models
- Assess property features and amenities relevant to ROI
- Segment markets by price band, feature set, or school proximity

### ⬇️ Input

`inputUrls` (array of string) – One or more Places4Students listing page or property detail page URLs.

`maxResults` (integer) – Maximum number of results to scrape.

```json
{
    "inputUrls": [
        "https://www.places4students.com/schools/1698/listings/properties"
    ],
    "maxResults": 10
}
````

#### Supported URL Types

The actor accepts two types of URLs:

- **Listing page** – A school's property listing page (paginated). Example: `/schools/{id}/listings/properties`
- **Detail page** – A specific property detail page. Example: `/schools/{id}/listings/properties/{propertyId}`

### ⬆️ Output

The scraped results will be shown on the **Storage** tab in Apify.

```json
[
  {
    "URL": "https://www.places4students.com/schools/1698/listings/properties/237329",
    "Title": "5 Rooms for rent in a female group preferred basement apartment, 5 minutes walk to Humber College.",
    "Price": "$749/ mo",
    "Description": "- Spacious & private room is available from $750  / month for each room. - Single occupancy per room.- Double-floor detached house with bright, clean, spacious rooms, and separate entrances.- Newly renovated (2022), with brand new appliances.  - Available for lease immediately, or from May 1st, 2026 till April 30th, 2027, all-inclusive. - Close to all amenities, hospital, walk-in clinic, and grocery store. The parking fee is an additional $75, depending on availability. - Complimentary high-speed and unlimited Internet is included in the rent.- Affordable coin laundry.- 24-hour TTC, Brampton, Mississauga, YRT, and GO Transit steps away. - The house has several safety features, 100% fire-rated self-closing doors, each bedroom has a Window, a smoke alarm, plus hardwired smoke alarms on every floor, (ESA) electric safety approved, 24-hour hot running water (Tank-less water heating system)",
    "propertyInfo": {
      "Bedrooms": "5",
      "Washrooms": "2",
      "Type of Accommodation": "Basement Apartment",
      "Occupancy Date": "Contact Us",
      "Landlord Occupied": "No"
    },
    "leaseTerms": {
      "Rental Rate": "$749 per room / month",
      "Lease Type(s) Offered": "12 month(s)",
      "Lease Condition": "Lessors have to keep the house clean and tidy. Maintain peace and quiet in the neighbourhood.",
      "Tenant Information Required": [
        "Reference",
        "Credit Check",
        "Guarantor"
      ]
    },
    "amenities": [
      "Air Conditioning",
      "Common Laundry",
      "Dryer in Unit",
      "Hardwood Floors",
      "Internet Included",
      "Microwave",
      "Parking - Driveway",
      "Refrigerator",
      "Stove",
      "All Inclusive"
    ],
    "includedUtilities": [
      "Electricity",
      "Gas",
      "Water",
      "Free Air Conditioning",
      "Heat",
      "Garbage Pickup"
    ],
    "contactName": "Robbie Brar",
    "contacts": [
      "(647) 838-6146",
      "(416) 886-3456"
    ]
  }
]
```

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `URL` | string | Direct URL to the property listing |
| `Title` | string | Property listing title |
| `Price` | string | Rental price as displayed on the listing |
| `Description` | string | Full property description |
| `propertyInfo` | object | Key property details (type, bedrooms, bathrooms, etc.) |
| `leaseTerms` | object | Lease conditions (length, availability, pet policy, etc.) |
| `amenities` | array | List of amenities available at the property |
| `includedUtilities` | array | List of utilities included in the rent |
| `contactName` | string | Name of the landlord or property manager |
| `contacts` | array | Contact details (email, phone) for the listing |

### 🤝 Support

Need help or a custom scraper?

- 📧 <info@parsedom.com>
- 🌐 <https://parsedom.com>
- 💼 Fiverr: <https://www.fiverr.com/s/rEmNqEb>

**Ready to extract Places4Students rental data?**
Add your URLs and start scraping 🏠📊

# Actor input Schema

## `inputUrls` (type: `array`):

Places4Students listing page or property detail page URLs to scrape. Supported formats: listing page (/schools/{id}/listings/properties) or detail page (/schools/{id}/listings/properties/{propertyId}).

## `maxResults` (type: `integer`):

Maximum number of property listings to scrape. Leave empty for unlimited.

## `proxyConfiguration` (type: `object`):

Proxy settings for the crawler. Residential proxies are recommended to avoid blocking.

## Actor input object example

```json
{
  "inputUrls": [
    "https://www.places4students.com/schools/1698/listings/properties"
  ],
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "inputUrls": [
        "https://www.places4students.com/schools/1698/listings/properties"
    ],
    "maxResults": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kinaesthetic_millionaire/places4students").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 = {
    "inputUrls": ["https://www.places4students.com/schools/1698/listings/properties"],
    "maxResults": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("kinaesthetic_millionaire/places4students").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 '{
  "inputUrls": [
    "https://www.places4students.com/schools/1698/listings/properties"
  ],
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kinaesthetic_millionaire/places4students --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kinaesthetic_millionaire/places4students",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Places4Students Property Scraper",
        "description": "Scrapes detailed listings from Places4Students, providing rental info like price, amenities, and descriptions for student housing options. Example output includes room availability, rent rates, and property features like inclusivity of utilities and Wi-Fi.",
        "version": "1.0",
        "x-build-id": "0ejcLQ0PeHzY2C4Ib"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kinaesthetic_millionaire~places4students/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kinaesthetic_millionaire-places4students",
                "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/kinaesthetic_millionaire~places4students/runs": {
            "post": {
                "operationId": "runs-sync-kinaesthetic_millionaire-places4students",
                "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/kinaesthetic_millionaire~places4students/run-sync": {
            "post": {
                "operationId": "run-sync-kinaesthetic_millionaire-places4students",
                "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",
                "required": [
                    "inputUrls"
                ],
                "properties": {
                    "inputUrls": {
                        "title": "Input URLs",
                        "type": "array",
                        "description": "Places4Students listing page or property detail page URLs to scrape. Supported formats: listing page (/schools/{id}/listings/properties) or detail page (/schools/{id}/listings/properties/{propertyId}).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of property listings to scrape. Leave empty for unlimited.",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for the crawler. Residential proxies are recommended to avoid blocking."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
