How to scrape real estate data from Dom.ria.com using the Minexa API
- Minexa.ai

- 18 hours ago
- 4 min read
Collecting property listing data from Dom.ria.com manually means opening dozens of pages, copying prices, addresses, and specs one by one, and ending up with a spreadsheet that is already outdated by the time you finish. This post shows how to replace that process with a single API call using Minexa, a web data extraction platform that turns any structured listing page into clean JSON without writing selectors or parsing HTML by hand.
Before: what you are dealing with on Dom.ria.com
Dom.ria.com is one of Ukraine's largest real estate portals. Its house-for-sale section at dom.ria.com/uk/prodazha-domov/ lists hundreds of properties per page, each card containing price in USD and EUR per square metre, address, room count, total area, land size, floor count, a full description, listing timestamps, and multiple CDN-hosted images in both WebP and JPEG formats. Extracting all of that consistently across thousands of listings, without a trained scraper, means writing and maintaining custom parsing logic for every field.
The Minexa API workflow: train once, extract at scale
Minexa works in two phases. First, you train a scraper using the Chrome extension by pointing at the HTML container that holds the listing data. Second, you call the Minexa API with that scraper's ID and a list of URLs to extract structured data at scale. The scraper is trained once and reused indefinitely across structurally similar pages.
Watch the full walkthrough
The video below covers every step from opening the extension on Dom.ria.com to running the API call and exporting results.
Step-by-step: training the scraper
Open the Minexa extension from your Chrome toolbar while on the Dom.ria.com listings page. The extension loads its home interface and detects the current page automatically.
Click I'm on the right page to confirm you are on the correct URL. The extension then analyses the page structure and detects pagination controls.
The pagination detection screen shows which next-page element was identified. Review it and click Continue to proceed. Note: when using the API directly, you will handle pagination yourself by passing each page URL explicitly rather than relying on automated clicking.
Choose whether to scrape the listing page only or to also follow each listing's detail page. For bulk property data collection, the list-only option covers price, address, specs, and images from the card itself.
Select Simple scraping for standard listing pages, then click to highlight the full listing container. Minexa automatically identifies all data points within it.
After clicking Create Scraper, all extracted columns appear in the preview panel. Use the navigation arrows to review each field before saving the configuration.
Click API Request to view the pre-generated Python code and JSON request body. Copy the scraper ID shown here for use in your pipeline.
After: what the API call looks like
Once the scraper is created, replace the example URLs with your Dom.ria.com listing page URLs and run the script. The request body follows this structure:
POST https://api.minexa.ai/data/
{
"batches": [{
"scraper_id": 6284,
"columns": ["top_30"],
"urls": [
"https://dom.ria.com/uk/prodazha-domov/",
"https://dom.ria.com/uk/prodazha-domov/?page=2"
],
"scraping": {
"js_render": true,
"timeout": 30,
"js_code": [{"wait_time": 2},{"page_init": true},{"wait_time": 4}],
"proxy": "verified",
"retry": 3
}
}],
"threads": 5
}What the extracted data looks like
Each listing card returns a structured record. Here are two cleaned examples from the actual scraper output:
[
{
"address": "вул. Бугова, Медвідка",
"property_price": ["90 023 $", "790 € за м²"],
"price_per_sqm": "790 € за м²",
"property_location": "вул. Бугова Медвідка",
"published_date": "Вчора о 15:34",
"posting_date": "Оголошення додано Вчора о 15:34"
},
{
"address": "вул. Євгена Харченка, Бортничі, Київ",
"property_price": ["136 500 $", "1 249 $ за м²"],
"price_per_sqm": "1 249 $ за м²",
"property_location": "вул. Євгена Харченка Бортничі Київ",
"published_date": "Опубліковано 8 лют.",
"posting_date": "Оголошення додано Опубліковано 8 лют."
}
]The listing_details field returns a typed array encoding every element on the card: price in USD, price per square metre in EUR, street name as both link text and title attribute, the relative listing href, neighbourhood, room count, total area in square metres, land area in sotky, floor count, the full property description text, listing type label, a datetime attribute, a human-readable timestamp, a unique DOM identifier per card, and multiple CDN image URLs in WebP and JPEG at different resolutions. The photo_url field captures all image variants per listing as separate objects, each carrying the CDN path and format. The posting_date field surfaces the full announcement string from the title attribute on the time element, which differs from published_date, which returns only the short human-readable date fragment rendered visibly on the card.
Before vs after: what changes in practice
Before using Minexa, collecting structured data from Dom.ria.com at scale requires writing custom parsing logic, handling JavaScript rendering, managing CDN image URL patterns, and dealing with mixed-currency price fields. After training a single scraper, all of that is handled by the API. The same scraper ID works across every page of the listing section as long as the page structure stays consistent. If Dom.ria.com updates its layout, retraining takes roughly the same few minutes as the original setup, and only the scraper ID in the request body needs updating.
For a broader look at how real estate data pipelines are structured and where extraction typically breaks down, this post covers the topic in detail: Scraping real estate data: what actually works and where most pipelines break.
The full API reference, including scraping parameter options and credit consumption by mode, is available at minexa.stoplight.io/docs/minexa.

Comments