# Forrentuniversity Listings Extractor (`kawsar/forrentuniversity-listings-extractor`) Actor

ForRentUniversity listings scraper that pulls student housing and apartment data by location URL, so you get prices, addresses, ratings, phone numbers, and image links in one clean export.

- **URL**: https://apify.com/kawsar/forrentuniversity-listings-extractor.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 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 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

## ForRentUniversity Listings Extractor

Pull student housing and off-campus apartment listings from ForRentUniversity by location. Paste a city or campus housing URL and get clean, structured data for every property on the results page: rent prices, addresses, bed and bath counts, ratings, phone numbers, image links, and more. The actor pages through the results for you, so one run can return hundreds of listings.

### What it does

Give it a ForRentUniversity results URL like `https://www.forrentuniversity.com/tx/austin-student-housing` and it returns one row per property with all the details shown on the listing card. It reads the same search results a student would see when browsing the site, then walks through the result pages automatically up to the limits you set. No clicking through page after page, no copy and paste, no missed listings.

Each result page holds up to 40 properties. By default the actor returns the first page (40 listings). Raise `maxItems` and `maxPagesPerUrl` when you want to go deeper into a city with thousands of results.

### Why use it

- Skip the manual work of opening every listing and copying details into a sheet
- Get consistent fields across every property, even when listing cards differ
- Pull an entire city or a single campus in one run
- Keep a dated snapshot of prices and availability so you can compare over time
- Feed real listing data straight into your own app, model, or dashboard

### What you get per listing

Every property returns the following fields:

| Field | Description |
| --- | --- |
| `listingKey`, `siteId` | Stable identifiers for the property on ForRentUniversity |
| `name` | Property or community name |
| `propertyType` | Apartment, house, condo, and similar |
| `propertyAddressText` | Address line as shown on the card |
| `adLevel` | Listing tier (Diamond, Premium, and so on) |
| `listingUrl` | Direct link to the full listing page |
| `streetAddress`, `city`, `state`, `zipCode` | Full postal address |
| `latitude`, `longitude` | Map coordinates |
| `rating` | Property rating |
| `phone` | Contact number for the property |
| `bedsFormatted`, `bathsFormatted`, `sqftFormatted` | Bed range, bath range, and size |
| `priceLow`, `priceHigh`, `priceFormatted` | Rent range as numbers and as a display string |
| `callForPrice` | True when the property hides price and asks you to call |
| `groupedPricing` | Price broken out per bedroom count |
| `imageCount` | Total number of photos on the listing |
| `mainImage`, `images` | Photo links, built at the size you choose |
| `hasVideo`, `hasTours` | Whether the listing offers video or a virtual tour |
| `managementCompany` | Property management company name |
| `propertyFees` | Fee breakdown when the property lists one |
| `lastUpdated` | When ForRentUniversity last refreshed the listing |
| `searchUrl`, `pageNumber` | Which search and page the listing came from |
| `scrapedAt` | UTC timestamp of the run |

### Input

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `startUrls` | list | required | One or more ForRentUniversity location pages. Paste the full URL of a city or campus results page. |
| `imageSize` | string | `984x658` | Resolution used to build image URLs. Choose from the preset sizes. |
| `maxPagesPerUrl` | integer | `5` | How many result pages to walk through per location. Each page holds up to 40 listings. |
| `maxItems` | integer | `40` | Cap on the total number of listings collected per run. |
| `requestTimeoutSecs` | integer | `30` | Per-request timeout in seconds. |

#### Example input

```json
{
  "startUrls": [
    "https://www.forrentuniversity.com/tx/austin-student-housing"
  ],
  "imageSize": "984x658",
  "maxPagesPerUrl": 5,
  "maxItems": 40
}
```

#### Finding the right URL

Open [forrentuniversity.com](https://www.forrentuniversity.com), search for a city or campus, and copy the address from your browser. Any results page works, for example:

- `https://www.forrentuniversity.com/tx/austin-student-housing`
- `https://www.forrentuniversity.com/ca/los-angeles-student-housing`
- `https://www.forrentuniversity.com/ny/new-york-student-housing`

You can drop several URLs into `startUrls` to cover multiple cities in a single run. Pasting a page-two style link is fine too, the actor normalizes it and starts from the first page.

### Example output

```json
{
  "listingKey": "fj5zblt",
  "name": "Carson Crossing",
  "propertyType": "Apartment",
  "listingUrl": "https://www.forrentuniversity.com/tx/austin/carson-crossing/fj5zblt",
  "streetAddress": "3335 Caseybridge Ct",
  "city": "Austin",
  "state": "TX",
  "zipCode": "78744",
  "latitude": 30.2105511,
  "longitude": -97.7033177,
  "rating": 3,
  "phone": "(737) 265-3786",
  "bedsFormatted": "1 - 3 Beds",
  "bathsFormatted": "1 - 2 Baths",
  "sqftFormatted": "650 - 1,198 sq. ft.",
  "priceFormatted": "$1,104 - $1,617",
  "priceLow": 1104,
  "priceHigh": 1617,
  "callForPrice": false,
  "groupedPricing": [
    { "beds": "1 Bed", "price": "$1,176" },
    { "beds": "2 Beds", "price": "$1,104+" },
    { "beds": "3 Beds", "price": "$1,268+" }
  ],
  "imageCount": 33,
  "mainImage": "https://images1.forrent.com/i2/KVunvu_HQbHaB7-GYIlewxxSjm5ou2rV6aDaTFR6JHY/984x658/image.jpg",
  "hasVideo": false,
  "hasTours": true,
  "managementCompany": "The Richman Group of Companies",
  "propertyFees": [
    { "label": "Base Rent", "value": "$1,104 - $1,617" },
    { "label": "Required Monthly Fees", "value": "None" }
  ],
  "lastUpdated": "2026-08-12T05:40:41.920Z",
  "searchUrl": "https://www.forrentuniversity.com/tx/austin-student-housing",
  "pageNumber": 2,
  "scrapedAt": "2026-08-12T09:01:19Z"
}
```

### Ways to use it

- Build a rental dataset for a city or a specific campus
- Track how prices move across student housing over time
- Feed listings into your own housing search or comparison app
- Watch availability and new floor plans near a university
- Pull contact details and management companies for outreach
- Map properties by coordinates to study distance from campus

### How pagination works

ForRentUniversity returns 40 listings per page. The actor reads the first page, checks how many pages exist for that location, then continues page by page until it hits either `maxPagesPerUrl` or `maxItems`, whichever comes first. Set `maxItems` to `40` for a quick single-page pull, or raise both limits to collect a full city.

### Export options

Results land in a dataset you can download as JSON, CSV, Excel, or HTML, or read through the Apify API. You can also connect the run to Google Sheets, a database, or another tool through Apify integrations, and schedule it to run on a set interval.

### Frequently asked questions

**How many listings can I get?**
As many as the location has, up to the limits you set. A large city can hold thousands of properties across many pages.

**Do I need any account or key from ForRentUniversity?**
No. You only provide the location URLs you want to extract.

**Can I extract several cities at once?**
Yes. Add each city URL to `startUrls` and the actor processes them in order within your item cap.

**What image sizes are available?**
Pick from the presets in `imageSize`, such as `984x658`, `1400x720`, or `1880x900`. The chosen size is applied to every image link.

### Notes

This actor reads listing pages the same way a visitor would and returns the data those pages already show. Use the page limits and item cap to keep runs focused on the locations you care about.

# Actor input Schema

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

One or more ForRentUniversity location pages to extract listings from. Paste the full URL of a city or campus housing results page.

## `imageSize` (type: `string`):

Resolution used to build listing image URLs, in WIDTHxHEIGHT form.

## `maxPagesPerUrl` (type: `integer`):

Maximum number of result pages to paginate through for each location. Each page returns up to 40 listings.

## `maxItems` (type: `integer`):

Maximum number of listings to collect per run across all locations. One result page holds up to 40 listings.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.forrentuniversity.com/tx/austin-student-housing"
  ],
  "imageSize": "984x658",
  "maxPagesPerUrl": 5,
  "maxItems": 40,
  "requestTimeoutSecs": 30
}
```

# Actor output Schema

## `listings` (type: `string`):

All extracted listings, one item per property.

# 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": [
        "https://www.forrentuniversity.com/tx/austin-student-housing"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/forrentuniversity-listings-extractor").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": ["https://www.forrentuniversity.com/tx/austin-student-housing"] }

# Run the Actor and wait for it to finish
run = client.actor("kawsar/forrentuniversity-listings-extractor").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": [
    "https://www.forrentuniversity.com/tx/austin-student-housing"
  ]
}' |
apify call kawsar/forrentuniversity-listings-extractor --silent --output-dataset

```

## MCP server setup

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

```

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/hyMeuKcle7BqM1gf2/builds/5QaQeKXrHVpnXWWFr/openapi.json
