# UniAcco Student Accommodation Scraper (`confidential_gnat/uniacco-property-scraper`) Actor

Scrapes student accommodation listings from UniAcco, including price range, address, amenities, rating and reviews.

- **URL**: https://apify.com/confidential\_gnat/uniacco-property-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## UniAcco Student Accommodation Scraper

**Scrape student accommodation listings from UniAcco (uniacco.com)** — pull title, description, weekly price range, full address, coordinates, contact number, amenities, rating and guest reviews for every property on a city listing page or a single property URL. Results export as **JSON, CSV or Excel**, or feed straight into your own pipeline through the **API**. Paste a city listing URL or a property URL and press Start — no configuration required.

**Target website:** [uniacco.com](https://uniacco.com)

### ✨ Features of this UniAcco scraper

- **Property extraction** — title, description, weekly price range, full address, coordinates, contact number, amenities, rating and reviews.
- **Review capture** — up to 10 published reviews per property, with author, rating and date.
- **Pagination support** — walks listing pages automatically until the per-URL item limit is reached.
- **Automatic URL detection** — listing and property URLs are told apart automatically, so you can mix both in Start URLs.
- **Whole-site mode** — one toggle crawls the site's main sections instead of a hand-picked list.
- **Cross-run caching** — an optional project name skips properties already scraped in an earlier run.
- **Proxy support** — optional Apify proxy configuration (datacenter or residential).

### 🚀 How to scrape UniAcco listings in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Fill in the **Input** fields (at least one start URL is required).
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### 💰 Pricing

This actor uses **pay-per-result** billing based on the compute units a run consumes.

- New Apify accounts include **$5 of free monthly credit**.
- Listings render in a real browser, so runs use more compute per item than a plain HTTP scraper — keep `maxItems` tight for daily monitoring runs to control cost.

### 🔧 Input configuration

| Field                | Type    | Required | Default                                      | Description                                                                                                                                               |
| -------------------- | ------- | -------- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`          | array   | ✅       | `[{"url": "https://uniacco.com/uk/london"}]` | UniAcco city listing URLs (`/{country}/{city}`) or direct property URLs (`/{country}/{city}/{property}`). The type of each URL is detected automatically. |
| `maxItems`           | integer | —        | `3`                                          | Maximum number of properties to scrape for each start URL.                                                                                                |
| `scrapeWholeSite`    | boolean | —        | `false`                                      | Ignore Start URLs and crawl UniAcco's main city listing pages instead.                                                                                    |
| `cacheProjectName`   | string  | —        | —                                            | Optional. When set, properties already scraped under this project name in a previous run are skipped instead of being scraped again.                      |
| `proxyConfiguration` | object  | —        | `{"useApifyProxy": false}`                   | UniAcco responds fine without a proxy. Enable datacenter proxies first if you start seeing blocks, and residential only if datacenter still fails.        |

**Supported URL types:**

- **Listing pages** — city pages such as `https://uniacco.com/uk/london` or `https://uniacco.com/australia/sydney`.
- **Property pages** — `https://uniacco.com/{country}/{city}/{property-slug}`, e.g. `https://uniacco.com/uk/london/dean-house`.

### 📦 UniAcco scraper output data

Each run produces a JSON dataset (exportable to CSV or Excel) with one record per property containing: `url`, `title`, `description`, `lowPrice`, `highPrice`, `currency`, `city`, `region`, `country`, `streetAddress`, `postalCode`, `latitude`, `longitude`, `telephone`, `rating`, `reviewCount`, `amenities`, `reviews` and `images`. The dataset has one view, **Overview**, showing title, city, price range, currency, rating, review count and URL in a compact table.

**Sample output:**

```json
{
    "url": "https://uniacco.com/uk/london/durham",
    "title": "Durham",
    "description": "Durham offers contemporary student accommodation in London with fully furnished rooms, modern facilities and inclusive utilities, ideal for students seeking comfort, community, and convenience close to major universities.",
    "lowPrice": 202,
    "highPrice": 207,
    "currency": "GBP",
    "city": "London",
    "region": "London",
    "country": "United Kingdom",
    "streetAddress": null,
    "postalCode": null,
    "latitude": 51.44871502662388,
    "longitude": -0.24343924568347255,
    "telephone": "+44 808 501 5198",
    "rating": 4.5,
    "reviewCount": 1,
    "amenities": ["Electric Stove", "Microwave", "Fridge", "WiFi"],
    "reviews": [
        {
            "author": "UniAcco",
            "rating": 5,
            "datePublished": null,
            "body": null
        }
    ],
    "images": ["https://uniacco.imgix.net/inventory/Whitelands_Durham-Gilesgate_halls_2.jpg"]
}
```

### 🐍 How to scrape UniAcco with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace `<YOUR_API_TOKEN>` with the token from your [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("<username>/uniacco-property-scraper").call(run_input={
    "startUrls": [{"url": "https://uniacco.com/uk/london"}],
    "maxItems": 20,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('<username>/uniacco-property-scraper').call({
    startUrls: [{ url: 'https://uniacco.com/uk/london' }],
    maxItems: 20,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL** — start a run and wait for the dataset:

```bash
curl -X POST "https://api.apify.com/v2/acts/<username>~uniacco-property-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": [{"url": "https://uniacco.com/uk/london"}], "maxItems": 20}'
```

### 💡 What you can use UniAcco student accommodation data for

- Comparing student accommodation pricing across university cities
- Tracking weekly rent changes through the booking season
- Amenity benchmarking against competing properties
- Sourcing inventory for a relocation or student-housing service
- Feeding dashboards with current availability and ratings

Student housing operators, relocation advisers and market analysts use this data to track current student accommodation pricing and amenities across university cities in the UK, Europe and Australia.

### ⚠️ Limitations & known issues

- **Listings render in a browser** — this actor drives a real browser, so runs are slower and use more memory than a plain HTTP scraper.
- **Prices are a range** — UniAcco advertises a low/high weekly range per property rather than one figure per room.

### ❓ Frequently asked questions

#### Can I scrape UniAcco legally?

Yes — this actor only collects data that is already publicly visible on UniAcco property pages; it does not log in, submit enquiries, or access account-only areas. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn* as precedent). Note that the `reviews` field contains reviewer names published on the site, so you remain responsible for complying with UniAcco's Terms of Service and applicable privacy law (e.g. GDPR) when processing it.

#### Why are prices given as a range instead of one number?

UniAcco lists a low/high weekly price range per property rather than a fixed rate per room, since actual room prices vary by room type and availability. The `lowPrice` and `highPrice` fields reflect exactly what's shown on the property page.

#### How many properties can I scrape from one URL?

Set `maxItems` to control how many properties are collected per start URL — there's no hard cap, though very high values on a single city listing will take longer and use more compute units.

#### Do I need a proxy to scrape UniAcco?

No. UniAcco responds reliably without one, which keeps run costs down. Enable datacenter proxies first if you start seeing blocks, and residential only if datacenter still fails.

#### How do I scrape UniAcco with Python?

Install `apify-client`, call this actor with your `startUrls` and `maxItems` in `run_input`, then iterate the resulting dataset — see the Python example above.

#### Can I run this UniAcco scraper on a schedule?

Yes, use [Apify Schedules](https://docs.apify.com/platform/schedules) to run it daily or weekly. Set `cacheProjectName` to the same value across scheduled runs so previously scraped properties are skipped automatically.

#### What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the **Output** tab or through the Apify API.

### 🔗 Other actors you may find useful - Student Housing and Rent Website Scrapers

| Actor                                                                                                           | Description                                                                                                                                                   |
| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 🏠 [HousingAnywhere Property Scraper](https://apify.com/confidential_gnat/housinganywhere-property-scraper)     | Scrapes rental listings from HousingAnywhere, including price, address, coordinates, room count and amenities.                                                |
| 🏡 [Spotahome Property Scraper](https://apify.com/confidential_gnat/spotahome-property-scraper)                 | Scrapes mid-term rental listings from Spotahome, including price, address, coordinates, room count and amenities.                                             |
| 🎓 [Casita Property Scraper](https://apify.com/confidential_gnat/casita-property-scraper)                       | Scrapes student accommodation listings from Casita, including property details, room types, pricing and facilities.                                           |
| 🛏️ [Amber Student Accommodation Scraper](https://apify.com/confidential_gnat/amberstudent-accomodation-scraper) | Scrapes Amber Student accommodation listings — pricing, availability, photos, amenities, location and reviews — from city, area or individual property pages. |
| 🎓 [University Living Housing Scraper](https://apify.com/confidential_gnat/universityliving-housing-scraper)    | Scrapes student housing listings and property details from University Living.                                                                                 |

### 💬 Support & Contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/uniacco-property-scraper/issues/open)

You can also find more of my actors on the page [Actor Flow ](https://apify.com/confidential_gnat).

# Actor input Schema

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

UniAcco city listing URLs (/{country}/{city}) or direct property URLs (/{country}/{city}/{property}). The type of each URL is detected automatically.

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

Maximum number of properties to scrape for each start URL.

## `scrapeWholeSite` (type: `boolean`):

Ignore Start URLs and crawl UniAcco's main city listing pages instead.

## `cacheProjectName` (type: `string`):

Optional. When set, properties already scraped under this project name in a previous run are skipped instead of being scraped again.

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

UniAcco responds fine without a proxy. Enable datacenter proxies first if you start seeing blocks, and residential only if datacenter still fails.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://uniacco.com/uk/london"
    }
  ],
  "maxItems": 3,
  "scrapeWholeSite": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://uniacco.com/uk/london"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/uniacco-property-scraper").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://uniacco.com/uk/london" }] }

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/uniacco-property-scraper").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://uniacco.com/uk/london"
    }
  ]
}' |
apify call confidential_gnat/uniacco-property-scraper --silent --output-dataset

```

## MCP server setup

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

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/RZOJa6Ji5bQkLOWK5/builds/EkbplfRaOPoChK4pn/openapi.json
