# AmberStudent Accommodation Scraper  \[💰$1.5/1000 results] (`confidential_gnat/amberstudent-accomodation-scraper`) Actor

Scrapes AmberStudent student accommodation listings (pricing, availability, photos, amenities, location and reviews) from city, area or individual property pages.

- **URL**: https://apify.com/confidential\_gnat/amberstudent-accomodation-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Categories:**
- **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?

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

## AmberStudent Accommodation Scraper

Extracts detailed **student accommodation listings from [AmberStudent](https://amberstudent.com)** — property name, weekly pricing, availability, photos, videos, address/location, amenities, tags, reviews and more — from either a city/area search page or an individual property listing page. Outputs structured JSON (exportable to CSV/Excel) with a full property record per row.

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

### ✨ Features

- **Accommodation listing extraction** — captures property name, canonical slug, pricing (currency, weekly min/max price), availability, photos, videos, full address and coordinates, amenities, tags, review rating/count, metadata and the external provider source link.
- **Pagination support** — automatically follows `next page` on city/area search results to keep collecting listings until the per-URL item limit is reached.
- **Budget-aware crawl** — respects `maxItems` per start URL and stops queueing once the limit is reached.
- **Cross-run deduplication caching** — optional `projectName` skips accommodation records already scraped in an earlier run, so repeated runs never re-scrape or re-charge you for the same data.

### 🔧 Input Configuration

| Field                 | Type    | Required | Default                                           | Description                                                                 |
| --------------------- | ------- | -------- | ------------------------------------------------- | --------------------------------------------------------------------------- |
| `startUrls`           | array   | ✅        | `https://amberstudent.com/places/search/arncliffe-1811238362366` | AmberStudent city or area search URLs, or individual property (listing) URLs, to start crawling from. |
| `maxItems`            | integer | ✅        | `3`                                               | Maximum number of items to scrape per start URL.                            |
| `proxyConfiguration`  | object  | —        | `{ "useApifyProxy": false }`                      | Proxy configuration to use for requests. Defaults to no proxy to minimize run costs. |
| `projectName`         | string  | —        | *(empty)*                                         | Optional. Enables cross-run caching: set the same name across runs to skip records already scraped (empty = no deduplication). |

**Supported URL types:**

- City / area search pages, e.g. `https://amberstudent.com/places/search/sydney-1811019193619`
- Neighbourhood search pages, e.g. `https://amberstudent.com/places/search/arncliffe-1811238362366`
- Individual property (detail) pages, e.g. `https://amberstudent.com/places/room-in-a-5-bed-apartment-hocking-avenue-earlwood-australia-nsw-2206-2507183612970`

### 📦 Output

The dataset exposes 1 view, **overview**, a compact table of the main listing fields.

**Sample output:**

```json
{
  "id": 3617491,
  "name": "Dulwich Hill, Sydney",
  "canonical_name": "dulwich-hill-sydney-2608033251041",
  "pricing": {
    "currency": "aud",
    "duration": "weekly",
    "min_price": 160,
    "max_price": 300,
    "min_available_price": 160,
    "max_available_price": 300,
    "refundable_token": 50
  },
  "available": true,
  "images": [
    {
      "path": "https://assets.amberstudent.com/inventories/3617510/0129dc3c.webp",
      "type": "bedroom",
      "blurred": false,
      "caption": "Private Room - Bedroom",
      "category": "bedroom",
      "featured": true,
      "base_path": "https://assets.amberstudent.com/inventories/3617510/0129dc3c.webp",
      "watermark_present": false
    },
    {
      "path": "https://assets.amberstudent.com/inventories/3617491/556bd25c.webp",
      "type": "common_area",
      "blurred": true,
      "caption": "Common Area",
      "category": "common_area",
      "base_path": "https://assets.amberstudent.com/inventories/3617491/556bd25c.webp",
      "watermark_present": false
    }
  ],
  "videos": [
    {
      "path": "https://videos.amberstudent.com/res/videos/94144114.mp4?h=720",
      "type": "tour",
      "caption": "Property Tour",
      "duration": "",
      "platform": "gumlet",
      "upload_date": "2026-08-10",
      "thumbnail_url": "https://videos.amberstudent.com/res/videos/94144114.mp4?h=720&thumbnail=true&thumbnail-height=300"
    }
  ],
  "location": {
    "name": "407 Marrickville Rd",
    "primary": "407 Marrickville Rd",
    "secondary": "Dulwich Hill NSW 2203, Australia",
    "route": {
      "long_name": "Marrickville Road",
      "short_name": "Marrickville Rd"
    },
    "country": {
      "long_name": "Australia",
      "short_name": "AU"
    },
    "state": {
      "long_name": "New South Wales",
      "short_name": "NSW"
    },
    "locality": {
      "long_name": "Dulwich Hill",
      "short_name": "Dulwich Hill"
    },
    "district": {
      "long_name": "Inner West Council",
      "short_name": "Inner West Council"
    },
    "postal_code": {
      "long_name": "2203",
      "short_name": "2203"
    },
    "street_number": {
      "long_name": "407",
      "short_name": "407"
    },
    "location_bounds": {
      "northeast": {
        "lat": -33.904689019708506,
        "lng": 151.1467995302915
      },
      "southwest": {
        "lat": -33.907386980291506,
        "lng": 151.1441015697085
      }
    },
    "location_coordinates": {
      "lat": -33.9059386,
      "lng": 151.1455902
    },
    "location_place_id": "EjU0MDcgTWFycmlja3ZpbGxlIFJkLCBEdWx3aWNoIEhpbGwgTlNXIDIyMDMsIEF1c3RyYWxpYSIxEi8KFAoSCUsZZZ15sBJrEbWh4FBNxdGsEJcDKhQKEglbNvDpZLASaxHfSRsshfQ0fA"
  },
  "tags": [
    "social_events",
    "bills_included"
  ],
  "features": [
    {
      "name": "Bills Included",
      "type": "bills_included",
      "values": [
        {
          "name": "Electricity",
          "type": "Electricity",
          "icon": "https://prod-static-assets.amberstudent.com/images/electricity.svg"
        },
        {
          "name": "Water",
          "type": "Water",
          "icon": "https://prod-static-assets.amberstudent.com/images/water.svg"
        },
        {
          "name": "Gas",
          "type": "Gas",
          "icon": "https://prod-static-assets.amberstudent.com/images/gas.svg"
        },
        {
          "name": "Wifi",
          "type": "Wifi",
          "icon": "https://prod-static-assets.amberstudent.com/images/wifi.svg"
        }
      ]
    },
    {
      "name": "Property Services",
      "type": "property_services",
      "values": [
        {
          "name": "10 Minute Walk/3 Minute Bike Ride to Dulwich Hill Train Station",
          "type": "location_benefit",
          "icon": "https://prod-static-assets.amberstudent.com/images/bicycle.svg"
        },
        {
          "name": "Free Daily Breakfast",
          "type": "comon_service",
          "icon": "https://prod-static-assets.amberstudent.com/images/breakfast-bar.svg"
        },
        {
          "name": "Full Time Staff Provided",
          "type": "on_site_maintenance_team",
          "icon": "https://prod-static-assets.amberstudent.com/images/reception-staff.svg"
        },
        {
          "name": "Common Kitchen Cleaned Every Day",
          "type": "housekeeping",
          "icon": "https://prod-static-assets.amberstudent.com/images/common-service.svg"
        },
        {
          "name": "Bathrooms Twice a Week",
          "type": "housekeeping",
          "icon": "https://prod-static-assets.amberstudent.com/images/bathroom.svg"
        }
      ]
    }
  ],
  "meta_short": {
    "cro_tags": {
      "is_student_choice": "false",
      "is_amber_exclusive": "false",
      "is_filling_fast_v2": "false",
      "is_immediate_move_in": "false",
      "is_breakfast_included": "false",
      "is_property_of_the_day": "false"
    },
    "total_virtual_views_count": 0,
    "total_videos_count": 1,
    "is_partnered": true,
    "payment": true,
    "lease_duration_unit": "week",
    "guarantor_required": "information_unavailable",
    "unit_type": "apartment"
  },
  "destination_distances": [],
  "source_link": "https://www.comodohomes.com/dulwich-hill",
  "inventory_featured_image_path": "https://assets.amberstudent.com/inventories/3617510/0129dc3c.webp",
  "active_children_count": 2,
  "provider_id": 12778
}
```

### 💡 Uses of This Data

- Campus-adjacent accommodation discovery and shortlisting
- Comparing weekly prices, room types, and availability across amenities
- Monitoring student housing supply and availability over time
- Mapping accommodation close to specific universities and transport hubs

### 🚀 How to Use

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/).

### ⚠️ Limitations & Known Issues

- **Rate limiting** — The target site rate-limits requests by IP during sustained high-volume runs. For large-scale scraping, insert delays or use a proxy to avoid temporary blocks.

### 📝 Notes

- **Cross-run deduplication prevents extra charges** — Set the same `projectName` on every run and the actor remembers which accommodation records it has already scraped (keyed by the record's canonical name, stored per account). Later runs skip those records entirely, so you only pay to scrape genuinely new accommodations and never re-run cost on data you already collected. To start over on a project, simply use a new or different `projectName`.
- **Proxy recommended for large-scale scraping** — For high-volume runs, enable an Apify Residential or Datacenter proxy to avoid IP-based rate limiting.
- **API integration** — This actor can be called as an API from any automation platform (Zapier, Make, n8n, custom scripts).

### 🔗 Other Actors

- 📰 [Google News AI Scraper](https://apify.com/confidential_gnat/google-news-ai-scraper) — Search Google News by keyword, optionally extract full article text and AI-generated summaries via OpenRouter, and never re-scrape the same article twice across runs thanks to built-in cross-run deduplication.
- 📋 [BidNet Direct \[Closed 🔴\] Bid Opportunities Scraper](https://apify.com/confidential_gnat/bidnetdirect-closed-bid-opportunities-scraper) — Scrapes closed government bid and RFP solicitations from BidNet Direct, including title, issuing organization, location, publication date, closing date, and days since closing.
- 📋 [BidNet Direct \[Open ✅\] Bid Opportunities Scraper](https://apify.com/confidential_gnat/bidnetdirect-open-bid-opportunities-scraper) — Scrapes open government bid and RFP solicitations from BidNet Direct, including title, publication date, closing date, and days remaining until closing.
- ⛪ [Church Finder Scraper \[💰 Free\]](https://apify.com/confidential_gnat/churchfinder-scraper) — Scrape church listings and profiles from Church Finder. Extracts church name, denomination, address, phone number, service times, ratings and reviews from city search pages or individual church URLs.
- 🎟️ [Gametime Events Website Scraper](https://apify.com/confidential_gnat/gametime-events-scraper) — Scrapes event, venue, and ticket offer data from Gametime. Supports search, group/team, and single-event URLs, returning schedule, location, performer, and pricing details — including per-offer section, row, seat count, and deal rating — as structured JSON with pagination support.

### 💬 Support & Contact

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

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

# Actor input Schema

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

URLs to start crawling.

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

Maximum number of items to scrape per start URL.

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

Proxy configuration to use for requests.

## `projectName` (type: `string`):

Records already scraped under this project name in a previous run are skipped. Leave empty to disable cross-run caching.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://amberstudent.com/places/search/arncliffe-1811238362366"
    }
  ],
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "projectName": ""
}
```

# 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://amberstudent.com/places/search/arncliffe-1811238362366"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/amberstudent-accomodation-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://amberstudent.com/places/search/arncliffe-1811238362366" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/amberstudent-accomodation-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://amberstudent.com/places/search/arncliffe-1811238362366"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call confidential_gnat/amberstudent-accomodation-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/amberstudent-accomodation-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/cSbFXySyzYpGys9F5/builds/EgfdD5b9np9lXI40F/openapi.json
