Storia APIstoria.ro ↗
Search apartment rental listings across Romanian cities via the Storia.ro API. Filter by price, area, rooms, and city. Returns paginated listing data.
What is the Storia API?
The Storia.ro API gives programmatic access to apartment-for-rent listings across Romania through 1 endpoint, search_apartments. Each response includes listing fields such as id, title, price, area, rooms, and location, along with a pagination object covering total items and pages. You can scope searches to specific cities like București, Cluj, or Timișoara and apply multiple filters in a single request.
curl -X GET 'https://api.parse.bot/scraper/6c5ffe81-3453-4202-92a1-4ea306dc80dd/search_apartments?city=bucuresti&page=1&rooms=2&area_max=120&area_min=30&price_max=1000&price_min=200' \ -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 storia-ro-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: Storia Romania apartment rental search — bounded, re-runnable."""
from parse_apis.storia_ro_api import Storia, Rooms, CityNotFound
client = Storia()
# Search 2-room apartments in Bucharest under 700 EUR
for apt in client.apartments.search(city="bucuresti", rooms=Rooms.TWO, price_max="700", limit=5):
print(apt.title, apt.price_value, apt.price_currency, apt.rooms, apt.area_sqm)
# Narrow search: apartments in Cluj with area constraints
apt = client.apartments.search(
city="cluj", price_min="300", price_max="600", area_min="40", limit=1
).first()
if apt:
print(apt.title, apt.neighborhood, apt.province)
print("Tags:", apt.tags, "Floor:", apt.floor)
# Handle city-not-found errors gracefully
try:
for a in client.apartments.search(city="nonexistent", limit=1):
print(a.title)
except CityNotFound as exc:
print(f"City not found: {exc.city}")
print("exercised: apartments.search with city/price/rooms/area filters + CityNotFound error")
Search apartments available for rent in a given Romanian city. Supports filtering by price range, area range, and number of rooms. Results are paginated with 36 items per page. The city parameter uses Storia's location slug format (e.g. 'bucuresti', 'cluj', 'timisoara', 'iasi', 'constanta', 'brasov').
| Param | Type | Description |
|---|---|---|
| city | string | City slug for the search location (e.g. 'bucuresti', 'cluj', 'timisoara', 'iasi', 'constanta', 'brasov'). |
| page | integer | Page number for pagination (1-based). |
| rooms | string | Number of rooms filter. |
| area_max | string | Maximum apartment area in square meters. |
| area_min | string | Minimum apartment area in square meters. |
| price_max | string | Maximum monthly rent price in EUR. |
| price_min | string | Minimum monthly rent price in EUR. |
{
"type": "object",
"fields": {
"items": "array of apartment listings with id, title, price, area, rooms, location, etc.",
"pagination": "object with total_items, total_pages, current_page, items_per_page"
},
"sample": {
"data": {
"items": [
{
"id": 10424351,
"slug": "2-camere-de-nchiriat-IDHJQH",
"tags": [
"AIR_CONDITIONING",
"SEPARATE_KITCHEN"
],
"floor": "THIRD",
"rooms": "TWO",
"title": "2 Camere de Închiriat",
"street": null,
"area_sqm": 45,
"province": "Bucuresti (judet)",
"image_url": "https://ireland.apollo.olxcdn.com/v1/files/.../image;s=655x491;q=80",
"agency_name": "kasata",
"is_promoted": false,
"price_value": 500,
"date_created": "2026-06-29 16:02:05",
"neighborhood": "Militari",
"price_currency": "EUR",
"is_private_owner": false,
"short_description": "Confort, locație și un apartament pregătit pentru mutare!",
"location_hierarchy": [
"Bucuresti",
"Sectorul 6",
"Militari"
]
}
],
"pagination": {
"total_items": 3448,
"total_pages": 96,
"current_page": 1,
"items_per_page": 36
}
},
"status": "success"
}
}About the Storia API
What the API Returns
The search_apartments endpoint returns an array of apartment rental listings from Storia.ro, Romania's residential property platform. Each item in the items array carries at minimum an id, title, price (monthly rent in EUR), area (square meters), rooms count, and location details. The pagination object on every response tells you total_items, total_pages, current_page, and items_per_page (fixed at 36 per page).
Filtering Options
You can narrow results using any combination of the available query parameters. The city parameter accepts Storia's location slug format — valid values include bucuresti, cluj, timisoara, iasi, constanta, and brasov. Price range is controlled by price_min and price_max (in EUR). Area range uses area_min and area_max (in square meters). The rooms parameter filters by room count. All parameters are optional; omitting them returns a broad listing set.
Pagination
Results are paginated at 36 items per page. Use the page parameter (1-based) to walk through result sets. The pagination.total_pages field tells you how many pages exist for a given filter combination, so you can iterate programmatically to collect a full dataset for a city or filter slice.
Coverage and Limitations
The API covers apartment rentals only — not house sales, commercial properties, or land listings. Geographic coverage is limited to Romanian cities supported by Storia.ro's slug system. Listings reflect what is currently active on the platform; historical or expired listings are not accessible.
The Storia API is a managed, monitored endpoint for storia.ro — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when storia.ro 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 storia.ro 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?+
- Track average rental prices per city using the
pricefield across paginated results - Build a rental price alert system by polling
search_apartmentswithprice_maxfilters for specific cities - Aggregate room-count distributions across a city's rental market using the
roomsfilter - Compare price-per-square-meter across cities by combining
priceandareafields - Generate rental market reports for București, Cluj, or Timișoara segmented by area range
- Populate a relocation tool with current rental inventory filtered by
roomsandprice_max
| 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 Storia.ro provide an official developer API?+
What does `search_apartments` return beyond the listing price?+
id, title, price (monthly rent in EUR), area in square meters, rooms count, and location details. The pagination object on the same response exposes total_items, total_pages, current_page, and items_per_page so you can iterate through a full result set.Does the API cover property sales or only rentals?+
Can I retrieve listings for multiple cities in one request?+
city parameter accepts a single city slug per request. To cover multiple cities you would need to issue one request per city. The supported slugs include bucuresti, cluj, timisoara, iasi, constanta, and brasov, matching Storia.ro's location system.