atHome.lu Scraper - Luxembourg Property Listings & Prices
Pricing
from $1.14 / 1,000 property searches
atHome.lu Scraper - Luxembourg Property Listings & Prices
Read atHome.lu listings across Luxembourg and the Greater Region: euro prices, m2, bedrooms, energy class, GPS, agency contacts and photos. No key needed.
Pricing
from $1.14 / 1,000 property searches
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
atHome.lu Scraper — Luxembourg Property Listings, Prices & Agencies 🚀
🎉 Every atHome.lu listing as a typed row — price, m², bedrooms, energy class, GPS and the agency's own phone and e-mail
Built for analysts, relocation services and property investors working Luxembourg and its cross-border commuter belt
🔎 What is the atHome.lu Luxembourg Property Scraper — and when should you use it?
The atHome.lu Luxembourg Property Scraper turns public atHome.lu property adverts from anywhere in Luxembourg and its cross-border commuter belt 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: Luxembourg sale and rental adverts as rows. Each one carries the asking price or monthly rent in euro, the price per square metre, the living area, and counts for rooms, bedrooms, bathrooms, showers and parking. The address comes with a street, a postcode and GPS coordinates, and the advert names the agency behind it with its phone number, e-mail and website. Energy, CO2 and thermal-insulation classes are on every row. Switch on the full advert and a row also carries the untruncated text, the monthly charges and how often they are billed, the rental deposit, who pays the commission, and the construction and renovation years. Every search reports its true size before you page through it.
Use something else when: the property is not in Luxembourg or one of the border towns atHome indexes. Use Immoweb Scraper for Belgium, next door and on the same commuter map, sale and rent. Use ImmobilienScout24 Scraper for Germany, including the Trier and Saarland border belt. Use ImmoScout24.ch Scraper for Switzerland, the other small high-price European market. This actor covers the public listing sections of athome.lu — apartments, houses, new-build projects, new houses, land, commercial premises, offices, garages and parking, and investment buildings, for sale and to rent. Sold prices, transaction history, cadastral records and owner identities are out of scope because atHome does not publish them; a valuation product needs a land-registry source instead. atHome's index reaches into France, Germany and Belgium, so a French or German border town returns rows here rather than from the sibling actors.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/athome-lu-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 property adverts and asking prices from atHome.lu using the Apify Actor `sian.agency/athome-lu-property-scraper`.Use it when I need: Luxembourg sale and rental adverts as rows. Each one carries the asking price or monthly rent in euro, the price per square metre, the living area, and counts for rooms, bedrooms, bathrooms, showers and parking. The address comes with a street, a postcode and GPS coordinates, and the advert names the agency behind it with its phone number, e-mail and website. Energy, CO2 and thermal-insulation classes are on every row. Switch on the full advert and a row also carries the untruncated text, the monthly charges and how often they are billed, the rental deposit, who pays the commission, and the construction and renovation years. Every search reports its true size before you page through it.Don't use it when: the property is not in Luxembourg or one of the border towns atHome indexes — use immoweb-be-property-scraper or immobilienscout24-property-scraper or immoscout24-ch-property-scraper instead.How to call it: set `transaction` to `buy` or `rent`, pick a `propertyType` from the nine sections atHome publishes (or `all` for its combined section), and give `location` one atHome town slug — `luxembourg`, `esch-sur-alzette`, `strassen`, or a cross-border town such as `thionville`. Narrow it with `minPrice`/`maxPrice` in euro, `minSurface`/`maxSurface` in square metres and `minBedrooms`/`maxBedrooms`, all of which are handed to atHome's own search rather than applied afterwards; `sort` takes `date_desc` for monitoring or `price_asc` for a price floor. Set `maxResults` to your row budget, turn `includeDetails` on for the untruncated advert text, monthly charges and construction year, or paste an atHome result address into `searchUrls` for a search you refined in the browser. To read adverts you already have, set `operation` to `detail` and put their addresses in `listingUrls`.Start with this input:{"operation": "search","transaction": "buy","propertyType": "apartment","location": "luxembourg","minPrice": 400000,"maxPrice": 900000,"minBedrooms": 2,"sort": "date_desc","maxResults": 200}Ask me which town or towns to cover, whether they want to buy or to rent, what the budget is, and whether the full advert text and monthly charges are worth the extra per-listing charge, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- Pull every two-bedroom apartment for sale in Luxembourg City between 600,000 and 900,000 euro and rank the suburbs by price per square metre.
- List this week's new rentals in Strassen and Bertrange with the agency's phone number for each, ready to paste into a sheet.
- Compare asking prices for three-bedroom houses in Esch-sur-Alzette against Thionville just over the French border.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/athome-lu-property-scraper.md.
📋 Overview
Luxembourg's property market is small, expensive and badly documented. atHome.lu carries most of what is actually for sale or to let. This Actor reads it into rows you can work with.
Why analysts and agencies pick this one:
- ✅ 74 fields per listing: price, price per m², surface, rooms, bedrooms, bathrooms, showers, parking, floor, energy class, CO₂ class, insulation class, street, postcode, GPS, agency contacts and the full photo set.
- ⚡ Filters run on atHome, not afterwards: price, surface, bedroom and room bounds plus six sort orders are handed to the portal's own search. You pay for the listings you asked for.
- 🎯 The cross-border belt is included: 1,154 towns, and most of them are not in Luxembourg. Thionville, Metz, Trier, Arlon and Longwy are where a large share of this market lives.
- 💰 $1.30 per 1,000 listings with no minimum charge. A 40-listing test run costs about five cents.
- 💎 Advertiser contacts are in the row: agency name, phone, e-mail and website, straight from the advert.
- ✨ Two modes: walk the market, or open one advert and read everything in it.
✨ Features
- 🔍 Property Search: walk any deal type, section and town, page after page, up to 20,000 listings in a run.
- 📄 Property Detail: full advert text, monthly charges, rental deposit, construction and renovation years, and the complete energy record.
- 🏘️ Nine property sections: apartments, houses, new-build projects, new houses, land, commercial premises, offices, garages and investment buildings, or all of them at once.
- 💶 Server-side price and size filters: minimum and maximum price, surface, bedrooms and rooms.
- ↕️ Six sort orders: newest, oldest, cheapest, dearest, smallest, largest.
- 🌐 Paste your own atHome address: refine a search in your browser, copy the link, run it. French, German and English addresses all work.
- 🗺️ Coordinates on every row: latitude and longitude, ready for a map or a commute calculation.
- 🏗️ New-build projects handled properly: a project keeps its price and surface range plus its unit counts, instead of being flattened into one misleading number.
- 🗣️ Trilingual advert text: English where the advertiser wrote it, French or German otherwise, and the row records which.
- 📸 Every photo, full size: absolute image URLs and a count, ready for a listing gallery.
🎬 Quick Start
Pick a deal type, a property section and a town. Press Start. Rows land in your dataset within seconds, and you are charged only for listings actually returned.
curl -X POST https://api.apify.com/v2/acts/sian.agency~athome-lu-property-scraper/runs?token=YOUR_TOKEN \-H 'Content-Type: application/json' \-d '{"operation":"search","transaction":"buy","propertyType":"apartment","location":"luxembourg","maxResults":100}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose the market
Set Buy or rent, pick a Property section and type a Town the way atHome spells it: luxembourg, esch-sur-alzette, strassen, thionville.
Step 2: Narrow it
Add a price range, a surface range or a bedroom count. These go to atHome's own search, so a tight filter means a cheap run.
Step 3: Press Start
Rows appear in the dataset as they arrive. Export JSON, CSV or Excel, or read them over the API.
That's it! In under a minute, you'll have:
- A typed row for every matching listing
- Agency contacts attached to each one
- Coordinates ready to plot on a map
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
operation | string | No | search walks atHome; detail reads advert URLs you already have |
transaction | string | No | buy or rent |
propertyType | string | No | all, apartment, house, new-property, new-house, land, commercial-property, office, garage-parking, investment-building |
location | string | No | One atHome town slug, lower case with hyphens |
bedrooms | string | No | An exact count: 1-bedroom … 5-bedrooms |
maxResults | integer | No | Stop after this many listings |
minPrice / maxPrice | integer | No | Price bounds in euro; monthly rent on the rental side |
minSurface / maxSurface | integer | No | Living area bounds in m² |
minBedrooms / maxBedrooms | integer | No | Bedroom range |
minRooms / maxRooms | integer | No | Total room range, bedrooms included |
sort | string | No | date_desc, date_asc, price_asc, price_desc, surface_asc, surface_desc |
includeDetails | boolean | No | Add the full advert to every search row |
searchUrls | array | No | atHome result pages you already have; the pickers above are then ignored |
listingUrls | array | No | atHome advert addresses, required for detail |
Example:
{"operation": "search","transaction": "rent","propertyType": "apartment","location": "strassen","maxPrice": 2500,"minBedrooms": 2,"sort": "date_desc","maxResults": 200}
Reading adverts you already have:
{"operation": "detail","listingUrls": [{ "url": "https://www.athome.lu/en/buy/apartment/luxembourg/id-8949077.html" },{ "url": "https://www.athome.lu/en/rent/house/strassen/id-9313771.html" }]}
📤 Output
Results are saved to the Apify dataset with 74 fields per listing, including:
| Field | Type | Description |
|---|---|---|
listingId | integer | atHome's own listing number |
listingUrl | string | Direct link to the advert |
listingTitle | string | Project name, or property type and town |
price | number | Asking price in euro; monthly rent on the rental side |
pricePerSqm | number | Price divided by living area |
surface | number | Living area in m² |
bedrooms | integer | Bedroom count |
energyClass | string | Energy performance class |
city / postcode / street | string | Address as atHome publishes it |
latitude / longitude | number | Coordinates of the property |
agencyName | string | The agency advertising it |
agencyPhone / agencyEmail | string | Direct contacts from the advert |
listingDescription | string | Advert text, preview on search rows and complete on detail rows |
imageUrls | array | Every photo, full size |
Example:
{"listingId": 9325185,"listingUrl": "https://www.athome.lu/en/buy/apartment/luxembourg/id-9325185.html","listingTitle": "Apartment — Luxembourg-Weimerskirch","transaction": "buy","propertyType": "Apartment","price": 699000,"currency": "EUR","pricePerSqm": 8737.5,"surface": 80,"bedrooms": 2,"bathrooms": 1,"floor": 2,"energyClass": "F","gasEmissionClass": "NC","insulationClass": "F","street": "19 Raspert","postcode": "2414","city": "Luxembourg-Weimerskirch","suburb": "Weimerskirch","region": "Centre","country": "Luxembourg","latitude": 49.6287566,"longitude": 6.1342067,"advertiserType": "agency","agencyName": "LUX-JB-IMMO","agencyPhone": "+352 53 23 24 1","agencyEmail": "info@lux-immo.lu","photoCount": 7,"descriptionIsPreview": true,"updatedAt": "2026-09-08T13:12:41"}
💼 Use Cases & Examples
1. Price-per-m² Tracking by Commune
Market analysts building the €/m² series nobody publishes for Luxembourg.
Input: A property section and a town, run on a weekly schedule. Output: Every live listing with price, surface and the derived €/m². Use: A time series per commune that shows where the market is actually moving.
2. Agency Lead Lists
Proptech and service businesses that sell to estate agents.
Input: A whole section with no price filter. Output: Rows carrying the agency name, phone, e-mail and website. Use: Group by agency to rank who is carrying the most stock, contacts already attached.
3. Relocation and Expat Rental Feeds
Relocation consultants placing new arrivals in the Grand Duchy.
Input: The rental side, a budget, a bedroom range, sorted newest first. Output: A short, current list of what is genuinely available. Use: A daily feed for clients, without anyone refreshing a browser.
4. Cross-Border Price Comparison
Investors and employers studying the commuter belt.
Input: The same property type in Esch-sur-Alzette and in Thionville. Output: Two comparable sets of rows with prices and surfaces. Use: Quantify the border premium that shapes where Luxembourg's workforce lives.
5. Energy-Class Screening for Buy-to-Let
Landlords and funds working under tightening efficiency rules.
Input: A section plus a price ceiling. Output: Energy, CO₂ and insulation classes on every row. Use: Drop the F and G stock before anyone books a viewing.
6. Development-Site Sourcing
Developers looking for land and investment buildings.
Input: The land or investment-building section for a canton. Output: Surface, asking price and coordinates. Use: Rank sites by price per square metre of ground rather than of floor.
7. New-Build Project Monitoring
Sales teams tracking competing developments.
Input: The new-build projects section for a town. Output: Project name, price and surface ranges, total units, units still available. Use: Watch absorption rates across competing schemes week by week.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/athome-lu-property-scraper').call({operation: 'search',transaction: 'buy',propertyType: 'apartment',location: 'luxembourg',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/athome-lu-property-scraper').call(run_input={'operation': 'search','transaction': 'rent','propertyType': 'house','location': 'strassen','maxResults': 50,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['listingTitle'], item['price'], item['agencyName'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~athome-lu-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"search","transaction":"buy","propertyType":"house","location":"bertrange","maxResults":50}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: a daily schedule, or a webhook from your own system
- HTTP Request: start a run with your filters
- Process: read the dataset items as JSON
- Action: write to a sheet, alert a channel, or upsert into your CRM
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 listings per search run and 10 adverts per detail run, with every field and the same quality
- No credit card required
- Enough to prove the data before you commit
PAID Tier (Production Ready)
- Up to 20,000 listings in a single run
- Pay per listing returned; an empty search and an unreadable address both cost nothing
- No minimum charge per run
💰 $1.30 per 1,000 listings. The three alternatives on this portal charge $2.00, $2.30 and $9.10.
❓ Frequently Asked Questions
Q: Do I need an atHome account or an API key? A: No. The Actor reads the same public pages a visitor sees.
Q: How many listings can I get in one run? A: FREE tier: 25 per search run. PAID tier: up to 20,000.
Q: Does it cover property outside Luxembourg? A: Yes, wherever atHome does. Its index reaches Thionville, Metz, Trier, Arlon and Longwy. 1,154 towns are recognised.
Q: Why is the price empty on some rows?
A: Two reasons, and the row tells you which. Some adverts hide the price behind a request, which sets isPriceOnDemand to true. New-build projects quote a range, so priceMin and priceMax are filled instead.
Q: Is the description the whole advert?
A: On search rows it is atHome's preview, cut off around 500 characters. The descriptionIsPreview field says so. Switch on the full-advert option, or run the detail mode, for the complete text.
Q: Which language are descriptions in? A: Whatever the advertiser supplied. atHome carries up to three versions, and the row records which one it used.
Q: Can I reuse a search I built on atHome itself? A: Yes. Copy the address from your browser into Search URLs, filters and all.
Q: What output formats are available? A: JSON, CSV and Excel, exported straight from the Apify dataset.
🐛 Troubleshooting
"atHome.lu does not publish listings for …"
- The town name is not one atHome indexes. The message lists the closest real ones, so pick one of those.
- Use atHome's own spelling, lower case with hyphens:
esch-sur-alzette, notEsch/Alzette.
A run came back with no listings
- The filters were too tight for the town. Widen the price or surface bounds, or drop the exact bedroom count.
- Some sections are thin in small communes. Try
allfor the property section.
Fewer rows than expected
- On the FREE tier a search run stops at 25 listings. Add credit to lift the cap.
- Check
maxResults: it is also the run's budget.
A detail run returned an error row
- The advert has been withdrawn. Re-run the search to see what is live now.
The run says atHome asked us to slow down
- Space runs further apart on a schedule, or ask for fewer listings at a time.
⚖️ 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.
atHome and atHome.lu are trademarks of atHome Group S.A. This Actor is not affiliated with, endorsed by, or sponsored by atHome Group.
🤝 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