Immobiliare.it Agency Scraper — Contacts & Listings
Pricing
from $2.00 / 1,000 listing extracteds
Immobiliare.it Agency Scraper — Contacts & Listings
Scrape Immobiliare.it real estate agencies — search agenzie immobiliari by Italian comune, enrich by agency id or URL. Returns phone numbers, agency website, description, geo, portfolio and sold counts, plus full listing portfolios. For lead gen, CRM enrichment, and competitor intel.
Pricing
from $2.00 / 1,000 listing extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Immobiliare.it Agency Scraper — Contacts, Portfolios & Leads 🚀
🎉 The first agency-intelligence scraper for Italy — direct phone numbers, agency websites, portfolio + sold counts for every agenzia immobiliare
Built for proptech lead-gen teams, brokerage recruiters, and competitor analysts working the Italian market
📋 Overview
Need every real estate agency in Milano, Roma, or any Italian comune — with someone to actually call? This actor turns Immobiliare.it's agency directory into clean, structured lead rows: agency name, direct phone numbers, the agency's own website, full description, geo coordinates, and hard productivity signals (active portfolio count + sold count) — plus the complete listing portfolio of any agency on demand.
Why data teams choose us:
- ✅ Contact-grade rows: direct phone numbers and off-portal agency websites on every enriched profile — the two fields lead-gen actually needs
- ⚡ Three modes in one actor: comune search, direct agency lookup (id or URL), and full listing-portfolio walks
- 🎯 Productivity signals: active portfolio count + sold count per agency — rank top performers before you reach out
- 💰 Pay per row, not per month: no subscription — a 40-agency city scan costs well under a dollar
- 💎 Full portfolio intel: every listing with price, full street address, coordinates, zone, surface, rooms, photos, and contract type
- ✨ NEW: cohort KPIs in every run report — phone coverage, median portfolio size, top-comuni breakdown
✨ Features
- 🔍 Comune search: up to 40 agencies per Italian comune (name or comune id) — query multiple comuni for full-market coverage
- 📞 Contact enrichment: phone numbers, agency website, and description are fetched automatically for every discovered agency
- 🏢 Direct lookup: paste agency ids or
immobiliare.it/agenzie-immobiliari/...profile URLs for instant enriched profiles - 🏠 Portfolio walks: paginate an agency's entire listing inventory — 20 listings per page until done
- 📊 Productivity stats:
listingsCount+soldCounton every enriched agency row - 🗺 Full geo: province, comune (with canonical id), macrozone/microzone, street, and lat/lng on listings
- 🏗 Constructor flag: distinguish developers from classic agencies
- 🔁 Automatic dedupe: agency and listing rows are deduplicated by id within a run
- 📄 HTML run report: phone/website coverage, median portfolio + sold counts, price medians, top comuni
🎬 Quick Start
Pick a mode, provide a comune (or agency ids), and run — results land in a structured dataset within seconds.
curl -X POST https://api.apify.com/v2/acts/sian.agency~immobiliare-agent-scraper/runs?token=YOUR_TOKEN \-d '{"searchMode": "search", "locations": ["Milano"]}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose a mode
search (agencies by comune) · lookup (agency profiles by id/URL) · listings (full portfolio per agency).
Step 2: Provide your targets
Comune names like Milano, Roma, Torino — or agency ids / profile URLs harvested from a previous search.
Step 3: Run and export
Click Start. Export the dataset as JSON, CSV, or Excel.
That's it! In under a minute, you'll have:
- Agency lead rows with phone numbers and websites
- Portfolio + sold counts for performance ranking
- Full listing inventories with prices and addresses
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| searchMode | string | No | search (default), lookup, or listings |
| locations | array | search mode | Italian comune names or ids, e.g. ["Milano", "Roma"] |
| lookupTargets | array | lookup/listings modes | Agency ids ("44166") or profile URLs |
| fetchAgencyDetails | boolean | No | Enrich search rows with phones/website/counts (default true) |
| maxAgenciesPerLocation | integer | No | Cap per comune, up to the directory's 40-agency maximum |
| maxListingsPerAgency | integer | No | Portfolio row cap per agency in listings mode (default 100) |
Example — agencies in Milano:
{"searchMode": "search","locations": ["Milano"]}
Example — full portfolio of one agency:
{"searchMode": "listings","lookupTargets": ["44166"],"maxListingsPerAgency": 200}
📤 Output
Results are saved to the Apify dataset with 40+ fields. Agency rows (rowType: "agency"):
| Field | Type | Description |
|---|---|---|
| agencyName | string | Agency display name |
| phones / primaryPhone | array / string | Direct phone numbers |
| agencyWebsite | string | The agency's own website (off-portal) |
| agencyDescription | string | Full marketing description |
| agencyLocation | object | Province, comune (+ id), street, lat/lng |
| listingsCount | integer | Active portfolio size |
| soldCount | integer | Sold properties count |
| isConstructor | boolean | Developer vs classic agency |
| profileUrl | string | Public agency profile page |
Listing rows (rowType: "listing"): propertyTitle, contract (Vendita/Affitto), propertyType, price + priceFormatted, surface, rooms, bathrooms, floor, listingLocation (full street address + coordinates + zone), photos, agency, listedAt, lastModifiedAt, listingUrl.
Example agency row:
{"rowType": "agency","agencyId": "44166","agencyName": "Affiliato Primacasa - Fast House S.r.l.","phones": ["+390281269737", "0254108008"],"primaryPhone": "+390281269737","agencyWebsite": "https://www.primacasa.it/it/agenzia/279/milano/milano/fast-house-s-r-l.html","agencyLocation": { "province": { "locationId": "MI", "name": "Milano" }, "municipality": { "locationId": 8042, "name": "Milano" }, "latitude": 45.4478, "longitude": 9.2089 },"listingsCount": 59,"soldCount": 6,"isConstructor": false,"profileUrl": "https://www.immobiliare.it/agenzie-immobiliari/44166/affiliato-primacasa-fast-house/"}
💼 Use Cases & Examples
1. Agency lead generation
Proptech and service vendors building call lists for the Italian market.
Input: search mode with target comuni
Output: Agency rows with phones, websites, and descriptions
Use: Feed your CRM with verified, phone-bearing agency leads city by city.
2. Competitor benchmarking
Agencies and franchises tracking rival portfolios.
Input: listings mode with competitor agency ids
Output: Every active listing with price, address, surface, and contract
Use: Monitor pricing strategy, stock mix, and zone coverage of any competitor.
3. Brokerage recruiting & partnerships
Networks scouting high-performing independents.
Input: search across a region's comuni
Output: Portfolio + sold counts per agency
Use: Rank agencies by productivity, then reach out via the phone numbers on the row.
4. Proptech data products
SaaS teams enriching Italian agency records.
Input: lookup mode with agency ids or profile URLs
Output: Enriched profiles with geo, contacts, and counts
Use: Power agency-matching, valuation, or directory products without building scraping infra.
5. Market coverage mapping
Analysts mapping agency density and developer activity.
Input: search across many comuni
Output: Geo-coded agency rows with constructor flags
Use: Heatmap which brands dominate each comune and macrozone.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/immobiliare-agent-scraper').call({searchMode: 'search',locations: ['Milano']});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/immobiliare-agent-scraper').call(run_input={'searchMode': 'search', 'locations': ['Milano']})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~immobiliare-agent-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"searchMode": "listings", "lookupTargets": ["44166"]}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule (e.g. weekly per comune)
- HTTP Request: Call the actor API
- Process: Handle the JSON rows
- Action: Push to CRM, sheet, or Slack
📊 Performance & Pricing
FREE Tier (Try It Now)
- 1 query, 5 agencies or 25 listing rows per run — full field access, same data quality
- No credit card required
- Perfect for testing a comune before scaling
PAID Tier (Production Ready)
- Unlimited comuni, agencies, and portfolio rows per run
- Pay-per-result: agency profile rows and listing rows are charged only on success
💰 No subscription — unlike flat monthly agency-data tools, you pay only for the rows you pull.
❓ Frequently Asked Questions
Q: How many agencies can I get per comune? A: The public directory returns up to 40 agencies per comune. For full-market coverage, run multiple comuni (e.g. all comuni of a province) — rows are deduplicated by agency id automatically.
Q: Where do the phone numbers come from?
A: From each agency's public profile page. Enrichment is on by default (fetchAgencyDetails); directory rows alone don't carry contacts.
Q: Can I scrape one specific agency?
A: Yes — use lookup mode with the agency id or its profile URL (https://www.immobiliare.it/agenzie-immobiliari/<id>/).
Q: How do I get an agency's full inventory?
A: listings mode walks the portfolio 20 listings per page until your cap or the end — each row includes price, address, coordinates, and photos.
Q: What output formats are available? A: JSON, CSV, Excel — export directly from the Apify dataset.
Q: Is this legal? A: We only extract publicly available business data. See the legal section below.
🐛 Troubleshooting
A comune search returns 0 agencies
- Check the spelling of the comune name (Italian spelling, e.g. "Torino" not "Turin")
- Try the numeric comune id instead (returned in
agencyLocation.municipality.locationId)
A lookup target fails validation
- Targets must be numeric agency ids or full profile URLs like
https://www.immobiliare.it/agenzie-immobiliari/44166/ - Harvest ids by running a
searchon the agency's comune first
Fewer rows than expected in search mode
- The directory caps at 40 agencies per comune and the FREE tier caps at 5 agencies per run
- Duplicate agencies across comuni are pushed only once per run
Listings mode returns 0 rows for an agency
- The agency may have an empty active portfolio — check
listingsCountvialookupmode first
⚠️ Trademark Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Immobiliare.it S.p.A. "Immobiliare.it" is a trademark of its respective owner and is used here only to identify the public website the data originates from. All data collected is publicly available business information.
⚖️ 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.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools