Bakeca Property Scraper
Pricing
from $1.32 / 1,000 property searches
Bakeca Property Scraper
Scrape Bakeca.it housing ads across 107 Italian provinces: rooms, rentals, homes for sale, land and commercial. Price, m², GPS, private or agency, phone.
Pricing
from $1.32 / 1,000 property searches
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Bakeca Scraper: Italian Rooms, Rentals & Homes for Sale 🚀
🎉 Every Bakeca housing ad in 107 Italian provinces, with price, m², GPS and private or agency on each row
For room hunters, landlords, agencies and analysts who need Italy's classifieds housing stock as a spreadsheet
🔎 What is the Bakeca Scraper — and when should you use it?
The Bakeca Scraper turns public Bakeca.it housing ads from any of Italy's 107 Bakeca provinces into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.
Use it when you need: Italian rooms, homes for rent, homes for sale, holiday homes, shops, garages, warehouses and land as rows. Every search row carries the price in euros, floor area, property type, town, province, GPS and whether a private owner or an agency posted it. Open each ad in full and you also get the phone number where the ad shows one, the full text, every photo, district, furnishing, energy class and publish date.
Use something else when: you want the big Italian property portals rather than classifieds ads. Use Immobiliare.it Scraper for Immobiliare.it agency listings with full detail. Use Smart Idealista Scraper for Idealista in Italy, Spain and Portugal. This actor reads Bakeca's housing section only, for live ads. Jobs, cars and Bakeca's other sections are not covered, and sold prices are not returned.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/bakeca-property-scraper
Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.
Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want rooms, rentals and homes for sale from Bakeca.it in Italy using the Apify Actor `sian.agency/bakeca-property-scraper`.Use it when I need: Italian rooms, homes for rent, homes for sale, holiday homes, shops, garages, warehouses and land as rows. Every search row carries the price in euros, floor area, property type, town, province, GPS and whether a private owner or an agency posted it. Open each ad in full and you also get the phone number where the ad shows one, the full text, every photo, district, furnishing, energy class and publish date.Don't use it when: you want the big Italian property portals rather than classifieds ads — use immobiliare-property-scraper or smart-idealista-scraper instead.How to call it: set `city` to a Bakeca province such as `milano`, `roma`, `torino` or `bologna` (or `italia` for the whole country), `category` to `rent`, `sale`, `rooms`, `holiday`, `commercial`, `garages`, `warehouses` or `land`, and optionally `town` (a town inside that province) and `sellerType` (`any`, `private` or `agency`). `maxResults` sets how many ads come back. `includeDetails` opens each ad for the phone, full text and every photo, for an extra charge per ad. `searchUrls` takes Bakeca results pages as [{"url": ...}] objects. To expand ads you already have, set `operation` to `detail` and pass `listingUrls`.Start with this input:{"operation": "search","city": "milano","category": "rooms","sellerType": "private","maxResults": 50,"includeDetails": false}Ask me which province or town to cover, and whether I want rooms, homes for rent or homes for sale, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- List private rooms for rent in Milano with the monthly rent and the district.
- Build a price-per-m² table of homes for sale in Guidonia Montecelio.
- Find agency-listed flats for rent in Torino with the agency's phone number.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/bakeca-property-scraper.md.
📋 Overview
Bakeca.it is where Italians post rooms, flats and houses themselves. This actor turns its housing section into clean rows: rooms and beds, homes for rent, homes for sale, holiday homes, shops, garages, warehouses and land.
What you get:
- ✅ Rooms and private landlords: 44% to 65% of Bakeca's room ads in Milano, Roma and Torino come from private owners, by Bakeca's own counts
- ⚡ 25 ads per results page: price, floor area, type, town, GPS, photo and advertiser come back on every search row
- 🎯 Filters checked on real rows: private-only and agency-only searches returned 30 of 30 and 10 of 10 matching ads in our tests
- 💰 Pay per ad: $1.50 per 1,000 ads on the Starter plan, and an ad is billed once per run even when it repeats
- 💎 Full ad on demand: one switch adds the phone number where the ad shows one, the full text, every photo, district, furnishing and energy class
- ✨ NEW: all 107 Bakeca provinces plus an All of Italy search in one dropdown
✨ Features
- 🏘️ Eight housing sections: rooms and beds, homes for rent, homes for sale, holiday homes, shops and offices, garages, warehouses and land
- 📍 107 provinces or the whole country: pick Milano, Roma, Torino, Bologna, Napoli or any other Bakeca province, or All of Italy
- 🏡 Town filter: narrow a province to one town, such as Sesto San Giovanni in Milano or Guidonia Montecelio in Roma
- 🙋 Private or agency: use Bakeca's own advertiser filter, and read the advertiser type on every row either way
- 📐 Price per m²: worked out on every row that has both a price and a floor area
- 📞 Phone numbers: in the full ad, whenever the advertiser shows one
- 🔗 Paste any results page: districts, furnished-only lists or a Bakeca keyword search all work as input
- 🔁 No double billing: premium ads that repeat on every page are kept and charged once
🎬 Quick Start
Pick a province and a section, press Start, and the ads land in your dataset. A bare run with no input returns 50 homes for rent in the Milano province. Turn on the full ad when you need phones and the complete description.
curl -X POST "https://api.apify.com/v2/acts/sian.agency~bakeca-property-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"city": "milano", "category": "rooms", "sellerType": "private", "maxResults": 50}'
🚀 Getting Started (3 Simple Steps)
Step 1: Pick where
Choose a province from the list, or All of Italy. Type a town if you only want one.
Step 2: Pick what
Choose the section (rooms, homes for rent, homes for sale and so on) and, if you like, private owners or agencies only.
Step 3: Run and export
Set how many ads you want and press Start. Download the result as JSON, CSV or Excel.
That's it! In about a minute, you'll have:
- Prices in euros with floor area and price per m²
- Town, province and GPS for every ad
- Private or agency on every row, with the agency's name and storefront link
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
operation | string | No | search (default) reads results pages, detail opens ads you paste |
city | string | No | Bakeca province, such as milano, roma, torino, or italia for the whole country |
category | string | No | rent, sale, rooms, holiday, commercial, garages, warehouses or land |
town | string | No | One town inside the province, written as Bakeca writes it |
sellerType | string | No | any, private or agency |
maxResults | integer | No | How many ads to return (default 50, one results page holds 25) |
includeDetails | boolean | No | Open each ad for phone, full text, every photo and more (billed per ad) |
searchUrls | array | No | Bakeca results pages to read instead of the fields above |
listingUrls | array | No | Bakeca ad pages for the detail operation |
Example: private rooms in Milano with phones
{"city": "milano","category": "rooms","sellerType": "private","maxResults": 100,"includeDetails": true}
Example: homes for sale in one town
{"city": "roma","category": "sale","town": "Guidonia Montecelio","maxResults": 200}
Example: paste results pages
{"searchUrls": [{ "url": "https://milano.bakeca.it/annunci/offro-camera/quartiere/bocconi-ticinese/" },{ "url": "https://milano.bakeca.it/annunci/offro-camera/?keyword=stanza+singola" }],"maxResults": 100}
Example: open ads you already have
{"operation": "detail","listingUrls": [{ "url": "https://roma.bakeca.it/dettaglio/vendita-case/villetta-a-schiera-di-210-msup2-con-4-locali-e-box-auto-in-vendita-a-guidonia-montecelio-dixm290554868" }]}
Sorted results pages are not supported. Leave the sort order on Bakeca's default when you copy a results address.
📤 Output
Results are saved to the Apify dataset with 40 fields, including:
| Field | Type | Description |
|---|---|---|
listingId | string | Bakeca's ad ID, stable across runs |
listingUrl | string | Link to the ad |
propertyTitle | string | The ad's title |
section | string | rent, sale, rooms, holiday, commercial, garages, warehouses or land |
propertyType | string | Monolocale, Bilocale, Villa, Negozio and so on |
price | number | Price in euros: monthly for rents and rooms, asking price for sales |
sizeSqm | number | Floor or plot area in m² |
pricePerSqm | number | Price divided by area |
town / province | string | Where the property is |
latitude / longitude | number | GPS position from the ad |
advertiserType | string | private or agency |
advertiserName / advertiserUrl | string | Who posted it and their Bakeca storefront |
phone | string | Advertiser's phone, full ad only, when shown |
district / furnishing / energyClass | string | From the full ad |
publishedDate | string | Publish date from the full ad (YYYY-MM-DD) |
imageUrls / photoCount | array / integer | Photo links and how many there are |
summaryText / descriptionText | string | Card summary, and the full text when the ad is opened |
Example: a search row
{"listingId": "nep8299550422","listingUrl": "https://milano.bakeca.it/dettaglio/offro-casa/appartamento-di-50-msup2-con-2-locali-in-affitto-a-milano-nep8299550422","propertyTitle": "Appartamento di 50 m² con 2 locali in affitto a Milano","section": "rent","sectionName": "Offro casa in affitto","price": 1400,"currency": "EUR","sizeSqm": 50,"propertyType": "Bilocale","pricePerSqm": 28,"town": "Milano","province": "Milano","latitude": 45.4733,"longitude": 9.1872,"advertiserType": "agency","advertiserName": "Dove.it","advertiserUrl": "https://milano.bakeca.it/vetrina/immobiliare/doveit55729/","photoCount": 19,"isPremium": true,"thumbnail": "https://static.bakeca.it/immagini/67a/offro-casa-in-affitto-milano-appartamento-di-50-msup2-67a5647404e851f6c42772432bcc92j4.jpg","summaryText": "A Milano, nel cuore di Brera in via Solferino 3, proponiamo in affitto questo appartamento bilocale/ loft di 50 mq …","searchUrl": "https://milano.bakeca.it/annunci/offro-casa/","searchPage": 1,"hasDetail": false,"status": "success"}
Example: a row with the full ad opened
{"listingId": "dixm290554868","propertyTitle": "Villetta a schiera di 210 m² con 4 locali e box auto in vendita a Guidonia Montecelio","section": "sale","price": 410000,"currency": "EUR","propertyType": "Villa","sizeSqm": 210,"pricePerSqm": 1952.38,"town": "Guidonia Montecelio","district": "Setteville Nord","furnishing": "Parzialmente arredato","energyClass": "G (Legge 90/2013), IPE 175.00 KWh/m² anno","publishedDate": "2026-10-01","advertiserType": "agency","advertiserName": "Dove.it","phone": "3272074613","advertiserSince": "2019-10-07","advertiserActiveAds": 2145,"photoCount": 20,"imageUrls": ["https://static.bakeca.it/immagini/d67/case-in-vendita-guidonia-montecelio-villetta-a-schiera-di-d67e0d95337db8822be76e936c3778j9.jpg"],"descriptionText": "[Rif. DV-8290] Nella tranquilla località di Marco Simone, poco distante da Guidonia Montecelio …","hasDetail": true,"status": "success"}
Each run also writes a report.html summary to the run's key-value store, with your rows, anything that needs a fix and what you were charged.
💼 Use Cases & Examples
1. Student room rents near universities
Housing offices and student unions map room prices around Politecnico, Bicocca or Bologna's university district.
Input: city milano, category rooms
Output: Monthly rent, town, GPS and private or agency for every room ad
Use: A rent map of single and double rooms by neighbourhood, refreshed every week
2. Private landlord leads
Property managers and rental agencies find owners who list rooms and flats themselves.
Input: sellerType private, includeDetails true
Output: Private ads with the phone number where the owner shows one
Use: A call list of landlords who may want help letting or managing their property
3. Rental and sale price tracking
Analysts and investors schedule the same province and section daily.
Input: One province and section on an Apify schedule Output: Stable ad IDs with price and floor area Use: Spot new ads, price cuts and removed ads as a daily diff
4. Agency market share
Agencies and franchise networks see who advertises where.
Input: sellerType agency, a province, includeDetails true
Output: Agency name, storefront link, office address, years on Bakeca and number of live ads
Use: Rank competitors by stock in each town
5. Short lets and transitory rentals
Relocation services and corporate housing teams find flats let by the month.
Input: category rent, then filter summaryText for "transitorio" or "brevi periodi"
Output: Transitory and short-stay flats, often posted by short-let operators
Use: A shortlist of furnished flats for staff on 3 to 12 month assignments
6. Land, garages and commercial space
Investors and developers look past flats.
Input: category land, garages, warehouses or commercial
Output: The same row shape with price, area and town
Use: Price per m² of building land or shop space across a province
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/bakeca-property-scraper').call({city: 'bologna',category: 'rooms',sellerType: 'private',maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/bakeca-property-scraper').call(run_input={'city': 'roma','category': 'sale','town': 'Guidonia Montecelio','maxResults': 200,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item.get('price'), item.get('sizeSqm'), item['listingUrl'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~bakeca-property-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation": "detail", "listingUrls": [{"url": "https://milano.bakeca.it/dettaglio/offro-camera/singola-con-bagno-in-comune-per-universitari-zona-politecnico-vd6a281659042"}]}'
Automation Workflows (n8n / Zapier / Make)
- Trigger: a daily schedule, or a webhook from your CRM
- HTTP Request: call the actor's run endpoint with your province and section
- Process: read the dataset items as JSON
- Action: add new ads to Google Sheets, Airtable or your CRM, or send an alert on price drops
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 ads per run, every field included
- No credit card required
- Good for checking a province or section before a bigger run
PAID Tier (Production Ready)
- Up to 10,000 ads per run (the "Properties to collect" limit)
- Pay per ad returned: $1.50 per 1,000 ads on the Starter plan, less on higher Apify plans
- The full ad is an optional extra at $3 per 1,000, charged only when you switch it on
💰 Only ads you receive are charged. A search that matches nothing, an ad from another town or of the other advertiser type, a repeated premium ad and an ad page that no longer exists cost nothing.
❓ Frequently Asked Questions
Q: Which parts of Bakeca does it cover? A: The whole housing section: rooms, homes for rent, homes for sale, holiday homes, shops and offices, garages, warehouses and land. That is all 107 Bakeca provinces, or Italy at once. Jobs, cars and Bakeca's other sections are not included.
Q: Do I get phone numbers? A: Yes, with "Open each ad in full", whenever the advertiser shows a number on the ad. Many private ads do, and some only accept messages through Bakeca.
Q: How do I tell private owners from agencies?
A: Every row has advertiserType set to private or agency, taken from the ad itself. You can also let Bakeca filter it with the Advertiser field.
Q: Why is a price missing on some rows?
A: Some ads show 1 € or "Trattativa riservata" and give the real figure in the text. Those rows leave price empty rather than carry a made-up number.
Q: Can I search one district? A: Yes. Open the district on bakeca.it, for example Bocconi-Ticinese in Milano, and paste the results address into Search page URLs.
Q: How many ads can I get? A: FREE accounts get 25 per run. Paid accounts can ask for up to 10,000 per run. A province's section usually holds a few hundred to a few thousand ads.
Q: How fresh is the data? A: Every run reads the live site. Nothing is cached between runs.
Q: What output formats are available? A: JSON, CSV, Excel, XML and HTML, straight from the Apify dataset.
🐛 Troubleshooting
A town search returns nothing
- Check the town is spelled the way Bakeca spells it, for example "Sesto San Giovanni"
- Make sure the town is inside the province you picked
A pasted URL is skipped
- Paste a housing results page, such as https://milano.bakeca.it/annunci/offro-camera/ , not an ad page or the home page
- Remove any sorting from the address, because sorted pages are not supported
Fewer rows than "Properties to collect"
- The search ran out of ads, or the FREE tier stopped at 25
- With a town set, premium ads from other towns are skipped and not billed
A page failed to load
- This is nearly always temporary. Run the same input again a few minutes later. Failed pages are never charged
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
Bakeca is a trademark of its owner. This actor is not affiliated with, endorsed by, or sponsored by Bakeca.
🤝 Support
Join our active support community
- For issues or questions, open an issue on the actor's Issues tab
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools