Casa 47 Spain Public Housing Rental Scraper avatar

Casa 47 Spain Public Housing Rental Scraper

Pricing

from $2.00 / 1,000 housing listings

Go to Apify Store
Casa 47 Spain Public Housing Rental Scraper

Casa 47 Spain Public Housing Rental Scraper

Export every affordable rental home published by Casa 47, Spain's state housing entity: rent, size, bedrooms, elevator, storage room and GPS coordinates. Official API, no browser.

Pricing

from $2.00 / 1,000 housing listings

Rating

0.0

(0)

Developer

Andres Garcia-Baquero Leon

Andres Garcia-Baquero Leon

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Share

Export and monitor affordable rental records exposed by Casa 47, Spain's state housing entity (Entidad Estatal de Vivienda), as clean structured data in CSV, JSON, Excel or API workflows.

The public portal API returned 645 records on 6 October 2026. Inventory changes over time. This actor returns rent, size, rooms, amenities and GPS coordinates, with province/region normalization, price per square metre, filters and persistent change detection. A record exposed by the API is not proof of an open application: check status and the official call.

What you get

Each listing includes:

FieldDescription
referenceOfficial Casa 47 reference code, e.g. 26-7-VAL-004
listingIdStable internal record ID
provinceSpanish province, resolved from postcode
regionAutonomous community derived from province, with reference-code fallback
postcodePostcode (null when the portal has not published it)
priceMonthMonthly rent in EUR
currencyAlways EUR
sizeM2Built floor area in square metres
pricePerM2Computed rent per square metre
bedrooms / bathroomsRoom counts
floorFloor label, e.g. Bajo, 1
hasElevator / hasStorageRoomBuilding amenities
latitude / longitudeGPS coordinates
mapUrlReady-to-open Google Maps link
statusListing status reported by the portal
listedAtWhen the home was published
portalUrl, source, scrapedAtProvenance metadata

Example output

Selected fields from a real portal record retrieved on 6 October 2026 (not a fictional listing):

{
"reference": "26-7-VAL-004",
"province": "Valencia",
"region": "Comunidad Valenciana",
"postcode": "46550",
"priceMonth": 587.0,
"currency": "EUR",
"sizeM2": 73.0,
"pricePerM2": 8.04,
"bedrooms": 3,
"bathrooms": 1,
"floor": "Bajo",
"hasElevator": false,
"hasStorageRoom": false,
"latitude": 39.544381216274,
"longitude": -0.325596341982626,
"mapUrl": "https://www.google.com/maps?q=39.544381216274,-0.325596341982626",
"status": "Borrador",
"listedAt": "2026-07-14T07:52:17Z",
"source": "portal.casa47.es"
}

Input options

All inputs are optional — run it empty to get the cheapest homes in Spain.

OptionDescription
maxItemsMaximum listings to return (default 100)
provincesFilter by province or region, e.g. ["Valencia", "Galicia"]
minPriceEur / maxPriceEurMonthly rent bounds in EUR
minBedroomsMinimum number of bedrooms
minSizeM2Minimum built size in m²
requireElevatorOnly buildings with an elevator
requireStorageRoomOnly homes including a storage room (trastero)
onlyNewOnly homes that appeared, or changed price, since the previous run
stateStoreNamePersistent monitor name, default casa47-listing-state; use one per filter set
updateStateDefault true; false reads but never commits the monitoring baseline
sortpriceAsc, priceDesc, sizeAsc, sizeDesc, bedroomsDesc, newest, reference

Example: large affordable family homes in Valencia

{
"provinces": ["Valencia"],
"minBedrooms": 3,
"maxPriceEur": 650,
"sort": "priceAsc",
"maxItems": 50
}

Track new homes (alerts)

Casa 47 publishes stock in waves, so the useful question is usually what changed, not what exists. Set onlyNew: true and schedule the Actor: each run compares the portal against what the previous run saw and returns only homes that are new or whose rent changed.

{ "onlyNew": true, "provinces": ["Valencia"], "maxPriceEur": 600 }

Every listing carries changeType (new, priceChanged, existing), isNew, and previousPriceMonth when the rent moved. The Actor writes identical OUTPUT and RUN_SUMMARY records with delivered counts, budget-limit status, baseline commit status and references missing from the snapshot. A disappearance is not proof of rental or removal from an open call.

The first onlyNew run has no baseline, so it records the starting point without rows. A normal first run returns matching rows. Use a distinct stateStoreName for each filter set, keep filters unchanged and serialize runs of the same monitor. State lives within your Apify account; there is no cross-customer global baseline or concurrency lock.

The baseline advances only when all matches are delivered. If maxItems or the charge budget truncates delivery, baselineUpdated is false (item_limit or charge_limit). The next run may repeat previously delivered rows: increase limit/budget to acknowledge the full snapshot. This conservative policy prevents undelivered changes from being silently lost; it is not exactly-once alert delivery. updateState: false is useful for previews and QA.

Example independent monitor:

{"onlyNew": true, "stateStoreName": "valencia-housing-monitor", "provinces": ["Valencia"], "maxItems": 5000}

Use cases

  • Housing seekers — track new affordable homes and get alerted when one matches your budget, size and location.
  • Journalists and researchers — analyse public rent levels, price per m² and geographic distribution of Spain's state housing rollout.
  • Policy and NGO analysts — monitor how the public housing stock grows across regions over time.
  • Proptech and data teams — benchmark public rents against private market listings.

Schedule the actor daily and compare runs to detect newly published homes as future Casa 47 rounds open.

How it works

The actor calls the official public data API behind portal.casa47.es, follows continuation links and fails rather than committing an incomplete snapshot after its 50-page safety cap. There is no login or browser. Filtering and sorting apply before selection; repeated listing identities/references are removed before billing. Results are delivered atomically with the named listing event: the SDK delivers only the chargeable prefix, and billing errors propagate without advancing the baseline.

Scope and limitations

  • Returns the homes published on the Casa 47 rental portal. It does not cover regional or municipal public housing registries, nor the private market.
  • The portal exposes rent, size, rooms, floor, elevator, storage room and coordinates. It does not expose street addresses, photos or energy certificates through its public API, so those are not included.
  • Placeholder postcodes become null, with province resolved from the official reference code where possible.
  • This actor reads published listings only. It cannot submit an application. Applications must be filed through the official Casa 47 electronic office within each open call's deadline.
  • Casa 47 publishes homes in time-limited rounds. Inventory size and availability change between calls.

Pricing

EventPrice
listing$0.002 per delivered listing ($2.00 / 1,000)
apify-actor-start$0.0001 per start event, memory-adjusted by Apify

Only delivered rows incur listing charges. A valid no-match or baseline-only run can produce zero rows and still incur the start event. Set a maximum charge in Apify to control spend. These are prices, not guaranteed seller earnings.

How to use and integrate

  1. Run {} for an optional-input example, or configure your filters.
  2. Inspect dataset and OUTPUT, especially baselineUpdated.
  3. For monitoring, configure your own schedule with a unique state name and enough budget/limit. Do not overlap runs.
  4. Export CSV, JSON, Excel or consume the dataset API. Connect webhooks to n8n, Make, Zapier, Slack or Google Sheets in your own workflow.

FAQ

Does it submit housing applications? No; use the official electronic office.

Are all exposed records currently available? No. A Borrador status is preserved; consult the official call.

Why did my first onlyNew run return nothing? It records the initial baseline, not invented new homes.

Why are changes repeated? A truncated or preview run does not commit its snapshot; check baselineSkipReason.

Can I have multiple monitors? Yes, with distinct stateStoreName values and fixed filters.

Is state shared across customers? No. The named store belongs to the account executing the Actor. Monitors using the same name in that account share state.

Is every source field guaranteed? No. Missing portal values remain null; street addresses, photos and energy certificates are unavailable through this API.

What happens on an upstream or billing failure? The run fails; it does not silently return unrelated demo data or acknowledge the monitoring snapshot.

Troubleshooting

ProblemAction
No matchesBroaden filters; check onlyNew and baseline status
charge_limitIncrease maximum charge; no unpaid rows are delivered
item_limitRaise maxItems to include all matching changes
Monitor interferenceUse a unique name per filter set; serialize runs
Portal/API errorRetry later; inspect logs, do not interpret failure as no available homes

Feedback and reviews

Useful for your housing search or monitoring? A short, honest review on the Store helps others find it. Positive or critical, both are welcome.

Something missing or broken (a field, a filter, a province)? Please open an issue so it can be fixed quickly.

Data source

Official portal of Casa 47, Entidad Estatal de Vivienda — https://portal.casa47.es. Public listing data only.