LUN.ua Ukraine Real Estate Scraper: Listings & New Builds avatar

LUN.ua Ukraine Real Estate Scraper: Listings & New Builds

Pricing

from $22.00 / 1,000 property ads

Go to Apify Store
LUN.ua Ukraine Real Estate Scraper: Listings & New Builds

LUN.ua Ukraine Real Estate Scraper: Listings & New Builds

Scrape lun.ua Ukraine real estate: sale, rent and daily-rent ads with price history, areas, coordinates and photos, plus new-build projects, developers, promotions and floor plans. Filter by city, type and rooms. No login or API key. Export CSV, Excel, JSON, XML.

Pricing

from $22.00 / 1,000 property ads

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

RecordsData

🏠 LUN.ua Real Estate Scraper: Ukraine Listings, New Builds & Developers

LUN.ua Real Estate Scraper exports property ads from lun.ua, the Ukrainian real estate aggregator, as structured data: price and price history, rooms, areas, floor, address, coordinates, photos, seller type and the agency behind each ad. It also returns new-build projects, developers, developer promotions and floor plans. Export CSV, Excel, JSON or XML. No login, no API key, no proxy.

The LUN.ua Real Estate Scraper turns the Ukrainian property market into a dataset you can filter, sort and join. On 2026-10-29 the site's own counter showed 51,773 apartments for sale in Kyiv (21,207 after the site groups duplicate ads), 27,528 apartments for rent in Kyiv and 1,609 daily rentals. The Actor reads the pages lun.ua publishes for every visitor, with plain requests, a few at a time. A 3-listing run finishes in about 2 seconds.

🎯 What does the LUN.ua scraper do?

  • Scrapes lun.ua property ads: apartments, houses, townhouses, cottages, country houses and dachas, land plots and commercial property, for sale, monthly rent and daily rent, in 22 regional centres (Kyiv, Lviv, Odesa, Kharkiv, Dnipro and 17 more), with the towns around each city or the whole region.
  • Reads new-build projects (price ranges, units, construction status, houses, developer, financing terms, photos), developers, developer promotions and floor plans.

📊 LUN.ua property data: which fields do you get?

Every row is one record with recordType set to listing, project, developer, promotion or layout. The dataset has 169 columns; a listing row carries 50 to 80 of them, depending on what the ad states. Fields the ad does not state are left out.

Listing rows (recordType: listing), the main fields:

FieldTypeExample
listingIdstring4730833957
operation / propertyTypestringsale / apartment
price / currencynumber / string235000 / USD
pricePerM2number3357
previousPrice / priceChangenumberearlier amount and signed change
priceHistoryarraylist of earlier amounts
roomsinteger2
areaBuilt / areaLiving / areaKitchennumber70 / 35 / 30
floor / totalFloors / yearBuiltinteger18 / 25 / 2020
address / city / districtstringЧервоної Калини просп., 56 / Львів / Сихівський
housingComplexstringЖК Avalon Up
latitude / longitudenumber49.795 / 24.052
isPrivateSellerbooleanfalse
agencyName / agentVerifiedstring / booleanАН Новий Дім / true
images / imageCountarray / integerphoto URLs / 28
publishedAt / updatedAtstring2026-10-15T10:52:44Z
originSitestringrieltor.ua

Project rows (recordType: project), new-build complexes:

FieldTypeExample
projectIdstring7
titlestringЖК Іспанський
salesStatus / constructionStatusstringall_sold / built
priceFromUah / priceFromUsdnumberlowest amount in each currency
houses / sections / totalFloorsinteger1 / 3 / 14
installmentMonthsinteger12
developerNamestringПрогрес-Буд

Developer rows (recordType: developer):

FieldTypeExample
developerIdstringdeveloper id on lun.ua
titlestringdeveloper name
projectCountintegernumber of projects
housesInProgress / housesBuiltintegerhouses under construction and finished
foundedYearintegeryear founded

Promotion rows (recordType: promotion):

FieldTypeExample
promotionIdstringpromotion id
labelstringpromotion text
startDate / endDatestringpromotion window
isActivebooleantrue
projectName / projectUrlstringproject the promotion belongs to

Floor-plan rows (recordType: layout):

FieldTypeExample
layoutIdstringfloor plan id
roomTypePriceFromUah / roomTypePriceFromUsdnumberlowest amount of the room type
areaMin / areaMaxnumberarea range in square meters
floorMin / floorMaxintegerfloor range
completionQuarterstringplanned completion

⚙️ LUN.ua scraper input

FieldTypeDefaultMeaning
recordTypesarray["listings"]What to collect: listings, projects, developers, promotions, layouts
startUrlsarrayemptylun.ua page addresses to read; a search page brings its own filters
maxItemsinteger10 prefillRows to return (free plans: 10)
operationstringsalesale or rent
citiesarray["kyiv"]Regional centres
coveragestringcitycity or region
propertyTypesarray["flats"]Property types
roomsarrayemptyRoom counts
featuresarrayemptyReady-made lun.ua filters
expandByarrayall fiveGo deeper: districts, microdistricts, streets, complexes, room pages
useSitemapsbooleanfalseWalk the sitemap
languagestringukuk or ru
maxRunSecondsinteger1800Longest run
onlyNew / stateKey / resetSeenboolean / string / booleanfalse / empty / falseMonitor mode, its name, and a reset
includeContactDetailsbooleanfalseBusiness contact data of agencies

Input for 50 two-room apartments for rent in Lviv:

{
"recordTypes": ["listings"],
"operation": "rent",
"cities": ["lviv"],
"propertyTypes": ["flats"],
"rooms": ["2"],
"maxItems": 50
}

🧾 LUN.ua listing example: what does a real result look like?

A real listing row (cloud run, 2026-10-29; the description and the photo list are shortened):

{
"recordType": "listing",
"listingId": "4730833957",
"url": "https://rieltor.ua/lvov/flats-sale/view/13134134/",
"operation": "sale",
"propertyType": "apartment",
"price": 235000,
"currency": "USD",
"pricePerM2": 3357,
"rooms": 2,
"areaBuilt": 70,
"areaLiving": 35,
"floor": 18,
"totalFloors": 25,
"yearBuilt": 2020,
"address": "Червоної Калини просп., 56",
"city": "Львів",
"district": "Сихівський",
"housingComplex": "ЖК Avalon Up",
"latitude": 49.79509353637695,
"longitude": 24.052188873291016,
"isPrivateSeller": false,
"agencyName": "АН Новий Дім",
"agentVerified": true,
"publishedAt": "2026-10-15T10:52:44Z",
"updatedAt": "2026-10-29T07:01:02Z",
"originSite": "rieltor.ua",
"scrapedAt": "2026-10-29T16:38:34.431Z"
}

url is the link to the ad on the site where it was published (rieltor.ua here), because lun.ua has no ad page of its own.

🚀 How to scrape LUN.ua in 4 steps

  1. Create a free account at console.apify.com and open this Actor.
  2. Pick what to collect (listings, new-build projects, developers, promotions or floor plans), then the operation (sale or rent), the cities and the property types. Leave everything else on its default to get the apartments of Kyiv.
  3. Set Max Items and press Start. A 3-listing run finishes in about 2 seconds.
  4. Download the dataset as CSV, Excel, JSON or XML, or read it through the Apify API.

📈 How does it compare with other LUN.ua scrapers? Read on 2026-11-03

This Actorskipper_lume LUN.ua ScraperManual browsing
Record typesListings, projects, developers, promotions, floor plansListings, plus new-build fields (developers, priceFromUAH)One page at a time
Output columns16927No export
Price history and signed price changeYesChange type onlyPage by page
Seller type and agency dataYes, no phones unless you switch it onNo such columns publishedYes
Only-new monitor modeYesNot stated on its pageNone
Reach beyond 24 ads per pageDistrict, street and complex pages, sitemapsNot stated on its pageNot possible

The other Actor's columns were read on 2026-10-29 from its published dataset schema. It has columns this Actor does not: market, priceUSD and priceUAH (lun.ua prices carry one currency, shown in price and currency, and this Actor does not convert them).

💰 How much does the LUN.ua scraper cost?

Pay per event, no monthly fee. Rates are USD per result on the Free tier.

EventCharged forPer resultPer 1,000
Listing recordOne property ad$0.022$22.00
Project recordOne new-build project$0.033$33.00
Developer recordOne developer$0.022$22.00
Promotion recordOne developer promotion$0.011$11.00
Layout recordOne floor plan$0.011$11.00

Worked examples: 1,000 listings cost $22.00. The 2,577-ad Kyiv run costs 2,577 x $0.022 = $56.69. All 1,705 developers cost 1,705 x $0.022 = $37.51. A mixed run of 1,000 listings, 100 projects and 50 floor plans costs $22.00 + $3.30 + $0.55 = $25.85. Any repricing of an event is shown on the actor page.

💼 LUN.ua scraper use cases

  • Market analysis: compute the median price per square meter by district, microdistrict or housing complex with pricePerM2, district and housingComplex, and track it over time with scheduled runs.
  • Price-drop alerts: previousPrice, priceChange and priceChangedAt show which ads got cheaper and when, and the only-new mode returns fresh ads only.

🔌 LUN.ua scraper API, MCP and integrations

Run it from any language through the Apify API:

curl -X POST "https://api.apify.com/v2/acts/RecordsData~lun-ua-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation":"rent","cities":["lviv"],"propertyTypes":["flats"],"rooms":["2"],"maxItems":50}'

Connect it to Make, Zapier, n8n, Google Sheets or Slack with the standard Apify integrations, or let an AI agent call it through the Apify MCP server: https://mcp.apify.com?tools=RecordsData/lun-ua-scraper.

🤖 LUN.ua scraper for AI agents (MCP)

Add the Actor to any MCP client (Claude, Cursor, VS Code) through the Apify MCP server. The agent sees the input schema as the tool description: a tool that scrapes lun.ua listings, new-build projects, developers, promotions and floor plans in Ukraine, with filters for operation, city, property type, rooms and ready-made lun.ua filters, and a maxItems cap.

Example agent prompt:

Find 20 two-room apartments for rent in Lviv on lun.ua without intermediaries, with coordinates and price, and tell me the median price.

The agent calls the Actor with {"operation":"rent","cities":["lviv"],"features":["bez-poserednykiv"],"maxItems":20}, reads price, currency, latitude, longitude and rooms from the rows and answers from them. Keep maxItems small in agent runs.

The Actor reads public pages that lun.ua shows to every visitor, without logging in and without a key, at about 3 requests per second, and it follows the site's robots.txt (which allows the pages the Actor reads and disallows query-string addresses, so the Actor never uses them). Private sellers' names and phone numbers are never output. Phone numbers, e-mails, messenger handles and links written inside ad descriptions are removed, and agent site addresses named after a phone number are hidden unless you turn on the contact switch. lun.ua publishes terms of use that restrict copying of its content: check them against your own use before you run large collections, and use the data in line with Ukrainian data protection law.

🔗 Limits you should know

  • lun.ua serves 24 ads per search page and no second page, so a single page gives 24 rows. Go deeper (on by default) follows the site's district, microdistrict, street, housing-complex and room-count links two levels down; Walk the sitemap reads every search page the sitemap lists.
  • lun.ua search addresses carry the filters in the path, so there are no price or area filters. Filter the dataset afterwards on price, areaBuilt and rooms.
  • The same ad is often published on lun.ua and rieltor.ua. propertyGroupId and duplicateOffersCount mark duplicates inside lun.ua.

FAQ: LUN.ua scraper questions and answers

Does the LUN.ua scraper need a proxy or a lun.ua account? No. It uses plain requests, a few at a time with a short pause, and needs no login, no API key and no proxy. Cloud runs finished without a single blocked request. You only need an Apify account, and the free plan returns up to 10 rows per run, which is enough to test every record type.

How do I get more than 24 ads from one search? Keep Go deeper on. The site shows 24 ads per search page and no second page, so the Actor follows the page's own links to districts, microdistricts, streets, housing complexes and room counts. A default Kyiv apartments search returned 2,577 distinct ads in 4 minutes. Turn on Walk the sitemap to reach the most ads.

Which currency do the ads use? The currency of the ad: mostly US dollars for sales, and hryvnia or dollars for rent. currency holds the ISO code and pricePeriod says month or day for rentals. Project amounts come in both hryvnia and dollars, and the rate used is in usdRate. The Actor does not convert one currency into another.

Does it return phone numbers? Not by default. With Include business contact data on, listings posted by agencies get the agency phone numbers and the realtor name, and project rows get the sales phone. Private sellers never get any contact data, and phone numbers written inside ad descriptions are removed in every case.

Can I get old or expired listings? No. lun.ua removes ads that are gone, so the Actor returns the live catalog only, with publishedAt and updatedAt on every ad. If you need a history, schedule a run every day and keep the datasets, or use the only-new mode and store the rows in your own database.

What is the difference between a listing and a project row? A listing row is one ad for sale or rent, with price, rooms, area, address and seller. A project row is one new-build residential complex, with price ranges, units, construction status, financing terms and developer. Developer, promotion and floor-plan rows come from the same new-build catalog and are charged as their own events.

How do I get only the new ads every day? Turn on Only new rows and schedule the Actor. It remembers the rows already returned for the same search in a store of your own account and returns just the new ones. Use the same State key for the same search, and Reset seen rows to start over.

Why are some fields empty on a listing? Because the ad does not state them. Land has no rooms or floor, and only some ads fill heating, utilities or renovation. Empty columns are left out of the row instead of being filled with null, so the number of columns changes from one row to the next. Check the fill rates above before you rely on a column.

How do I get help or ask for a missing field? Write to contact.punkrecordsdata@gmail.com with the search you ran and the field you need. Bug reports with a run link are the fastest to fix, and a missing column is usually a small change when lun.ua already shows the value on the page.

🆘 Need Help? contact.punkrecordsdata@gmail.com

⚠️ Disclaimer: independent tool, not affiliated with lun.ua. It collects only publicly available data.

Last updated: 2026-11-03