Studapart APIstudapart.com ↗
Access student housing listings across France via the Studapart API. Search rentals, residences, room types, pricing, and availability with 5 endpoints.
What is the Studapart API?
The Studapart API provides access to student housing listings across France and Europe through 5 endpoints, covering private rentals, shared apartments, and dedicated student residences. The search_listings endpoint lets you query by city slug, rent range, and pagination offset, returning fields like rentWithExpensesAmount, propertySurface, and residenceName. You can also drill into individual residences to retrieve room types, services, availability windows, and media.
curl -X GET 'https://api.parse.bot/scraper/f1b473ae-8933-43f7-a9ff-39ffd216611a/search_listings?city=paris&limit=5&offset=0&rent_max=3500&rent_min=1' \ -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 studapart-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.
from parse_apis.studapart_api import Studapart, Listing, Residence, City, ResidenceNotFound
studapart = Studapart()
# List available cities
for city in studapart.cities.list():
print(city.name, city.slug)
# Search listings in Paris with a budget filter
paris = studapart.city(slug="paris")
for listing in paris.search_listings(rent_min=300, rent_max=1200):
print(listing.residence_name, listing.rent_with_expenses_amount, listing.property_surface)
# Search residences only in Lyon
lyon = studapart.city(slug="lyon")
for residence_listing in lyon.search_residences():
print(residence_listing.residence_name, residence_listing.city, residence_listing.ad_type)
# Get detailed info for a specific residence
residence = studapart.residences.get(residence_id=472)
print(residence.residence_name, residence.address, residence.services)
# List room types within that residence
for room in residence.rooms.list():
print(room.residence_announcement_type, room.property_surface, room.rent_with_expenses_amount)
Search for student housing listings by city with rent filters. Returns paginated results containing individual room/unit entries from both private rentals and student residences. Each item includes pricing, surface area, services, availability windows, and media. Pagination is manual via offset/limit; total count is returned for client-side page calculation.
| Param | Type | Description |
|---|---|---|
| city | string | City slug to search in. Use values from list_cities endpoint. |
| limit | integer | Number of results per page. |
| offset | integer | Offset for pagination (number of items to skip). |
| rent_max | integer | Maximum monthly rent including expenses, in euros. |
| rent_min | integer | Minimum monthly rent in euros. |
{
"type": "object",
"fields": {
"items": "array of listing objects with residenceId, residenceName, city, address, rentWithExpensesAmount, propertySurface, services, availabilities, media, description, ad_type",
"limit": "integer page size used",
"total": "integer total number of matching listings",
"offset": "integer current offset"
},
"sample": {
"data": {
"items": [
{
"city": "Maisons-alfort",
"ad_type": "residence",
"address": "30 Rue Eugène Renault, 94700 Maisons-Alfort, France",
"services": [
"Bike storage",
"Television",
"CCTV"
],
"distinctId": "residence_472",
"description": "REOUVERTURE POUR LE 1ER JUIN 2026...",
"residenceId": 472,
"residenceName": "STUDEA MAISONS ALFORT 2",
"availabilities": [
{
"end": 1782770400,
"min": 9,
"start": 1780264800
}
],
"propertySurface": 18,
"rentWithExpensesAmount": 815,
"residenceAnnouncementType": "studio"
}
],
"limit": 5,
"total": 2886,
"offset": 0
},
"status": "success"
}
}About the Studapart API
What the API Covers
The Studapart API exposes student housing inventory from studapart.com across French cities and select European locations. Listings span private rentals, shared apartments, and dedicated student residences (résidences étudiantes). The search_listings endpoint accepts city, rent_min, rent_max, limit, and offset parameters and returns a paginated array of listing objects alongside a total count. City slugs for the city parameter come from list_cities, which returns each city's name, slug, and internal tags.
Residence and Room Detail
get_listing_detail_residence takes a residence_id (available in search results as residenceId) and returns a full metadata record: address, description (in French), services array, media image URLs, ownerName, and availabilities with start/end timestamps. For residences that offer multiple unit configurations, get_residence_rooms returns a rooms array where each entry carries residenceAnnouncementType (e.g. studio, T2, T3), propertySurface, rentWithExpensesAmount, and its own availabilities.
Filtering and Pagination
search_residences narrows results to residence-type listings only — useful when private rentals are not relevant to your use case. All search endpoints support limit and offset for standard pagination. The total field in responses tells you how many records match the query so you can calculate page counts without a separate call.
Coverage Notes
Descriptions returned by get_listing_detail_residence are in French, as Studapart is a French-language platform. The services field returns an array of strings naming included amenities (e.g. WiFi, laundry), but there is no structured boolean schema — services are freeform text. Availability is expressed as timestamp ranges inside availabilities arrays on both residence and room objects.
The Studapart API is a managed, monitored endpoint for studapart.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when studapart.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 studapart.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 accommodation search tool filtered by city and maximum monthly rent using
search_listings. - Aggregate room-type inventory across multiple residences by calling
get_residence_roomsfor eachresidenceId. - Track availability windows for specific residences by polling
availabilitiesarrays fromget_listing_detail_residence. - Populate a city-selector UI with canonical slugs from
list_citiesto ensure valid search queries. - Compare rent ranges across cities by running
search_listingswith different city slugs and readingrentWithExpensesAmountdistributions. - Index residence media and descriptions for a relocation guide targeting international students moving to France.
- Filter residence-only results using
search_residencesfor platforms that specifically market managed student halls.
| 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 Studapart have an official developer API?+
What does `get_residence_rooms` return and how does it differ from `get_listing_detail_residence`?+
get_listing_detail_residence returns metadata for the residence as a whole — address, description, services, media, and one representative room's rent. get_residence_rooms returns the full list of distinct unit types within that same residence, each with its own residenceAnnouncementType, propertySurface, rentWithExpensesAmount, and availabilities. Use both together when you need per-room granularity rather than a single representative figure.Does the API cover housing listings outside France?+
list_cities endpoint is the authoritative source for which city slugs are actually supported. Querying a city not present in that list may return zero results.Does the API return contact details or direct booking links for landlords or residence managers?+
ownerName from get_listing_detail_residence, but direct contact details such as phone numbers, email addresses, or booking URLs are not exposed in the current response schema. You can fork this API on Parse and revise it to add an endpoint targeting those details if they become accessible.