atHome.lu Scraper - Luxembourg Property Listings & Prices avatar

atHome.lu Scraper - Luxembourg Property Listings & Prices

Pricing

from $1.14 / 1,000 property searches

Go to Apify Store
atHome.lu Scraper - Luxembourg Property Listings & Prices

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Ü

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

atHome.lu Scraper — Luxembourg Property Listings, Prices & Agencies 🚀

SIÁN Agency Store Immoweb ImmobilienScout24 ImmoScout24.ch

🎉 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

FieldTypeRequiredDescription
operationstringNosearch walks atHome; detail reads advert URLs you already have
transactionstringNobuy or rent
propertyTypestringNoall, apartment, house, new-property, new-house, land, commercial-property, office, garage-parking, investment-building
locationstringNoOne atHome town slug, lower case with hyphens
bedroomsstringNoAn exact count: 1-bedroom5-bedrooms
maxResultsintegerNoStop after this many listings
minPrice / maxPriceintegerNoPrice bounds in euro; monthly rent on the rental side
minSurface / maxSurfaceintegerNoLiving area bounds in m²
minBedrooms / maxBedroomsintegerNoBedroom range
minRooms / maxRoomsintegerNoTotal room range, bedrooms included
sortstringNodate_desc, date_asc, price_asc, price_desc, surface_asc, surface_desc
includeDetailsbooleanNoAdd the full advert to every search row
searchUrlsarrayNoatHome result pages you already have; the pickers above are then ignored
listingUrlsarrayNoatHome 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:

FieldTypeDescription
listingIdintegeratHome's own listing number
listingUrlstringDirect link to the advert
listingTitlestringProject name, or property type and town
pricenumberAsking price in euro; monthly rent on the rental side
pricePerSqmnumberPrice divided by living area
surfacenumberLiving area in m²
bedroomsintegerBedroom count
energyClassstringEnergy performance class
city / postcode / streetstringAddress as atHome publishes it
latitude / longitudenumberCoordinates of the property
agencyNamestringThe agency advertising it
agencyPhone / agencyEmailstringDirect contacts from the advert
listingDescriptionstringAdvert text, preview on search rows and complete on detail rows
imageUrlsarrayEvery 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 ApifyClient
client = 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)

  1. Trigger: a daily schedule, or a webhook from your own system
  2. HTTP Request: start a run with your filters
  3. Process: read the dataset items as JSON
  4. 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
  • 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.

🔗 View current pricing


❓ 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, not Esch/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 all for 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.

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


Built by SIÁN Agency | More Tools