Immobiliare Scraper & Opportunity Notification avatar

Immobiliare Scraper & Opportunity Notification

Pricing

from $0.01 / 0 < results < 5

Go to Apify Store
Immobiliare Scraper & Opportunity Notification

Immobiliare Scraper & Opportunity Notification

Serverless scraper for immobiliare.it that extracts property listings, identifies those under your maxPrice (marked with shouldBuy=True), and sends automatic emails with links, photos, and descriptions only for matching deals.

Pricing

from $0.01 / 0 < results < 5

Rating

0.0

(0)

Developer

Fabio Borsotti

Fabio Borsotti

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 days ago

Last modified

Share

Actor Description

Serverless scraper for immobiliare.it that extracts property listings, identifies those under your maxPrice (marked with shouldBuy=True), and sends automatic emails with links, photos, and descriptions only for matching deals. Uses Resend for notifications and Scrapedo proxies to avoid blocks.


Core Functionality

The algorithm performs the following steps:

  • Full Scraping Extraction: Analyzes Immobiliare.it search URLs with filter (e.g. "Lodi apartments top floor 3+ rooms 2+ baths") and extracts all listings with complete JSON structure (price, photos, description, properties, agency, contacts)
  • Filtering & Notification: If you enable notofication it marks shouldBuy=True only for listings with price.value < maxPrice.
  • Storage: Saves all extracted data into the Apify dataset for all objects. Download JSON, CSV, XML, Excel, HTML Table, RSS, JSONL.

Input Parameters

ParameterTypeRequiredDescriptionExample
urlstringYesImmobiliare.it search page URLhttps://www.immobiliare.it/vendita-case/lodi/con-ultimo-piano/?localiMinimo=3&bagni=2&classeEnergetica=2
maxItemsnumberNoMax returned item10
enableNotificationbooleanNoEnable/disable automatic emailstrue
maxPricenumberYesMax price for shouldBuy=True (integer)100000
sendMailTostringNoRecipient emailyour@email.com

Extracted Data (Scraping)

The Actor saves all information returned by the Immobiliare server for each lot into the dataset.


Technical Notes

  • Anti-Ban: Uses proxies and random delays between requests to simulate human behavior.
  • Dataset: Even if notifications are disabled, the Actor functions as a full scraper, populating the dataset with all discovered lots based on url.

Scraper Output:

[
{
"visibility": "vetrina",
"dataType": "list-real-estate",
"id": 124360315,
"uuid": "8cb256ba-c60d-5f3d-8aa5-51d58cb2af24",
"advertiser": {
"agency": {
"id": 213246,
"type": "agency",
"showOnlyAgentPhone": false,
"phones": [
{
"type": "vTel1",
"value": "0371 186 0192"
}
],
"bookableVisit": {
"isVisitBookable": false,
"virtualVisitEnabled": false
},
"isPaid": true,
"label": "agenzia",
"displayName": "Sonia Immobiliare di Sonia Conti",
"guaranteed": false,
"showAgentPhone": false,
"showLogo": true,
"imageUrls": {
"small": "https://pic.im-cdn.it/imagenoresize/1486616397.jpg",
"large": "https://pic.im-cdn.it/imagenoresize/1486616399.jpg"
},
"agencyUrl": "https://www.immobiliare.it/agenzie-immobiliari/213246/sonia-immobiliare-lodi/",
"showExternalLink": false
},
"supervisor": {
"type": "agent",
"imageGender": "female",
"phones": [
{
"type": "vTel1",
"value": "0371 186 0192"
}
],
"imageType": "agent",
"displayName": "Sonia Conti",
"label": "agente immobiliare",
"imageUrl": "https://pic.im-cdn.it/agenti/218254/1512088097/80.jpg"
},
"hasCallNumbers": true
},
"contract": "sale",
"isNew": false,
"luxury": false,
"price": {
"visible": true,
"value": 159000,
"formattedValue": "€ 159.000 - € 555.000",
"minValue": "€ 159.000",
"maxValue": "€ 555.000"
},
"properties": [
{
"multimedia": {
"photos": [
{
"id": 1811040955,
"caption": "Salone",
"urls": {
"small": "https://pwm.im-cdn.it/image/1811040955/xxs-c.jpg"
}
},
{
"id": 1811040741,
"caption": "Terrazzo",
"urls": {
"small": "https://pwm.im-cdn.it/image/1811040741/xxs-c.jpg"
}
},
{
"id": 1811039553,
"caption": "Camera da letto",
"urls": {
"small": "https://pwm.im-cdn.it/image/1811039553/xxs-c.jpg"
}
},
],
"virtualTours": [],
"hasMultimedia": true
},
"isMain": true,
"price": {
"visible": true,
"value": 159000,
"formattedValue": "€ 159.000 - € 555.000",
"minValue": "€ 159.000",
"maxValue": "€ 555.000"
},
"surface": "45 m²",
"typology": {
"id": 276,
"name": "Progetto"
},
"ga4Garage": "2 in box privato/box in garage",
"typologyGA4Translation": "Progetto",
"ga4Heating": "Autonomo",
"caption": "LODI CENTRO NUOVA VITA IN CLASSE A ",
"category": {
"id": 27,
"name": "Nuove costruzioni"
},
"description": "Sonia Immobiliare presenta in esclusiva una nuova proposta residenziale nel centro Storico di Lodi a due passi dal centro cittadino, appartamenti esclusivi tra comfort, design e sostenibilità. \nBILOCALE, TRILOCALI,QUADRILOCALI CON TERRAZZI E BOX.\n\nTIPOLOGIE APPARTAMENTI;\nA mq 158,69 €.555.000,00 \nB mq 150,38 €.526.000,00\nC mq 75,06 €.262.000,00 \nD mq 102,56 €.358.000,00 \nE mq 45,43 €.159.000,00\nF mq 118,95 € 416.000,00\nG mq 117,89 € 412.000,00\n\nTECNOLOGIE E DOTAZIONI PER IL TUO COMFORT ABITATIVO:\nUn intervento edilizio di recupero, ristrutturazi",
"photo": {
"id": 1811040955,
"caption": "Salone",
"urls": {
"small": "https://pwm.im-cdn.it/image/1811040955/xxs-c.jpg",
"medium": "https://pwm.im-cdn.it/image/1811040955/m-c.jpg",
"large": "https://pwm.im-cdn.it/image/1811040955/xxl.jpg"
}
},
"location": {
"address": "Corso Adda, 69",
"latitude": 45.3163,
"longitude": 9.5066,
"marker": "marker",
"region": "Lombardia",
"province": "Lodi",
"macrozone": "Centro Storico",
"microzone": null,
"city": "Lodi",
"nation": {
"id": "IT",
"name": "Italia"
}
},
"featureList": [
{
"type": "rooms",
"label": "2 - 4 locali",
"compactLabel": "2 - 4"
},
{
"type": "surface",
"label": "da 45 m²"
},
{
"type": "typologyAmount",
"label": "7 tipologie",
"compactLabel": "7"
}
],
"rooms": "2 - 4"
},
{
"multimedia": null,
"bathrooms": "1",
"isMain": false,
"floor": {
"abbreviation": "T",
"value": "Piano terra, con ascensore",
"floorOnlyValue": "piano terra",
"ga4FloorValue": "piano terra"
},
"price": {
"visible": true,
"value": 159000,
"formattedValue": "€ 159.000",
"minValue": "€ 159.000",
"priceRange": "150.001 - 200.000 &euro;"
},
"rooms": "2",
"elevator": true,
"surface": "45 m²",
"typology": {
"id": 14,
"name": "Appartamento"
},
"typologyGA4Translation": "Appartamento",
"ga4Heating": "Assente",
"matchSearch": false,
"photo": {
"id": 1810825349,
"caption": "Veranda",
"urls": {
"small": "https://pwm.im-cdn.it/image/1810825349/xxs-c.jpg"
}
},
"url": "/annunci/124360315/20409963/",
"featureList": [
{
"type": "rooms",
"label": "2 locali",
"compactLabel": "2"
},
{
"type": "surface",
"label": "45 m²"
},
{
"type": "bathrooms",
"label": "1 bagno",
"compactLabel": "1"
},
{
"type": "floor",
"label": "Piano T",
"compactLabel": "T"
}
]
},
{
"multimedia": null,
"bathrooms": "2",
"isMain": false,
"floor": {
"abbreviation": "T",
"value": "Piano terra, con ascensore",
"floorOnlyValue": "piano terra",
"ga4FloorValue": "piano terra"
},
"price": {
"visible": true,
"value": 262000,
"formattedValue": "€ 262.000",
"minValue": "€ 262.000",
"priceRange": "200.001 - 300.000 &euro;"
},
"rooms": "2",
"elevator": true,
"surface": "75 m²",
"typology": {
"id": 14,
"name": "Appartamento"
},
"typologyGA4Translation": "Appartamento",
"ga4Heating": "Assente",
"matchSearch": false,
"photo": {
"id": 1810876473,
"caption": "Salone",
"urls": {
"small": "https://pwm.im-cdn.it/image/1810876473/xxs-c.jpg"
}
},
"url": "/annunci/124360315/20410681/",
"featureList": [
{
"type": "rooms",
"label": "2 locali",
"compactLabel": "2"
},
{
"type": "surface",
"label": "75 m²"
},
{
"type": "bathrooms",
"label": "2 bagni",
"compactLabel": "2"
},
{
"type": "floor",
"label": "Piano T",
"compactLabel": "T"
}
]
},
{
"multimedia": null,
"bathrooms": "2",
"isMain": false,
"floor": {
"abbreviation": "2",
"value": "2° piano, con ascensore",
"floorOnlyValue": "2 piano",
"ga4FloorValue": "2 piano"
},
"price": {
"visible": true,
"value": 358000,
"formattedValue": "€ 358.000",
"minValue": "€ 358.000",
"priceRange": "300.001 - 500.000 &euro;"
},
"rooms": "3",
"elevator": true,
"surface": "102 m²",
"typology": {
"id": 14,
"name": "Appartamento"
},
"typologyGA4Translation": "Appartamento",
"ga4features": [
"terrazzo"
],
"ga4Heating": "Assente",
"matchSearch": false,
"photo": {
"id": 1810892367,
"caption": "Terrazzo",
"urls": {
"small": "https://pwm.im-cdn.it/image/1810892367/xxs-c.jpg"
}
},
"url": "/annunci/124360315/20410767/",
"featureList": [
{
"type": "rooms",
"label": "3 locali",
"compactLabel": "3"
},
{
"type": "surface",
"label": "102 m²"
},
{
"type": "bathrooms",
"label": "2 bagni",
"compactLabel": "2"
},
{
"type": "floor",
"label": "Piano 2",
"compactLabel": "2"
}
]
},
{
"multimedia": null,
"bathrooms": "2",
"isMain": false,
"floor": {
"abbreviation": "2",
"value": "2° piano, con ascensore",
"floorOnlyValue": "2 piano",
"ga4FloorValue": "2 piano"
},
"price": {
"visible": true,
"value": 412000,
"formattedValue": "€ 412.000",
"minValue": "€ 412.000",
"priceRange": "300.001 - 500.000 &euro;"
},
"rooms": "3",
"elevator": true,
"surface": "117 m²",
"typology": {
"id": 14,
"name": "Appartamento"
},
"typologyGA4Translation": "Appartamento",
"ga4features": [
"terrazzo"
],
"ga4Heating": "Assente",
"matchSearch": false,
"photo": {
"id": 1810914331,
"caption": "Terrazzo",
"urls": {
"small": "https://pwm.im-cdn.it/image/1810914331/xxs-c.jpg"
}
},
"url": "/annunci/124360315/20411101/",
"featureList": [
{
"type": "rooms",
"label": "3 locali",
"compactLabel": "3"
},
{
"type": "surface",
"label": "117 m²"
},
{
"type": "bathrooms",
"label": "2 bagni",
"compactLabel": "2"
},
{
"type": "floor",
"label": "Piano 2",
"compactLabel": "2"
}
]
},
{
"multimedia": null,
"bathrooms": "2",
"isMain": false,
"floor": {
"abbreviation": "1",
"value": "1° piano, con ascensore",
"floorOnlyValue": "1 piano",
"ga4FloorValue": "1 piano"
},
"price": {
"visible": true,
"value": 416000,
"formattedValue": "€ 416.000",
"minValue": "€ 416.000",
"priceRange": "300.001 - 500.000 &euro;"
},
"rooms": "3",
"elevator": true,
"surface": "118 m²",
"typology": {
"id": 14,
"name": "Appartamento"
},
"typologyGA4Translation": "Appartamento",
"ga4features": [
"balcone",
"terrazzo"
],
"ga4Heating": "Assente",
"matchSearch": false,
"photo": {
"id": 1810908879,
"caption": "Terrazzo",
"urls": {
"small": "https://pwm.im-cdn.it/image/1810908879/xxs-c.jpg"
}
},
"url": "/annunci/124360315/20410977/",
"featureList": [
{
"type": "rooms",
"label": "3 locali",
"compactLabel": "3"
},
{
"type": "surface",
"label": "118 m²"
},
{
"type": "bathrooms",
"label": "2 bagni",
"compactLabel": "2"
},
{
"type": "floor",
"label": "Piano 1",
"compactLabel": "1"
}
]
},
{
"multimedia": null,
"bathrooms": "2",
"isMain": false,
"floor": {
"abbreviation": "2",
"value": "2° piano, con ascensore",
"floorOnlyValue": "2 piano",
"ga4FloorValue": "2 piano"
},
"price": {
"visible": true,
"value": 526000,
"formattedValue": "€ 526.000",
"minValue": "€ 526.000",
"priceRange": "oltre 500.000 &euro;"
},
"rooms": "3",
"elevator": true,
"surface": "150 m²",
"typology": {
"id": 14,
"name": "Appartamento"
},
"typologyGA4Translation": "Appartamento",
"ga4features": [
"terrazzo"
],
"ga4Heating": "Assente",
"matchSearch": true,
"photo": {
"id": 1811065825,
"caption": "Salone",
"urls": {
"small": "https://pwm.im-cdn.it/image/1811065825/xxs-c.jpg"
}
},
"url": "/annunci/124360315/20410591/",
"featureList": [
{
"type": "rooms",
"label": "3 locali",
"compactLabel": "3"
},
{
"type": "surface",
"label": "150 m²"
},
{
"type": "bathrooms",
"label": "2 bagni",
"compactLabel": "2"
},
{
"type": "floor",
"label": "Piano 2",
"compactLabel": "2"
}
]
},
{
"multimedia": null,
"bathrooms": "3",
"isMain": false,
"floor": {
"abbreviation": "1",
"value": "1° piano, con ascensore",
"floorOnlyValue": "1 piano",
"ga4FloorValue": "1 piano"
},
"price": {
"visible": true,
"value": 555000,
"formattedValue": "€ 555.000",
"minValue": "€ 555.000",
"priceRange": "oltre 500.000 &euro;"
},
"rooms": "4",
"elevator": true,
"surface": "158 m²",
"typology": {
"id": 14,
"name": "Appartamento"
},
"typologyGA4Translation": "Appartamento",
"views": [
{
"id": 10,
"name": "db_feature.view.id_10"
}
],
"ga4features": [
"balcone",
"terrazzo"
],
"ga4Heating": "Assente",
"matchSearch": false,
"photo": {
"id": 1811063803,
"caption": "Salone",
"urls": {
"small": "https://pwm.im-cdn.it/image/1811063803/xxs-c.jpg"
}
},
"url": "/annunci/124360315/20410387/",
"featureList": [
{
"type": "rooms",
"label": "4 locali",
"compactLabel": "4"
},
{
"type": "surface",
"label": "158 m²"
},
{
"type": "bathrooms",
"label": "3 bagni",
"compactLabel": "3"
},
{
"type": "floor",
"label": "Piano 1",
"compactLabel": "1"
}
]
}
],
"propertiesCount": 7,
"title": "Appartamenti di nuova costruzione a Lodi",
"type": "ad",
"typology": {
"id": 276,
"name": "Progetto"
},
"hasMainProperty": true,
"isProjectLike": true,
"isMosaic": true,
"shouldBuy": true
}
]

API clients

NodeJs

import { ApifyClient } from 'apify-client';
// Initialize the ApifyClient with API token
const client = new ApifyClient({
token: '<YOUR_API_TOKEN>',
});
// Prepare Actor input
const input = {
"url": "https://www.catawiki.com/it/c/333-fake-category?filters=936%5B%5D=77927!",
"maxItems": 10,
"enableNotification": true,
"maxPrice": 100,
"sendMailTo": "user@example.com"
};
(async () => {
// Run the Actor and wait for it to finish
const run = await client.actor("o5VftMG0K2ZgXavVJ").call(input);
// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
console.dir(item);
});
})();

Python

from apify_client import ApifyClient
# Initialize the ApifyClient with your API token
client = ApifyClient("<YOUR_API_TOKEN>")
# Prepare the Actor input
run_input = {
"url": "https://www.catawiki.com/it/c/333-fake-category?filters=936%5B%5D=77927!",
"maxItems": 10,
"enableNotification": True,
"maxPrice": 100,
"sendMailTo": "user@example.com",
}
# Run the Actor and wait for it to finish
run = client.actor("o5VftMG0K2ZgXavVJ").call(run_input=run_input)
# Fetch and print Actor results from the run's dataset (if there are any)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

cURL

# Set API token
API_TOKEN=<YOUR_API_TOKEN>
# Prepare Actor input
cat > input.json <<'EOF'
{
"url": "https://www.catawiki.com/it/c/333-fake-category?filters=936%5B%5D=77927!",
"maxItems": 10,
"enableNotification": true,
"maxPrice": 100,
"sendMailTo": "user@example.com"
}
EOF
# Run the Actor
curl "https://api.apify.com/v2/acts/o5VftMG0K2ZgXavVJ/runs?token=$API_TOKEN" \
-X POST \
-d @input.json \
-H 'Content-Type: application/json'