Fotocasa Scraper — Spain Real Estate, Numeric Price
Under maintenancePricing
from $1.01 / 1,000 results
Fotocasa Scraper — Spain Real Estate, Numeric Price
Under maintenanceScrape Fotocasa.es sale and rental listings with clean numeric price, structured Spanish address levels, and amenities separated from measurements.
Pricing
from $1.01 / 1,000 results
Rating
0.0
(0)
Developer
Axery
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Fotocasa Property Scraper (Spain)
Scrapes sale and rental property listings from fotocasa.es over plain HTTP — no browser, no login, no cookies.
What makes this different
No second fetch per listing. Unlike most real-estate Actors — including the Bayt, Funda and Immowelt Actors in this suite — Fotocasa's search page already embeds every field a detail page would: price, full address, coordinates, amenities, photos. This Actor reads it in one request per page instead of one plus a detail fetch per row, which is why its price sits lower than its two-step siblings for equivalent data.
Price with nothing to parse. price.amount comes from Fotocasa's own rawPrice field — already a clean number, not a display string like "435.000 €" that needs unpicking.
Amenities kept separate from measurements — deliberately. Fotocasa's source data lists rooms, bathrooms, surface area and amenity flags (air conditioning, elevator, terrace...) under the same {key, value} shape. For amenities, value is an internal catalog id that means nothing as a number; for measurements, it's the actual count or square metres. Flattening both into one list would make every value ambiguous, so this Actor splits them:
"rooms": 3, "bathrooms": 2, "surface_sqm": 105, "floor": 6,"amenities": ["air_conditioner", "elevator", "terrace"]
Input
| Field | Type | Notes |
|---|---|---|
city | string | A Fotocasa city slug, e.g. madrid-capital, barcelona. Not a plain city name — madrid alone will not resolve. |
transaction | enum | SALE (comprar) or RENT (alquiler). |
zone | string | A neighbourhood slug to narrow within the city, or the default to search the whole city. |
maxItems | integer | Pages automatically (~31 listings/page) until this limit or the reachable depth. |
incremental | boolean | Only listings not seen in previous runs. |
proxyConfiguration | object | Datacenter is sufficient — no IP-reputation gate was observed on this target. |
Known limits
posted_atis approximate. Fotocasa exposes only a relative age ("179 days ago"), not a literal timestamp — the Actor computes a date from that, so treat it as accurate to the day, not the minute.building_age_yearsis a band code, not a literal year count — Fotocasa does not expose the latter on the search page.- Reachable depth is finite. Past a certain page, Fotocasa starts repeating the last valid page instead of erroring. The Actor detects that repeat (by comparing the first listing id) and stops cleanly rather than returning duplicate rows.
Local development
pip install -r requirements.txtpython test_local.py madrid-capital --max 20 --out sample_output.jsonpython test_local.py barcelona --transaction RENT --max 10
sample_output.json in this folder is real output from a live run, kept so the schema can be reviewed without running anything.