Spitogatos.gr Greece Property Scraper
Pricing
from $0.69 / 1,000 property listings
Spitogatos.gr Greece Property Scraper
Scrape Spitogatos.gr property listings in Greece: price, m², rooms, floor, amenities, energy class, GPS, photos and a resolved agent or agency phone for every listing.
Pricing
from $0.69 / 1,000 property listings
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Spitogatos.gr Greece Property Scraper
Spitogatos.gr Greece Property Scraper extracts property listings from Spitogatos.gr, one of Greece's largest real estate portals: prices, m², rooms, floor, energy class, amenities, GPS coordinates, photos and a phone number for every listing.
| Paste any Spitogatos search, property or agency URL (or just type a place name and pick filters) and get 130+ fields per listing, including the named agent's or agency's phone, full agency details, 45+ amenity flags and high-resolution photos. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Use the Apify actor "parsebird/spitogatos-property-scraper" (actor ID: parsebird~spitogatos-property-scraper) to scrape Spitogatos.gr (Greece) real estate listings via the ApifyClient: client.actor("parsebird/spitogatos-property-scraper").call(run_input={"start_urls": [{"url": "https://www.spitogatos.gr/en/for_sale-homes/thessaloniki-center"}], "max_depth": 2}). Two input modes: (1) start_urls (array of {url}) with Spitogatos search pages, property pages (/en/property/...) or agency pages (/en/find-agents/...), in English or Greek; start_urls always win over filters; max_depth (integer, result pages of 30 per search, empty = all); max_items (integer, total cap). (2) Leave start_urls empty and search by filters: locations (array of place names, English or Greek, e.g. "Kolonaki", "Kolonaki (Thiva)"), listing_type ("sale"|"rent", default sale), category ("residential"|"commercial"|"land"|"other"|"new_development"|"student_housing"), property_types (one of apartment, studio, maisonette, detached, villa, loft, bungalow, building, apartment complex, farm, houseboat, other residential, office, store, warehouse, industrial space, craft space, hotel, business building, hall, showroom, other commercial, plot, parcel, island, other land, parking spot, business, prefabricated, detachable, air, other; must match the category), price_min/price_max (EUR, monthly rent for rentals), area_min/area_max (m²), rooms_min/rooms_max, construction_year_min/construction_year_max, floor_min/floor_max ("basement"|"semi_basement"|"ground_floor"|"semi_ground_floor"|floor number), heating_controllers (array: with_heating, autonomous, central, individual, none), heating_media (array: natural_gas, gas, petrol, current, pellet, wood, thermal_accumulator, ...), energy_class ("ap","a","bp","b","c".."g", this class or better), amenities (array: hasMainImage, reductions, garage, storage, elevator, furnished, airConditioning, balcony, garden, fireplace, secureDoor, alarm, penthouse, corner, petsAllowed, accessibleForDisabled, loadingDock, auction, view, swimmingPool, solarHeater), posted_within/updated_within ("24hours".."3years" or "dd/mm/yyyy"), sort_by ("rankingscore"|"datemodified"|"price"|"pricepersqmeters"|"size"), sort_order ("asc"|"desc"). Output: one JSON object per listing with url, id, title, listing_type, property_type, price, pricePerSqMeters, sq_meters, rooms, no_of_bathrooms, floorNumber, floor_level, floor_label, year_of_construction, renovationYear, energy_class, heating_type, heating_medium, amenities (list) plus boolean flags (parking, storage, elevator, air_conditioning, balcony, garden...), description, region/area/neighborhood, geographiesByLevel_*_fullName, address, latitude, longitude, contact_name, contact_telephone, contact_type ("agent employee"|"agency"|"private seller"), agentEmployee_firstName/lastName/telephone, agency_name, agency_telephone, agency_telephones, agency_contact_person, agency_address, agency_area, agency_website, agency_membership_type, agency_url, agent_id, images (1600x1200 URLs), first_published, modified. Pricing: pay per property scraped. Full API spec: https://apify.com/parsebird/spitogatos-property-scraper/api. Get your token: https://console.apify.com/account/integrations.
What is Spitogatos.gr Greece Property Scraper?
Spitogatos.gr Greece Property Scraper is a Spitogatos scraper and unofficial Spitogatos API that turns listings from spitogatos.gr into clean, structured data. Spitogatos does not offer a public API, and every page sits behind bot protection. This actor handles that for you and returns each listing as one flat record you can export to JSON, CSV or Excel.
The easiest way to try it: open a search on Spitogatos.gr, copy the URL from your browser, paste it into Start URLs and click Start.
What can Spitogatos.gr Greece Property Scraper do?
- 🔗 Scrape any Spitogatos URL: search result pages (with every filter you set on the site), single property pages and agency profile pages. English (
/en/...) and Greek URLs both work, and you can mix them in one run. - 🔎 Search without a URL: type place names such as
Kolonaki,GlyfadaorΚηφισιάand filter by sale or rent, category, property type, price, area, rooms, construction year, floor, heating, energy class, features and listing date, just like the site's own search form. - 📞 A phone number for every listing: when the agency named a specific agent for the listing you get that person's name and mobile; otherwise you get the agency's own number, plus the agency's full contact details.
- 🏠 Full listing details: price and price per m², living area, rooms, bathrooms, floor, construction and renovation year, energy class, heating type and fuel, orientation, flooring, window frames, 45+ yes/no amenity flags, the full description and all photos in 1600x1200.
- 📍 Location data: region, area and neighbourhood names, Spitogatos' geography hierarchy and GPS coordinates (when the advertiser publishes them).
- ⏱️ Runs on Apify: schedule daily runs to track new listings and price changes, call it through the Apify API, and push results to Google Sheets, Slack, Make, Zapier or webhooks with integrations.
What data can you extract from Spitogatos.gr?
A record carries 130+ keys. The most useful ones:
| Field | Description |
|---|---|
url, id, title | Listing URL, Spitogatos property ID and a readable title |
listing_type, property_type, category_label | Sale or rent; Apartment, Store, Land plot, Parking space...; Home, Commercial, Land, Other |
price, pricePerSqMeters, price_reduced | Asking price in EUR (monthly rent for rentals), price per m², reduction flag |
sq_meters, rooms, no_of_bathrooms, lot_size | Living area in m², rooms, bathrooms, plot size |
floorNumber, floor_level, floor_label | Spitogatos' raw floor code, the actual floor (e.g. 3) and a label (3rd floor, Ground floor) |
year_of_construction, renovationYear | Year built and year renovated |
energy_class, heating_type, heating_medium | Energy certificate (A+ to G), Autonomous/Central, Natural gas/Petrol/... |
amenities + flags | List of features present, plus booleans such as parking, storage, elevator, air_conditioning, balcony, garden, fireplace, pets_allowed |
description | Full listing text (description_language tells you if only a Greek version exists) |
region, area, neighborhood, address | Location names, e.g. Thessaloniki - Municipality / Faliro - Ippokratio / Agia Triada |
latitude, longitude | GPS coordinates when the advertiser shows the exact or approximate position |
contact_name, contact_telephone, contact_type | The phone to call and who it belongs to: agent employee, agency or private seller |
agentEmployee_firstName, agentEmployee_lastName, agentEmployee_telephone | The named agent, when there is one |
agency_name, agency_telephones, agency_contact_person, agency_address, agency_website, agency_url | Agency details and its Spitogatos profile |
images | High-resolution photo URLs |
first_published, modified | When the listing went live and when it was last updated |
How to scrape Spitogatos.gr
- Open Spitogatos.gr Greece Property Scraper in Apify Console and click Try for free.
- Option A: run a search on spitogatos.gr, set your filters, copy the URL and paste it into Start URLs. You can also paste property pages (
/en/property/...) or agency pages (/en/find-agents/...). - Option B: leave Start URLs empty, type one or more Locations and pick filters such as listing type, category, property type and price range.
- Set Max result pages per search to control how many pages of 30 listings are scraped (leave it empty for all pages).
- Click Start. When the run finishes, download the dataset as JSON, CSV, Excel or HTML, or read it through the API.
Input
There are two ways to tell the actor what to scrape. Start URLs always win: if you fill them in, the filter section is ignored. Leave them empty and the actor searches by filters instead.
1. Start URLs
{"start_urls": [{ "url": "https://www.spitogatos.gr/en/for_sale-homes/thessaloniki-center/order_datemodified_desc" },{ "url": "https://www.spitogatos.gr/en/to_rent-apartments/athens-center" },{ "url": "https://www.spitogatos.gr/en/property/1219633385" }],"max_depth": 10}
Rental searches on Spitogatos live under /to_rent-.... If you paste a /for_rent-... address, the actor corrects it for you.
2. Search by filters
{"start_urls": [],"locations": ["Analipsi - Mpotsari - Nea Paralia"],"listing_type": "sale","category": "commercial","property_types": "store","price_min": 10000,"price_max": 160000,"area_min": 20,"area_max": 90}
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
start_urls | array of { "url": ... } | No | — | Search, property or agency pages. When filled, filters are ignored |
max_depth | integer | No | all pages | Result pages (30 listings each) per search URL, filter search or agency. Ignored for property URLs |
max_items | integer | No | no limit | Stop after this many properties in total |
locations | array of strings | Yes, for filter search | — | Place names in English or Greek. Partial names work, postcodes do not |
listing_type | sale / rent | No | sale | Properties for sale or to rent |
category | string | No | residential | residential (Home), commercial, land, other, new_development, student_housing |
property_types | string | No | — | One type that belongs to the category (see below) |
price_min / price_max | integer | No | — | Price range in EUR; monthly rent for rentals |
area_min / area_max | integer | No | — | Living area range in m² |
rooms_min / rooms_max | integer | No | — | Room count range |
construction_year_min / construction_year_max | integer | No | — | Year built range |
floor_min / floor_max | string | No | — | basement, semi_basement, ground_floor, semi_ground_floor or a floor number |
heating_controllers | array | No | — | with_heating, autonomous, central, individual, none |
heating_media | array | No | — | natural_gas, gas, petrol, current, thermal_accumulator, stove, pellet, infrared, fan_coil, wood, teleheating, geothermal_energy, heating_pump |
energy_class | string | No | — | ap (A+), a, bp (B+), b to g: this class or better |
amenities | array | No | — | hasMainImage, reductions, garage, storage, elevator, furnished, airConditioning, balcony, garden, fireplace, secureDoor, alarm, penthouse, corner, petsAllowed, accessibleForDisabled, loadingDock, auction, view, swimmingPool, solarHeater |
posted_within / updated_within | string | No | — | 24hours, 3days, 1week, 1month, 3months, 6months, 1year, 3years, or a date like 25/09/2026 |
sort_by / sort_order | string | No | rankingscore | rankingscore, datemodified, price, pricepersqmeters, size; asc or desc |
Property types by category (pick one, from the right category):
| Category | Property types |
|---|---|
Home (residential) | Apartment, Studio, Maisonette, Detached house, Villa, Loft, Bungalow, Building, Apartment complex, Farm, Houseboat, Other residential properties |
| Commercial | Office, Store, Warehouse, Industrial space, Craft space, Hotel, Business building, Hall, Showroom, Other commercial properties |
| Land | Land plot, Parcel, Island, Other types of land |
| Other | Parking space, Business, Prefabricated, Detachable, Air, Other property types |
| New development | Same as Home |
| Student housing | Same as Home |
A few things worth knowing about filter searches:
- Several locations are searched together. Add both
KolonakiandGlyfadaand you get both, with no duplicates. - Names repeat around Greece. "Kolonaki" exists in Athens and in Thiva. Type the full name as the site shows it,
Kolonaki (Thiva), to pin down the other one. The run log always says which place it picked. - Each feature you add narrows the search, so a long feature list on a small area can legitimately match nothing.
- Proxies, concurrency, retries and session handling are tuned inside the actor. There is nothing to configure.
Output example
Trimmed to the most useful fields. A real record carries 130+ keys, including every amenity flag.
{"url": "https://www.spitogatos.gr/en/property/1119559034","id": 19559034,"title": "Sale, Apartment, 140m² Faliro - Ippokratio, Agia Triada","listing_type": "sale","property_type": "Apartment","price": 310000,"pricePerSqMeters": 2214.29,"sq_meters": 140,"rooms": 3,"no_of_bathrooms": 1,"floorNumber": 7,"floor_level": 2,"floor_label": "2nd floor","year_of_construction": 1980,"energy_class": "D","heating_type": "Autonomous","heating_medium": "Petrol","amenities": ["Elevator", "View", "Secure door", "Facade", "Bright", "Airy", "Pets welcome", "Investment property"],"elevator": true,"parking": false,"region": "Thessaloniki - Municipality","area": "Faliro - Ippokratio","neighborhood": "Agia Triada","geographiesByLevel_4_fullName": "Faliro - Ippokratio (Thessaloniki - Municipality)","latitude": 40.616428,"longitude": 22.959925,"contact_name": "Στέλιος Βουγιουκλούδης","contact_telephone": "6972446442","contact_type": "agent employee","agentEmployee_firstName": "Στέλιος","agentEmployee_lastName": "Βουγιουκλούδης","agentEmployee_telephone": "6972446442","agent_id": 10353,"agency_name": "Clock Real Estate","agency_telephone": "+302310288022","agency_telephones": "+302310288022","agency_address": "G.PAPANDREOU 10 (ANTHEON)","agency_website": "http://www.clockrealestate.gr","agency_membership_type": "brandPlus","agency_url": "https://www.spitogatos.gr/en/find-agents/Clock-Real-Estate/10353","images": ["https://m1.spitogatos.gr/347960715_1600x1200.jpg?v=20130730","https://m2.spitogatos.gr/347960719_1600x1200.jpg?v=20130730"],"description": "Apartment for sale in Ippokratio of Thessaloniki - Center for 310.000€ ...","first_published": "2026-03-17","modified": "2026-09-30"}
Download the dataset in JSON, CSV, Excel, XML or HTML from the Storage tab, or fetch it with the Apify API. The Console shows two ready-made views: Overview (price, size, location, contact) and Contacts (agent and agency details).
How much does it cost to scrape Spitogatos.gr?
The actor uses pay-per-event pricing: you pay only for properties saved to your dataset. Proxy and browser costs are included.
| Event | Apify plan | Price per property | Price per 1,000 properties |
|---|---|---|---|
property-scraped | Free | $0.00099 | $0.99 |
property-scraped | Bronze | $0.00089 | $0.89 |
property-scraped | Silver | $0.00079 | $0.79 |
property-scraped | Gold | $0.00069 | $0.69 |
One page of search results (30 properties) costs about $0.03 on the Free plan, and 1,000 properties cost $0.99. Apify's free plan includes monthly platform credits you can spend on this actor. Set a spending limit on the run and the actor stops as soon as it is reached.
Use cases
- Market research: compare asking prices and price per m² across Athens, Thessaloniki, the islands or any Greek neighbourhood.
- Lead generation: build call lists of agents and agencies active in an area, with phone numbers and websites.
- Investment analysis: filter by price, size, construction year and energy class to spot undervalued properties.
- Price monitoring: schedule a search sorted by last update and track new listings and price reductions.
- Agency monitoring: scrape a competitor's full portfolio from its Spitogatos agency page.
- Data enrichment: feed listings into a CRM, spreadsheet or BI dashboard.
How it works
- Every start URL is read the way Spitogatos itself reads it: search pages keep all their filters, property pages are fetched directly, and agency pages list every property the agency has published.
- For filter searches, each place name is matched against Spitogatos' own location search and the chosen area is written to the run log.
- Result pages (30 listings each) are walked until
max_depthor the last page is reached. Listings that appear in more than one search are saved once. - Each listing's full details are fetched: description, amenities, agent and agency contact data and all photos. Listings written only in Greek keep their Greek description.
- The contact is resolved: the named agent's mobile when the agency assigned one, otherwise the agency's phone.
Python example
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("parsebird/spitogatos-property-scraper").call(run_input={"locations": ["Kolonaki", "Glyfada"],"listing_type": "rent","category": "residential","property_types": "apartment","price_max": 2000,"max_depth": 2,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["price"], item["contact_telephone"])
JavaScript example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('parsebird/spitogatos-property-scraper').call({start_urls: [{ url: 'https://www.spitogatos.gr/en/for_sale-homes/thessaloniki-center' }],max_depth: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => console.log(item.title, item.price, item.contact_telephone));
See the Python client and JavaScript client docs for more.
Is it legal to scrape Spitogatos.gr?
This actor collects only data that Spitogatos.gr publishes openly on its listing pages. Listings can include personal data such as agent names and phone numbers, which is protected by the GDPR in Greece and the EU. Make sure you have a legitimate reason to process it, and follow Spitogatos' terms of use. If you are unsure, consult a lawyer. Read more in Apify's guide: Is web scraping legal?
Other real estate scrapers
- Immobiliare.it Scraper: property listings from Italy
- Fotocasa Scraper: property listings from Spain
- Habitaclia.com Scraper: property listings from Spain
- Homegate.ch Swiss Real Estate Scraper: property listings from Switzerland
- ImmoScout24 Scraper: property listings from Germany
- Zoopla Property Scraper: property listings from the UK
- Daft.ie Property Scraper: property listings from Ireland
FAQ
Do I need a Spitogatos account or my own proxy? No. The actor works with public listings, and proxies, retries and bot protection are handled inside it.
Can I scrape rentals?
Yes. Paste a /to_rent-... search URL or set listing_type to rent. For rentals, price is the monthly rent.
Why do some listings have no GPS coordinates?
Advertisers choose whether to show the exact position, an approximate one or none. geocode_type tells you which (exact, offset or hidden). Hidden listings have latitude and longitude set to null.
Why is the contact sometimes the agency instead of a person?
Spitogatos only attaches a named agent to some listings. For the rest the site shows the agency's own number, so contact_type is agency and contact_telephone holds the agency's phone. All agency numbers are in agency_telephones.
Why did my filter search return nothing? Each filter narrows the results, so a small area with several features may have no matches. Check the run log to see which place each location was matched to, then loosen the filters.
How many listings can I get from one search?
All of them. Leave max_depth empty to walk every result page, or use max_items to cap the total.
Why did I get a few less than 30 properties per page?
Spitogatos' default ranking can reshuffle while a run walks through the pages, so the same listing sometimes shows up on two pages. The actor saves each listing only once. Sort by last update (order_datemodified_desc in the URL, or sort_by: datemodified) for the most stable paging.
Can I run it on a schedule? Yes. Use Apify Schedules to run the actor daily or weekly, and integrations to send new data to Google Sheets, Slack or your own webhook.
Can I use it through an API? Yes. Start runs and fetch results through the API tab or the official Python and JavaScript clients shown above.
Something is missing or broken. What should I do? Open an issue on the actor's Issues tab with the input you used. Feedback helps keep the scraper in line with Spitogatos.gr changes.