Halls API API Reference
Please contact your account manager with any queries, or if in doubt email [email protected].
Request Rate Limiting
To ensure the stability and performance of our API for all users, we have implemented a request rate limit. This rate limit is designed to prevent excessive usage that could impact the service quality for other users.Rate Limit Details:
- Request Limit: 60 requests
- Time Window: 60 seconds (1 minute)
This means that within any given 60-second window, a maximum of 60 requests can be made to the API from a single client (identified by an API key or IP address). If the number of requests exceeds this limit, additional requests will be temporarily blocked until the start of the next time window.
API Endpoint
https://data.studentcrowd.net/api/v1.0
Contact: [email protected]
Schemes: https
Version: 1.0.0
Authentication
APIKeyHeader
Halls
List
Number of results to return
List of Halls
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"data": [
{
"type": "hall",
"id": "string (uuid)",
"attributes": {
"name": "Kingsley Lodge",
"type": "string",
"landlord": "string",
"postcode": "string",
"catering": "string",
"available": true,
"availability": "available",
"minimumPrice": 134.5,
"pricePersonWeek": 67.25,
"currency": "gbp",
"billingCycle": "string",
"beds": 30,
"city": "Chester",
"country": "United Kingdom",
"features": [
"Bike Storage",
"CCTV / Surveillance Cameras",
"Contents Insurance",
"Onsite Cafeteria",
"WiFi In Room (All Free)"
],
"rating": 4.14,
"criteriaRatings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"openingDate": "2020/8",
"latitude": 53.19,
"longitude": -2.891,
"accommodationType": "PBSA",
"propSet": {
"quality": "B",
"price": "2",
"location": [
{
"tag": "Near-Campus",
"reference": "Nottingham Trent University (NTU)",
"ukprn": "10004797"
}
],
"label": "B 2 Near-Campus, City"
},
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"roomTypes": {
"links": {
"related": "/halls/{hallId}/room-types"
}
},
"reviews": {
"links": {
"related": "/halls/{hallId}/reviews"
}
}
},
"links": {
"self": "/halls/{hallId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
Hall
Hall ID
Hall Object
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"type": "hall",
"id": "string (uuid)",
"attributes": {
"name": "Kingsley Lodge",
"type": "string",
"landlord": "string",
"postcode": "string",
"catering": "string",
"available": true,
"availability": "available",
"minimumPrice": 134.5,
"pricePersonWeek": 67.25,
"currency": "gbp",
"billingCycle": "string",
"beds": 30,
"city": "Chester",
"country": "United Kingdom",
"features": [
"Bike Storage",
"CCTV / Surveillance Cameras",
"Contents Insurance",
"Onsite Cafeteria",
"WiFi In Room (All Free)"
],
"rating": 4.14,
"criteriaRatings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"openingDate": "2020/8",
"latitude": 53.19,
"longitude": -2.891,
"accommodationType": "PBSA",
"propSet": {
"quality": "B",
"price": "2",
"location": [
{
"tag": "Near-Campus",
"reference": "Nottingham Trent University (NTU)",
"ukprn": "10004797"
}
],
"label": "B 2 Near-Campus, City"
},
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"roomTypes": {
"links": {
"related": "/halls/{hallId}/room-types"
}
},
"reviews": {
"links": {
"related": "/halls/{hallId}/reviews"
}
}
},
"links": {
"self": "/halls/{hallId}"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
Reviews
Hall ID
Number of results to return
List of Reviews by Hall
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"data": [
{
"type": "review",
"id": "string (uuid)",
"attributes": {
"text": "I have loved my time at this University",
"ratings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"userType": "CURRENT",
"studentType": "UK",
"averageRating": 4.14,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
}
},
"links": {
"self": "/reviews/{hallId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
Room Types
Hall ID
Number of results to return
List of Room Types by Hall
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"data": [
{
"type": "roomType",
"id": "string (uuid)",
"attributes": {
"name": "Deluxe suite",
"arrangement": "apartment",
"bedroomOccupancy": 1,
"priceArrangement": "per_room",
"price": 134.5,
"pricePersonWeek": 67.25,
"squareMeters": {
"min": 23,
"max": 27
},
"available": true,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
},
"roomTenancies": {
"links": {
"related": "/room-types/{roomTypeId}/room-tenancies"
}
}
},
"links": {
"self": "/room-types/{roomTypeId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
Room Types
List
Number of results to return
List of Room Types
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"data": [
{
"type": "roomType",
"id": "string (uuid)",
"attributes": {
"name": "Deluxe suite",
"arrangement": "apartment",
"bedroomOccupancy": 1,
"priceArrangement": "per_room",
"price": 134.5,
"pricePersonWeek": 67.25,
"squareMeters": {
"min": 23,
"max": 27
},
"available": true,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
},
"roomTenancies": {
"links": {
"related": "/room-types/{roomTypeId}/room-tenancies"
}
}
},
"links": {
"self": "/room-types/{roomTypeId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
RoomType
RoomType ID
RoomType Object
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"type": "roomType",
"id": "string (uuid)",
"attributes": {
"name": "Deluxe suite",
"arrangement": "apartment",
"bedroomOccupancy": 1,
"priceArrangement": "per_room",
"price": 134.5,
"pricePersonWeek": 67.25,
"squareMeters": {
"min": 23,
"max": 27
},
"available": true,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
},
"roomTenancies": {
"links": {
"related": "/room-types/{roomTypeId}/room-tenancies"
}
}
},
"links": {
"self": "/room-types/{roomTypeId}"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
Room Tenancies
List
Number of results to return
List of Room Tenancies
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"data": [
{
"type": "roomTenancy",
"id": "string (uuid)",
"attributes": {
"type": "flexible",
"price": 174.08,
"pricePersonWeek": 87.04,
"available": true,
"startDate": "2021-09-22T00:00:00.000Z",
"academicYear": "21/22",
"minimumStay": 180,
"incentiveText": "£150 cashback for 22/23 bookings",
"incentiveValue": 150,
"createdAt": "2021-11-29T10:54:06+00:00",
"updatedAt": "2021-11-29T10:54:06+00:00"
},
"relationships": {
"roomType": {
"links": {
"related": "/room-types/{roomTypeId}"
}
}
},
"links": {
"self": "/room-tenancies/{roomTenancyId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
RoomTenancy
Room Tenancy ID
RoomTenancy Object
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"type": "roomTenancy",
"id": "string (uuid)",
"attributes": {
"type": "flexible",
"price": 174.08,
"pricePersonWeek": 87.04,
"available": true,
"startDate": "2021-09-22T00:00:00.000Z",
"academicYear": "21/22",
"minimumStay": 180,
"incentiveText": "£150 cashback for 22/23 bookings",
"incentiveValue": 150,
"createdAt": "2021-11-29T10:54:06+00:00",
"updatedAt": "2021-11-29T10:54:06+00:00"
},
"relationships": {
"roomType": {
"links": {
"related": "/room-types/{roomTypeId}"
}
}
},
"links": {
"self": "/room-tenancies/{roomTenancyId}"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
Reviews
List
Number of results to return
List of Reviews
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"data": [
{
"type": "review",
"id": "string (uuid)",
"attributes": {
"text": "I have loved my time at this University",
"ratings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"userType": "CURRENT",
"studentType": "UK",
"averageRating": 4.14,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
}
},
"links": {
"self": "/reviews/{hallId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
Review
Review ID
Review Object
Too Many Requests Error
Response Content-Types: application/json
Response Example (200 OK)
{
"type": "review",
"id": "string (uuid)",
"attributes": {
"text": "I have loved my time at this University",
"ratings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"userType": "CURRENT",
"studentType": "UK",
"averageRating": 4.14,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
}
},
"links": {
"self": "/reviews/{hallId}"
}
}
Response Example (429 Too Many Requests)
{
"code": 429,
"error": "Too Many Requests",
"message": "You are being rate limited because you exceeded 60 requests for a period of 60 seconds."
}
Schema Definitions
Hall: object
- type: string
- id: string (uuid)
- attributes: object
- relationships: object
- links: object
Example
{
"type": "hall",
"id": "string (uuid)",
"attributes": {
"name": "Kingsley Lodge",
"type": "string",
"landlord": "string",
"postcode": "string",
"catering": "string",
"available": true,
"availability": "available",
"minimumPrice": 134.5,
"pricePersonWeek": 67.25,
"currency": "gbp",
"billingCycle": "string",
"beds": 30,
"city": "Chester",
"country": "United Kingdom",
"features": [
"Bike Storage",
"CCTV / Surveillance Cameras",
"Contents Insurance",
"Onsite Cafeteria",
"WiFi In Room (All Free)"
],
"rating": 4.14,
"criteriaRatings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"openingDate": "2020/8",
"latitude": 53.19,
"longitude": -2.891,
"accommodationType": "PBSA",
"propSet": {
"quality": "B",
"price": "2",
"location": [
{
"tag": "Near-Campus",
"reference": "Nottingham Trent University (NTU)",
"ukprn": "10004797"
}
],
"label": "B 2 Near-Campus, City"
},
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"roomTypes": {
"links": {
"related": "/halls/{hallId}/room-types"
}
},
"reviews": {
"links": {
"related": "/halls/{hallId}/reviews"
}
}
},
"links": {
"self": "/halls/{hallId}"
}
}
HallList: object
- data: object[]
- links: Links
Example
{
"data": [
{
"type": "hall",
"id": "string (uuid)",
"attributes": {
"name": "Kingsley Lodge",
"type": "string",
"landlord": "string",
"postcode": "string",
"catering": "string",
"available": true,
"availability": "available",
"minimumPrice": 134.5,
"pricePersonWeek": 67.25,
"currency": "gbp",
"billingCycle": "string",
"beds": 30,
"city": "Chester",
"country": "United Kingdom",
"features": [
"Bike Storage",
"CCTV / Surveillance Cameras",
"Contents Insurance",
"Onsite Cafeteria",
"WiFi In Room (All Free)"
],
"rating": 4.14,
"criteriaRatings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"openingDate": "2020/8",
"latitude": 53.19,
"longitude": -2.891,
"accommodationType": "PBSA",
"propSet": {
"quality": "B",
"price": "2",
"location": [
{
"tag": "Near-Campus",
"reference": "Nottingham Trent University (NTU)",
"ukprn": "10004797"
}
],
"label": "B 2 Near-Campus, City"
},
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"roomTypes": {
"links": {
"related": "/halls/{hallId}/room-types"
}
},
"reviews": {
"links": {
"related": "/halls/{hallId}/reviews"
}
}
},
"links": {
"self": "/halls/{hallId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Review: object
- type: string
- id: string (uuid)
- attributes: object
- relationships: object
- links: object
Example
{
"type": "review",
"id": "string (uuid)",
"attributes": {
"text": "I have loved my time at this University",
"ratings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"userType": "CURRENT",
"studentType": "UK",
"averageRating": 4.14,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
}
},
"links": {
"self": "/reviews/{hallId}"
}
}
ReviewList: object
- data: object[]
- links: Links
Example
{
"data": [
{
"type": "review",
"id": "string (uuid)",
"attributes": {
"text": "I have loved my time at this University",
"ratings": {
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
},
"userType": "CURRENT",
"studentType": "UK",
"averageRating": 4.14,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
}
},
"links": {
"self": "/reviews/{hallId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Rating: object
- value: number (float) , { x ∈ ℝ | 1 ≤ x ≤ 5 }
- management: number (float) , { x ∈ ℝ | 1 ≤ x ≤ 5 }
- socialSpaces: number (float) , { x ∈ ℝ | 1 ≤ x ≤ 5 }
- internetWifi: number (float) , { x ∈ ℝ | 1 ≤ x ≤ 5 }
- location: number (float) , { x ∈ ℝ | 1 ≤ x ≤ 5 }
- cleaning: number (float) , { x ∈ ℝ | 1 ≤ x ≤ 5 }
- socialExperience: number (float) , { x ∈ ℝ | 1 ≤ x ≤ 5 }
Example
{
"value": 5,
"management": 5,
"socialSpaces": 1,
"internetWifi": 4,
"location": 4,
"cleaning": 5,
"socialExperience": 4
}
RoomType: object
- type: string
- id: string (uuid)
- attributes: object
- relationships: object
- links: object
Example
{
"type": "roomType",
"id": "string (uuid)",
"attributes": {
"name": "Deluxe suite",
"arrangement": "apartment",
"bedroomOccupancy": 1,
"priceArrangement": "per_room",
"price": 134.5,
"pricePersonWeek": 67.25,
"squareMeters": {
"min": 23,
"max": 27
},
"available": true,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
},
"roomTenancies": {
"links": {
"related": "/room-types/{roomTypeId}/room-tenancies"
}
}
},
"links": {
"self": "/room-types/{roomTypeId}"
}
}
RoomTypeList: object
- data: object[]
- links: Links
Example
{
"data": [
{
"type": "roomType",
"id": "string (uuid)",
"attributes": {
"name": "Deluxe suite",
"arrangement": "apartment",
"bedroomOccupancy": 1,
"priceArrangement": "per_room",
"price": 134.5,
"pricePersonWeek": 67.25,
"squareMeters": {
"min": 23,
"max": 27
},
"available": true,
"createdAt": "2017-11-29T10:54:06+00:00",
"updatedAt": "2017-11-29T10:54:06+00:00"
},
"relationships": {
"hall": {
"links": {
"related": "/halls/{hallId}"
}
},
"roomTenancies": {
"links": {
"related": "/room-types/{roomTypeId}/room-tenancies"
}
}
},
"links": {
"self": "/room-types/{roomTypeId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
RoomTenancy: object
- type: string
- id: string (uuid)
- attributes: object
- relationships: object
- links: object
Example
{
"type": "roomTenancy",
"id": "string (uuid)",
"attributes": {
"type": "flexible",
"price": 174.08,
"pricePersonWeek": 87.04,
"available": true,
"startDate": "2021-09-22T00:00:00.000Z",
"academicYear": "21/22",
"minimumStay": 180,
"incentiveText": "£150 cashback for 22/23 bookings",
"incentiveValue": 150,
"createdAt": "2021-11-29T10:54:06+00:00",
"updatedAt": "2021-11-29T10:54:06+00:00"
},
"relationships": {
"roomType": {
"links": {
"related": "/room-types/{roomTypeId}"
}
}
},
"links": {
"self": "/room-tenancies/{roomTenancyId}"
}
}
RoomTenancyList: object
- data: object[]
- links: Links
Example
{
"data": [
{
"type": "roomTenancy",
"id": "string (uuid)",
"attributes": {
"type": "flexible",
"price": 174.08,
"pricePersonWeek": 87.04,
"available": true,
"startDate": "2021-09-22T00:00:00.000Z",
"academicYear": "21/22",
"minimumStay": 180,
"incentiveText": "£150 cashback for 22/23 bookings",
"incentiveValue": 150,
"createdAt": "2021-11-29T10:54:06+00:00",
"updatedAt": "2021-11-29T10:54:06+00:00"
},
"relationships": {
"roomType": {
"links": {
"related": "/room-types/{roomTypeId}"
}
}
},
"links": {
"self": "/room-tenancies/{roomTenancyId}"
}
}
],
"links": {
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}
}
Links: object
- self: string (uri)
- first: string (uri)
- prev: string (uri)
- next: string (uri)
- last: string (uri)
Example
{
"self": "/{path}?page=1",
"first": "/{path}?page=1",
"prev": "/{path}?page=2",
"next": "/{path}?page=4",
"last": "/{path}?page=10"
}