Imoti.net Scraper - Bulgarian Real Estate Listings avatar

Imoti.net Scraper - Bulgarian Real Estate Listings

Pricing

from $5.00 / 1,000 result scrapeds

Go to Apify Store
Imoti.net Scraper - Bulgarian Real Estate Listings

Imoti.net Scraper - Bulgarian Real Estate Listings

Scrape real estate listings from Imoti.net, Bulgaria's #2/#3 property portal. Extract prices in EUR and BGN, areas, rooms, floors, energy class, locations, images, and seller details for apartments, houses, land, and commercial properties for sale or rent.

Pricing

from $5.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Categories

Share

Imoti.net Scraper

Extract property listings from Imoti.net -- one of Bulgaria's largest real estate portals -- into structured JSON with prices in both EUR and BGN, areas, rooms, floors, energy class, locations, photos, and seller details.

What is Imoti.net Scraper?

Imoti.net Scraper lets you extract structured real estate data from one of Bulgaria's biggest property platforms, helping you monitor the market, compare prices, and automate property research -- all without manual browsing or login.

  • Track market prices across Bulgaria: extract listings with prices in EUR and BGN, surface areas, and price-per-m2 to build price maps across Sofia, Plovdiv, Varna, Burgas, and every major Bulgarian city
  • Monitor new listings in real time: schedule daily runs and get alerted the moment a property matching your criteria hits the market
  • Build property datasets for analysis: export thousands of listings with areas, rooms, floors, and construction details for valuation models, academic research, or investment screening
  • Compare sale vs. rental markets: switch between sale and rent listings to analyse yield gaps and rental demand across locations
  • Feed your CRM or dashboard: export structured data to Google Sheets, Airtable, or any BI tool via Apify integrations

Imoti.net has no public API and no bulk export feature. This scraper is the only way to get structured data out of this platform at scale.

What data does Imoti.net Scraper extract?

Each listing returns the following fields:

  • Property Title -- the listing headline
  • Property Type -- apartment (studio to 4+ room), house, villa, maisonette, office, plot, shop, and more (Bulgarian label as shown on the site)
  • Rooms -- derived from the apartment-size label (Едностаен=1, Двустаен=2, Тристаен=3, Четиристаен=4, Многостаен=5+); null for houses, land, and other non-apartment types
  • Transaction Type -- sale or rent
  • Price -- asking price in EUR, with the BGN equivalent alongside (imoti.net always shows both currencies -- never converted, both are the site's own published numbers)
  • Price per m2 -- in both EUR and BGN
  • Area -- living area in square meters
  • Floor -- floor number, e.g. "2 от 4" (2 of 4) -- only with fetchDetails on
  • Construction Type -- building material, e.g. "Тухла" (brick) -- only with fetchDetails on
  • Energy Class -- energy performance rating, when the seller reported it -- only with fetchDetails on
  • City / District / Location -- Bulgarian city and neighbourhood
  • Seller Type -- agency or private individual
  • Agency Name -- name of the listing agency, null for private sellers
  • Description -- listing text (truncated snippet by default, full text with fetchDetails on)
  • Images -- main thumbnail by default, full photo gallery with fetchDetails on
  • Posted Date / Views -- only with fetchDetails on
  • URL -- direct link to the listing on Imoti.net
  • Scraped At -- ISO 8601 timestamp

How to scrape Imoti.net data

The input is simple: choose a city, property type, and transaction type and hit run. You can configure the scraper through the Apify Console UI or programmatically via the API.

Input fields

FieldTypeDefaultDescription
citySlugString"sofia"City area slug from an Imoti.net URL, e.g. "sofia", "plovdiv", "varna", "burgas"
transactionTypeString"sale""sale" or "rent"
propertyTypeString"any""any", "ednostaen", "dvustaen", "tristaen", "mnogostaen", "mezonet", "kashta", "vila", "ofis", "parcel", "magazin"
startUrlsArray--Imoti.net search-result or single-listing URLs (overrides city/type filters); max 100
maxResultsInteger50Maximum number of listings to return (1--2,000)
fetchDetailsBooleanfalseOFF by default. When ON, fetches each listing's own detail page to add floor, construction type, energy class, posted date, views, and full photo gallery -- roughly doubles request count and run time
proxyConfigurationObjectAutomaticNo proxy group needed -- see "Do I need proxies?" below

Tips for best results

  • Use citySlug for quick searches: "sofia", "plovdiv", "varna", "burgas", "ruse", "stara-zagora", "pleven", "blagoevgrad" and 18 more major cities are confirmed-working (see table below). Any valid Imoti.net area slug works, even ones not listed here.
  • Use startUrls for advanced filtering: apply price ranges, room counts, or other filters on Imoti.net, copy the URL, and paste it as a start URL to preserve them. A single listing URL also works and returns full detail-page data for that one property.
  • Turn on fetchDetails only when you need it: floor, construction type, energy class, posted date, and the full photo gallery all require an extra request per listing. Search-card data alone (default) already covers price in both currencies, area, rooms, location, and seller info.
  • Start with a small maxResults (e.g. 20) to verify the output, then scale up.
  • Empty input works: running with {} defaults to apartments and houses for sale in Sofia.

Confirmed city slugs

CitySlugCitySlug
SofiasofiaMontanamontana
PlovdivplovdivHaskovohaskovo
VarnavarnaYambolyambol
BurgasburgasPazardzhikpazardzhik
RuseruseKyustendilkustendil
Stara Zagorastara-zagoraShumenshumen
PlevenplevenSilistrasilistra
DobrichdobrichRazgradrazgrad
SlivenslivenTargovishtetargovishte
PernikpernikSmolyansmolyan
Veliko TarnovotarnovoLovechlovech
BlagoevgradblagoevgradVidinvidin
VratsavratsaKardzhalikardzhali
Gabrovogabrovo

Output

Results are stored in a dataset that you can download in JSON, CSV, Excel, XML, or HTML format directly from the Apify Console.

JSON example

{
"externalId": "6226637",
"propertyTitle": "Едностаен апартамент, София, Малинова Долина",
"propertyType": "Едностаен апартамент",
"rooms": 1,
"transactionType": "sale",
"price": 95000,
"currency": "EUR",
"priceBgn": 185804,
"pricePerSqm": 2794,
"pricePerSqmBgn": 5464.82,
"area": 34,
"floor": "1 от 4",
"constructionType": "Тухла",
"energyClass": null,
"city": "София",
"district": "Малинова Долина",
"location": "София, Малинова Долина",
"sellerType": "agency",
"agencyName": "Революшън Естейт България",
"description": "Референтен номер: 2107424 ...",
"imageUrl": "https://www.imoti.net/web/files/obiavi/6226637/main_image/thumb_880x0_wm_main_image_6226637_1.jpg",
"images": ["https://www.imoti.net/web/files/obiavi/6226637/..."],
"photoCount": 7,
"postedDate": "2026-06-24",
"views": 594,
"url": "https://www.imoti.net/bg/obiava/prodava/sofia/malinova-dolina/ednostaen/6226637/",
"scrapedAt": "2026-06-24T10:30:00.000Z"
}

How much does it cost to scrape Imoti.net?

Imoti.net has no real bot protection to pay for -- the actor reads server-rendered HTML directly with a standard browser User-Agent header, no proxy or unblocking service required. That keeps runs fast and cheap.

ScenarioEst. costTime
50 listings, fetchDetails off~$0.26~10 sec
500 listings, fetchDetails off~$2.51~1 min
500 listings, fetchDetails on~$2.51~5 min
2,000 listings, fetchDetails on~$10.01~15 min

Pricing breakdown:

  • Per result: $0.005
  • Per run: $0.01

Usage cost only settles once a run reports SUCCEEDED -- reading a dataset mid-run will show a cost far below the final total.

Can I integrate Imoti.net Scraper with other apps?

Yes. Imoti.net Scraper connects with any tool through Apify integrations:

  • Google Sheets -- automatically export property data to a spreadsheet
  • Slack / Email -- get notified when new listings match your criteria
  • Zapier / Make -- trigger workflows when data is ready
  • Airtable -- build a searchable property database
  • REST API -- call the scraper programmatically from any language
  • Webhooks -- get notified when a run finishes

Can I use Imoti.net Scraper as an API?

Yes. Use the Apify API to run Imoti.net Scraper programmatically.

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("studio-amba/imoti-net-scraper").call(run_input={
"citySlug": "sofia",
"transactionType": "sale",
"propertyType": "dvustaen",
"maxResults": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['propertyTitle']} -- EUR {item['price']:,} -- {item['location']}")

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('studio-amba/imoti-net-scraper').call({
citySlug: 'sofia',
transactionType: 'sale',
propertyType: 'dvustaen',
maxResults: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Check the API tab for full documentation.

FAQ

What is Imoti.net?

Imoti.net is one of Bulgaria's largest real estate platforms, covering apartments, houses, villas, land, and commercial property for sale and rent across every major Bulgarian city. It's a separate site and business from Imot.bg -- if you need both, Studio AMBA also publishes an Imot.bg Scraper.

How does Imoti.net Scraper work?

It requests Imoti.net search-result pages with a real browser User-Agent header (the site rejects requests that don't send one, but doesn't otherwise challenge automated access) and extracts structured data from the server-rendered HTML. Search cards give price, area, location, and seller info directly; the optional detail-page fetch adds floor, construction type, energy class, and the full photo gallery.

Can I scrape both sale and rental listings?

Yes. Set transactionType to "sale" or "rent". Filter by property type with propertyType: apartments by room count, houses, villas, offices, plots, or shops.

Do I need proxies?

No. Imoti.net's only access rule is a realistic browser User-Agent header, which this actor always sends. The default proxyConfiguration uses Apify's free automatic proxy pool. If you see blocks from your own account's specific IP reputation, escalate to RESIDENTIAL in the proxy settings.

Why do prices show both EUR and BGN?

Imoti.net itself always displays both currencies for every listing -- the scraper reports both exactly as published, never converting one to the other at scrape time (an FX conversion would bake in a rate that goes stale immediately).

This scraper extracts publicly available listing data that Imoti.net displays to all visitors. The data is factual (prices, addresses, property specifications) and does not contain private personal information. As with any scraping tool, use the data responsibly and in compliance with applicable laws. No login or cookies are required.

Limitations

  • Bulgaria only. Imoti.net covers exclusively Bulgarian real estate.
  • Rooms is derived, not native. Imoti.net doesn't expose a separate numeric "rooms" field -- for apartments it's inferred from the Bulgarian size label (Едностаен/Двустаен/etc); it's null for houses, land, and other property types.
  • Floor, construction type, energy class, posted date, views, and full gallery all require fetchDetails: true. With it off (the default, for speed), output comes only from search-card data.
  • Energy class is frequently missing. Most sellers don't fill it in on the source site -- this is a data-completeness fact of Imoti.net, not a scraper limitation.
  • Description is a truncated snippet unless fetchDetails is on, which pulls the full, untruncated listing text.

Other Bulgarian and Balkan real estate scrapers

Combine Imoti.net Scraper with these actors for broader regional property market coverage:

Your feedback

Found a bug or have a feature request? Please open an issue on the Issues tab. We actively maintain this scraper and respond to all reports.