xe.gr Real Estate Scraper — Greece Property Listings
Pricing
from $3.50 / 1,000 results
xe.gr Real Estate Scraper — Greece Property Listings
Scrape property listings from xe.gr — Greece's #1 classifieds portal (1.5M+ visitors, 500K+ ads). Extract apartments, houses, land, commercial, parking by area, price, size and bedrooms. Returns price, €/m², floors, year, location, agent and images per listing. Direct HTML — no browser, no anti-bot.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
xe.gr Real Estate Scraper — Scrape Greece Property Listings & Prices
Scrape property listings from xe.gr, Greece's largest classifieds portal with 500K+ active listings and 1.5M+ monthly visitors. This xe.gr real estate scraper extracts apartments, houses, land, commercial space and parking — by area, transaction type (sale or rent), price, size and bedrooms — and returns structured Greek property data: price, m², €/m², floors, bedrooms, year built, location and agent. It runs on fast direct HTML scraping (no browser) and exports to JSON, CSV or Excel. Covers Athens, Thessaloniki, Piraeus, Patras and all of Greece.
✨ What this Actor does / Key features
- 🏠 All property categories — apartments, maisonettes, detached houses, land, commercial property, parking and storage.
- 🔁 Sale or rent — 16 listing variations covering every transaction × property-type combination.
- 📍 Area targeting — search any area using xe.gr's Google Place IDs; multiple areas run as separate tasks.
- 💶 Powerful filters — filter by price range (EUR), surface range (m²) and bedroom range.
- 📊 Rich listing data — price, €/m², size, bedrooms, bathrooms, year built, floors, renovated/furnished flags, location and agent.
- 🖼️ Images & agent info — main image URL and agent logo URL for every listing.
- 🌐 English or Greek — choose the URL language prefix for output.
- ⚡ Fast HTML scraping — pure HTTP with
__NEXT_DATA__JSON extraction and a cheerio fallback; no browser overhead. - 🛡️ Proxy support — Apify Proxy integration (residential + country=GR recommended for scale).
🔍 Input
| Field | Type | Description |
|---|---|---|
geoPlaceIds | array | Google Place IDs used by xe.gr for geo-filtering. Each ID becomes its own task. Required. |
areaSlugs | array | Optional URL slugs paired 1:1 with geoPlaceIds for cleaner request URLs. |
variation | string | Listing variation — transaction type × property type (e.g. apartment-for-sale, property-to-rent). |
priceMin | integer | Minimum price filter in EUR. 0 = no minimum. |
priceMax | integer | Maximum price filter in EUR. 0 = no maximum. |
sqmMin | integer | Minimum surface area in m². 0 = no minimum. |
sqmMax | integer | Maximum surface area in m². 0 = no maximum. |
bedroomsMin | integer | Minimum bedroom count. 0 = no minimum. |
bedroomsMax | integer | Maximum bedroom count. 0 = no maximum. |
language | string | URL language prefix: en (English) or el (Greek). |
maxListings | integer | Total cap across all area tasks. 0 = unlimited. |
maxPagesPerTask | integer | Pagination depth per Place ID (xe.gr caps deep pagination around page 295). |
requestDelay | integer | Delay between sequential requests, in milliseconds. |
maxRetries | integer | Retries per request on HTTP errors (rotates proxy IP). |
proxyConfiguration | object | Apify Proxy settings. Residential with country=GR recommended for scale. |
🚀 Example input
{"geoPlaceIds": ["ChIJ8UNwBh-9oRQR3Y1mdkU1Nic"],"areaSlugs": ["athens"],"variation": "apartment-for-sale","priceMin": 100000,"priceMax": 500000,"sqmMin": 50,"sqmMax": 150,"bedroomsMin": 1,"bedroomsMax": 3,"language": "en","maxListings": 500,"maxPagesPerTask": 20,"requestDelay": 800,"maxRetries": 3,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "GR" }}
Finding a Place ID: open any area page on xe.gr (e.g.
/en/property/r/property-for-sale/ChIJ8UNwBh-9oRQR3Y1mdkU1Nic_athens). The 27-character segment between/r/{variation}/and_{slug}is the Place ID. Athens =ChIJ8UNwBh-9oRQR3Y1mdkU1Nic, Thessaloniki =ChIJ7eAoFPQ4qBQRqXTVuBXnugk, Piraeus =ChIJRzGst-u7oRQR9_0w_5XaINg.
📦 Output
Each property listing is saved as a structured item in the dataset. Export to JSON, CSV, Excel or XML, or pull via the Apify API.
| Field | Description |
|---|---|
adId | Listing's stable UUID |
detailUrl | Full xe.gr listing detail URL |
title | Listing title |
propertyType | Property type (Apartment, Maisonette, etc.) |
transactionType | buy or rent |
itemType | xe.gr item type (re_residence, re_land, etc.) |
price | Numeric price |
priceText | Price as displayed (e.g. "€1,150,000") |
currency | Currency code (EUR) |
pricePerSqm | Price per square meter (€/m²) |
sqMeters | Surface area in m² |
bedrooms | Number of bedrooms |
bathrooms | Number of bathrooms |
yearBuilt | Year of construction |
floors | Array of floors the unit occupies |
isRenovated | Renovated flag (from image alt text) |
isFurnished | Furnished flag (from image alt text) |
location | Full location label |
city | City |
area | Neighborhood / area |
mainImageUrl | Main listing image URL |
agentLogoUrl | Agent / agency logo URL |
agentName | Agent name (often null — xe.gr usually shows only a logo) |
isMultipleListings | Flags multi-agent listings of the same property |
postedRelative | Relative posting time (e.g. "3 weeks ago") |
searchGeoPlaceId | Place ID used for this search |
searchAreaSlug | Area slug used for this search |
searchVariation | Listing variation used |
searchTransactionType | Transaction type used |
searchItemType | Item type used |
searchBuildingType | Building type used |
scrapedAt | Scrape timestamp (ISO 8601) |
💡 Use cases
- Market research — build €/m² heatmaps by neighborhood, track listing density and time-on-market trends.
- Investment screening — calculate rental yield ratios (rent vs. sale price) per area.
- Competitive analytics — track competing agencies via agent logos and listing volume.
- Lead generation — discover every active agency in a target area and property segment.
- Price tracking — re-run on a schedule and diff against prior datasets to catch price changes.
- De-duplication research — use the
isMultipleListingsflag to detect multi-agent ads for the same property.
❓ Frequently Asked Questions
Is it legal to scrape xe.gr? The Actor only collects publicly available property listing data. You are responsible for using the data in compliance with xe.gr's terms and applicable laws such as GDPR.
Do I need an API key or a login? No. There is no xe.gr account, login or API key required — only an Apify account.
Do I need a proxy? xe.gr does not appear to deploy heavy bot defense, so a datacenter proxy is usually sufficient at low volume. For sustained, large-scale scraping, residential Apify Proxy with country=GR is recommended.
How do I target a specific city or neighborhood? xe.gr filters geographically by Google Place IDs. Open any area page on xe.gr and copy the place ID from the URL — common IDs for Athens, Thessaloniki, Piraeus and more are listed above.
How much data can I get? You can scrape thousands of listings per run — xe.gr returns ~30–100 listings per page and allows up to ~295 pages per filter set. For saturated areas, narrow the search with price ranges for full coverage.
Can I filter by price, size or bedrooms? Yes. You can filter by price range (EUR), surface range (m²) and bedroom range, and choose any of 16 sale/rent variations across property types.
What output formats are supported? Results are stored in a structured Apify dataset and can be exported as JSON, CSV, Excel or XML, or accessed via the Apify API.
⏰ Scheduling & integration
Schedule this Actor on Apify to track the Greek property market daily or weekly. Export results to JSON, CSV or Excel, sync to Google Sheets, or push to your database, BI tools and webhooks through the Apify API.