Amber Student APIamberstudent.com ↗
Access student accommodation listings, room types, pricing trends, and reviews from amberstudent.com via 6 structured endpoints.
What is the Amber Student API?
The Amber Student API exposes 6 endpoints covering student housing data from amberstudent.com, including property search, detailed room inventory, tenant reviews, and multi-year price trends. The search_listings endpoint returns paginated property objects with pricing, coordinates, images, and canonical slugs that feed directly into the detail endpoints. Coverage spans major student cities across the United Kingdom, United States, Australia, and more.
curl -X GET 'https://api.parse.bot/scraper/1452ac1e-93a1-4534-a1c4-9fb928512e1f/search_listings?page=1&limit=3&query=london&filters=%7B%7D&sort_key=price&sort_order=asc' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace amberstudent-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: AmberStudent SDK — search properties, drill into rooms, reviews, price trends, and popular cities."""
from parse_apis.AmberStudent_API import AmberStudent, Query, SortOrder, PropertyNotFound
client = AmberStudent()
# Search for student accommodation in London, sorted by ascending price.
for prop in client.properties.search(query=Query.LONDON, sort_order=SortOrder.ASC, limit=3):
print(prop.name, prop.pricing.currency, prop.pricing.min_price)
# Drill into one Melbourne property for room types and reviews.
prop = client.properties.search(query=Query.MELBOURNE, limit=1).first()
if prop:
for room in prop.room_types(limit=3):
print(room.name, room.pricing.currency, room.available)
for review in prop.reviews(limit=3):
print(review.rating, review.content[:60])
# Get historical price trend data.
trend = prop.price_trend()
for point in trend.trends[:3]:
print(point.year_of_date, point.month_of_date, point.price)
# Get popular cities grouped by country.
cities = client.popular_citieses.get()
print(type(cities.countries))
# Typed error handling: attempt to fetch trend for a non-existent property.
try:
missing = client.property("nonexistent-slug-000000")
missing.price_trend()
except PropertyNotFound as exc:
print(f"Property not found: {exc.slug}")
print("exercised: properties.search / room_types / reviews / price_trend / popular_citieses.get / property()")
Search for student accommodation listings by city or region. Returns paginated results with property pricing, metadata, descriptions, images, and location. Pagination via integer page counter; each result object carries a canonical_name usable as the slug for detail endpoints. Omitting query returns all active listings globally (2000+).
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Max results per page (1-100). |
| query | string | City or region canonical name to filter by (e.g. 'london', 'melbourne', 'tempe-1811051325535'). Omitting returns all active listings. |
| filters | object | Additional filter parameters as a JSON object. Keys are merged into the query parameters sent upstream. |
| sort_key | string | Key to sort results by (e.g. 'price', 'relevance'). |
| sort_order | string | Sort direction: 'asc' or 'desc'. |
{
"type": "object",
"fields": {
"agg": "object with aggregation data (may be empty)",
"meta": "object with pagination info including prev, next, count, limit, pages array, and current_page",
"result": "array of property listing objects each containing id, name, pricing, meta, description, images, location, canonical_name, and more"
},
"sample": {
"data": {
"agg": {},
"meta": {
"next": 2,
"prev": null,
"count": 2000,
"limit": 3,
"pages": [
1,
2,
3
],
"current_page": 1
},
"result": [
{
"id": 2051,
"name": "West 6th, Tempe",
"status": "active",
"pricing": {
"currency": "dollar",
"duration": "monthly",
"max_price": 5348,
"min_price": 1360
},
"available": true,
"canonical_name": "west-6th-1607141041479"
}
]
},
"status": "success"
}
}About the Amber Student API
Search and Property Details
The search_listings endpoint accepts a query parameter — a city or region canonical name such as london or melbourne — along with page, limit, sort_key, and sort_order to page and rank results. Each result object in the result array carries id, name, pricing (currency, min/max price), location (country, locality, coordinates), images, and a canonical_name slug used as input to every other endpoint. The get_property_details endpoint takes that slug and returns a full record including faqs, features (grouped amenity arrays), description sections in HTML, meta with distances and lease info, and images plus videos.
Room Types and Reviews
get_property_room_types returns all inventory variants for a property. Each item in the result array includes its own pricing, features, images, availability flag, and an active_children_with_filters array that breaks down specific lease term variants. get_property_reviews splits responses into two arrays: result for reviews with media attachments (carrying id, content, rating, user_details, and media) and resultWithoutMedia for text-only reviews with a created_at timestamp. Properties with no reviews return both arrays empty.
Price Trends and City Coverage
get_property_price_trend accepts either a numeric property ID or a full slug via the slug_or_id parameter. The trends array contains monthly data points with month_of_date, year_of_date, price, city_avg_cost, cost_difference_percent, and forecasting metrics, enabling year-over-year comparisons. The response also includes avg_region_pricing as a summary string. list_popular_cities requires no parameters and returns a country-keyed object — e.g. United Kingdom, United States, Australia — where each country maps to city objects containing property summaries with id, name, pricing, status, images, location, and aggregated reviews.
The Amber Student API is a managed, monitored endpoint for amberstudent.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when amberstudent.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official amberstudent.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a student housing comparison tool using
search_listingsprice and location fields across multiple cities. - Track rent trends over time for specific properties using monthly
priceandcity_avg_costfields fromget_property_price_trend. - Populate a university city guide with featured properties per country using
list_popular_citiesdata. - Display room-by-room pricing and lease variants on a student portal using
get_property_room_types. - Aggregate tenant sentiment by parsing
ratingandcontentfields fromget_property_reviewsacross multiple properties. - Resolve property amenities and distances to campus by reading the
featuresandmetaobjects fromget_property_details. - Power a relocation assistant that surfaces top-rated properties with images and coordinates from paginated
search_listingsresults.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does amberstudent.com have an official public developer API?+
What does `get_property_room_types` return beyond basic pricing?+
result array where each room type object includes its own pricing, features, images, an available boolean, and an active_children_with_filters array. That nested array contains lease-term-specific variants, so you can distinguish, for example, a 44-week lease from a 51-week lease for the same room type within a single property.Does `get_property_reviews` return ratings breakdowns or aggregate scores?+
rating and content field, but the endpoint does not return a pre-aggregated overall score or category-level ratings (e.g. cleanliness, value). You would need to compute aggregates from the individual review objects returned. You can fork this API on Parse and revise it to add a computed aggregate endpoint if that summary is needed.Is booking or availability reservation data exposed?+
How does pagination work in `search_listings`, and is there a limit on results per page?+
page parameter. The meta object in each response includes prev, next, count, current_page, and a pages array. The limit parameter accepts values between 1 and 100, controlling how many property objects appear in the result array per request.