Hepsiemlak Scraper | Turkey Real Estate Sale Rent avatar

Hepsiemlak Scraper | Turkey Real Estate Sale Rent

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Hepsiemlak Scraper | Turkey Real Estate Sale Rent

Hepsiemlak Scraper | Turkey Real Estate Sale Rent

Scrape Hepsiemlak.com Turkey sale, rent, seasonal, projects & offices. Extract prices (TRY), rooms, size, sellers & URLs — Hepsiemlak API alternative.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Hepsiemlak Scraper — Turkey Real Estate Listings, Projects & Offices

Scrape Hepsiemlak.com property listings for sale, rent, and seasonal stays in Turkey — plus residential projects and real-estate offices — then download structured data as Excel, CSV, or JSON.

Architecture: this Apify Actor is a thin client. Scraping runs on the hepsiemlak-com Cloud Run worker over HTTPS + API key.

Worker URL is config, not code: the Actor reads WORKER_BASE_URL from Actor environment variables (plus optional per-run workerBaseUrl). If you migrate the worker to a new host, update WORKER_BASE_URL (and WORKER_AUTH if the API key changes) in Apify Console — no Actor code change required. Set WORKER_PROVIDES_PROXY=1 when the worker supplies its own PROXY_URL instead of Apify RESIDENTIAL.

This Actor is a practical Hepsiemlak API alternative for property research, market monitoring, agency lead gen, and investment pipelines on hepsiemlak.com. Enter a city (or go nationwide), pick a channel, and get clean Dataset rows with listing IDs, prices in TRY, rooms, size, sellers, and direct Hepsiemlak URLs.

  • Pull for-sale, for-rent, and seasonal / daily rent listings from Hepsiemlak
  • Scrape new residential projects (/projeler) and agency / office pages (/emlak-ofisi)
  • Search by city, district, neighborhood, or nationwide (location=national)
  • Locales: English, Turkish, and Russian URL paths (en / tr / ru)
  • Optionally enrich listing details with guest-visible LDP attributes (rooms text, gross/net m², heating, title deed) and contact leads (phone, agent name, agency)
  • Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or Apify MCP / API
  • Pay per event — Actor start + each Dataset result; platform compute is included (you do not pay separate Apify usage)

Need a dedicated scraper for one website?

This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.

I confirm the tier before you pay. The clock starts after that confirmation.

Start here: Submit a custom scraper request

Starter $50Dedicated $100Hard target $200–999
Site1 simple anti-bot public site1 medium anti-bot public siteCloudflare / aggressive anti-bot / custom parser
ScopeFull listing + detail fieldsListing + detail + pagination, your field listAgreed fields, repeatable runs
DeliveryCSV/JSON · Apify Actor or standalone runnable client (script/CLI)Same, plus a sample run and short instructionsFeasibility first, then build
Time24 hours after we confirm the URL is in scope48 hours after confirmationQuoted after feasibility
Fixes30 days for small public-layout changes30 daysScoped in the quote

Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.

Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.


What does the Hepsiemlak Scraper do?

Hepsiemlak Scraper lets you extract structured Turkey real-estate data from Hepsiemlak without maintaining your own Cloudflare browser farm. Give it a location and channel (or an office firm id / project URLs), then start a run.

Under the hood, the Actor:

  1. Validates your input (channel, locale, location / firmId, filters)
  2. Calls a managed Cloud Run worker that fetches Hepsiemlak pages with residential egress
  3. Parses guest-visible Nuxt SSR + JSON-LD (ItemList / RealEstateListing) into normalized records
  4. Pushes Dataset rows with preview fields (name, type, status, country, authority) plus lead/contact fields on detail and office items (phones, person, org, address, leadSource, leadReveal, leadAbsences)
  5. Writes RUN_SUMMARY (and ERROR_SUMMARY on failure) to the key-value store

You run it like any other Apify Actor — schedule it, call it from the API, or plug it into automations.


What Hepsiemlak data can I extract?

DataSale / Rent / SeasonalProjectsOffice
Listing / project title
Listing ID ({firmId}-{seq}) / project ID / firm ID
Price (TRY) + display
Rooms / floor size
Property type path (daire, villa, …)
City / district / address locality
Seller / office name
Agent contact person (name + role)✅†✅†
Phone number (tel: href)✅†✅†
Direct Hepsiemlak URL
LDP attributes (enrich)✅*✅*
Office listing cards

*With enrichDetails: true or detail URLs via detailUrls. †Detail / office / agent pages only — search/SERP cards are thin (no contact). Use enrichDetails: true or detailUrls / channel=office to get lead fields.

Every row includes contentDepth=guest_preview (public / guest-visible content). Lead/contact fields (phones, person, org) are extracted from already-visible SSR HTML on detail and office pages — see Lead & contact fields below.


Why scrape Hepsiemlak?

Hepsiemlak is one of Turkey’s major real-estate portals, covering sale, rent, seasonal stays, new projects, and agencies nationwide. Teams scrape Hepsiemlak to:

  • Build custom Turkey property databases for research or lead gen
  • Track sale / rent inventory by city, district, and property type
  • Monitor new residential projects and developer listings
  • Collect agency / office portfolios linked by firmId
  • Feed CRM workflows, dashboards, or enrichment pipelines with structured listing URLs and prices

More Actors like this

Looking for another real estate scraper, or a specialized Actor outside Hepsiemlak? Use a dedicated Actor when one exists — structured fields, better coverage, usually lower cost.

Similar real estate Actors

Prefer another specialized scraper?

Jobs & Freelance

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to scrape Hepsiemlak (no code required)

  1. Create a free Apify account
  2. Open Hepsiemlak Scraper
  3. Choose a channel (sale, rent, seasonal, projects, or office)
  4. For listings: enter a location city slug (e.g. istanbul) or national; for offices: enter firmId (e.g. 140403)
  5. Optionally set locale (en / tr / ru), propertyType, maxResults, and enrichDetails
  6. Click Start and download the Dataset as JSON, CSV, Excel, or JSONL

Start with maxResults: 5–10 to verify the query, then scale up.


How much does it cost to scrape Hepsiemlak?

This Actor uses pay-per-event pricing. You are charged for:

EventPrice
Actor Start (apify-actor-start)$0.005 per start
Result (apify-default-dataset-item)$3.00 / 1,000 results ($0.003 each)

Platform usage costs are included — you do not pay separate Apify compute/proxy usage for this Actor on top of the event prices above.

Example cost estimates

Results collectedApprox. event cost*
100~$0.31
1,000~$3.01
10,000~$30.01

*Assumes one Actor start at default memory billing for start events, plus $0.003 per Dataset item. Exact start billing can scale with allocated memory (one start event per GB, minimum one).

Free Apify trial credit can cover a small test run — try maxResults: 5 first.

Free Apify plan limits (set by this Actor's developer)

LimitFree Apify planPaid Apify plan
Runs of this Actor10 runs totalUnlimited
Results per run (maxResults)Up to 500Up to 500

When the run cap is hit, the run finishes with a clear status message — not an Apify platform error. Paying Apify users are not subject to the run cap.


Input

Open the Input tab for the full form. Common fields:

FieldDescription
channelsale / rent / seasonal / projects / office
locationCity slug (istanbul) or national / _ / all for nationwide SERP
localeen / tr / ru
district / neighborhoodDistrict SERP without city prefix (e.g. arnavutkoy)
propertyTypePath filter: daire, villa, arsa, isyeri, residence, …
firmId / officeUrlRequired for channel=office
projectIds / detailUrlsProject or listing detail URLs
maxResultsCap on Dataset rows (1–500)
maxPages?page=N pagination (~24 cards/page)
enrichDetailsFetch LDP / project detail and merge DOM attributes

Example: Istanbul apartments for sale

{
"location": "istanbul",
"channel": "sale",
"locale": "en",
"propertyType": "daire",
"maxResults": 20,
"maxPages": 1
}

Example: nationwide rent listings

{
"location": "national",
"channel": "rent",
"locale": "tr",
"maxResults": 50,
"maxPages": 2
}

Example: residential projects

{
"channel": "projects",
"locale": "en",
"maxResults": 24,
"maxPages": 1
}

Example: real-estate office portfolio

{
"channel": "office",
"firmId": "140403",
"officeSlug": "mulkmaster",
"maxResults": 20,
"enrichDetails": true
}

Example: Russian locale + detail enrich

{
"location": "istanbul",
"channel": "sale",
"locale": "ru",
"maxResults": 10,
"enrichDetails": true
}

Output sample

Each Dataset item looks like this (sale channel, detail-enriched):

{
"listingId": "29795-4965",
"name": "SARİYER MADEN'DE ORMAN MANZARALI SAKİN SESSİZ ORTAMINDA TERASLI ÇATI DUBLEKSİ",
"type": "listing",
"dataType": "listing",
"status": "active",
"country": "TR",
"authority": "hepsiemlak.com",
"channel": "sale",
"priceDisplay": "2850000 TRY",
"rooms": 2,
"floorSize": 75,
"listingUrl": "https://www.hepsiemlak.com/istanbul-sariyer-maden-satilik/daire/29795-4965",
"sellerName": "MülkMaster",
"firmId": "29795",
"contentDepth": "guest_preview",
"phones": [{"value": "+905073065714", "type": "mobile"}],
"emails": [],
"address": {
"street": "Maden, Sarıyer/İstanbul",
"unit": null,
"locality": "İstanbul",
"region": null,
"postalCode": null,
"country": "TR",
"full": "Maden, Sarıyer/İstanbul, İstanbul, TR"
},
"geo": null,
"person": {"name": "Gunay Kutuk", "role": "Gayrimenkul Danışmanı"},
"org": {"name": "KABİL GAYRİMENKUL DANIŞMANLIK", "id": "29795"},
"web": null,
"leadSource": "detail",
"leadReveal": "visible",
"leadAbsences": {
"emails": "闸门锁",
"geo": "未验证",
"web": "本站无",
"address.unit": "本站无"
}
}

Projects use dataType=project + projectId. Offices emit one dataType=office summary row plus related listing rows sharing firmId.


Lead & contact fields

Every detail / office / agent item includes outreach-ready contact fields (search/SERP items are thin — use enrichDetails: true or detailUrls to get leads). Nulls are always paired with a leadAbsences reason so you know why a field is empty.

FieldTypeMeaningHepsiemlak source
phones[{value, type}]Mobile / landline numbersDetail DOM tel: href — already-visible in SSR HTML (E.164 format +90XXXXXXXXXX). The "Telefonu Göster" button is a display toggle only; the number is pre-loaded server-side, no click-reveal XHR needed.
emails[{value, type}]Contact emailsNot available — Hepsiemlak uses a "Mesaj Gönder" lead form instead of mailto/plaintext. leadAbsences.emails = 闸门锁.
address{street, unit, locality, region, postalCode, country, full}Property address. unit = 门牌 (apartment/unit number)street = area-level (neighborhood/district, e.g. "Maden, Sarıyer/İstanbul"); unit = 本站无 (privacy by design — Hepsiemlak does not expose unit numbers); locality = city; country = TR; full = assembled full string.
geo{lat, lng}Coordinates未验证 — coordinates load via Yandex Maps JS at runtime; not in SSR HTML. leadAbsences.geo = 未验证.
person{name, role}Agent / consultant name + roleAgent profile JSON-LD RealEstateAgent.name + DOM (e.g. "Gunay Kutuk", role "Gayrimenkul Danışmanı"). Best-effort from agent URL slug when agent page is not fetched.
org{name, id}Agency / office name + firm IDJSON-LD offers.seller.name (e.g. "KABİL GAYRİMENKUL DANIŞMANLIK"); id = firmId (listing ID prefix).
web{website, socials[]}Official website + social links本站无 — Hepsiemlak does not surface per-listing or per-agent external websites/socials. leadAbsences.web = 本站无.
leadSourceenumWhere leads were extractedsearch (thin SERP card) / detail (LDP page) / entity (agent/office page).
leadRevealenumHow contact was revealedvisible (phone already in SSR HTML, no click needed) / absent (field not available on this surface).
leadAbsencesobject/mapPer-subfield reason when nullOne of: 本站无 (site does not expose this field) / 闸门锁 (gated behind login/lead form) / 未验证 (not verified during mission).

Reveal cost

Hepsiemlak phone numbers are already-visible in the detail page SSR HTML (tel: href). There is no click-to-reveal XHR, no CAPTCHA, and no login wall for phone extraction. The only cost is fetching the detail page itself:

  • Search/SERP items are thin (title, price, ID, area) — no contact fields. To get leads, set enrichDetails: true or pass detailUrls.
  • Detail items (enrichDetails: true) fetch one LDP page per listing and extract phone + org + area address from SSR HTML — one HTTP request per item, no additional clicks or XHR calls.
  • Office items (channel=office) fetch the agency page which includes agent name, phone, and org in one SSR response.

Run time scales linearly with the number of detail pages fetched. No proxy escalation is needed for guest-visible SSR content (curl_cffi + TR residential is sufficient).

Honest limitations

The following lead fields are not available on Hepsiemlak and are documented honestly rather than fabricated:

FieldReasonleadAbsences value
emailsHepsiemlak uses a "Mesaj Gönder" (Send Message) lead form — no mailto or plaintext email site-wide. Submitting the form is out of scope (would require user login).闸门锁
address.unit (门牌)Hepsiemlak does not expose unit/apartment numbers on public listing pages (privacy by design). Only area-level (neighborhood/district) address is shown.本站无
geo (lat/lng)Coordinates are loaded via Yandex Maps JavaScript at runtime, not present in SSR HTML. Not verified during this Actor's development.未验证
web (website/socials)No per-listing or per-agent external website or social media links. Only platform-level official socials exist on the homepage.本站无
address.streetArea-level only (neighborhood + district). Full street-level addresses are not shown on public pages.area-level (noted, not in leadAbsences)

Search/SERP items intentionally omit lead fields — they are list-thin. Use enrichDetails: true or detailUrls to get contact data from detail pages.


Integrations and Apify API

  • Connect to Make, Zapier, n8n, Google Sheets, or webhooks from the Apify Console
  • Use the Apify API or official clients (apify-client for JS/Python)
  • Schedule daily / weekly runs for Istanbul, Ankara, Antalya, and other cities
  • Use Apify MCP to call this Actor from AI agents

FAQ

Is this an official Hepsiemlak API?

No. This Actor scrapes public / guest-visible pages as an alternative when you need bulk structured export. Respect Hepsiemlak terms and applicable law.

Do I need proxies?

Residential egress is handled by the managed worker for Cloud runs. You do not need to configure Apify Proxy for typical Store runs.

Can I scrape phone numbers?

Yes. Phone numbers are extracted from detail and office/agent pages where they are already visible in the server-rendered HTML (tel: href). The "Telefonu Göster" (Show Phone) button on Hepsiemlak is a display toggle only — the number is pre-loaded in the SSR response, so no click-reveal XHR or CAPTCHA is needed. Search/SERP items do not include phones; use enrichDetails: true or detailUrls to get phone numbers from detail pages.

Which cities are supported?

Any Hepsiemlak city slug works (e.g. istanbul, ankara, izmir, antalya). Use location=national for Turkey-wide listing SERPs.

What about projects and offices?

Set channel=projects for /projeler, or channel=office with firmId / officeUrl for /emlak-ofisi/... portfolios.

Why did my free-plan run stop after 10 runs?

Free Apify plan users get 10 runs of this Actor and up to 500 results per run. These limits are set by the Actor developer (not Apify). When you hit the run cap, the run finishes with a clear status message — it is not a platform bug. Upgrade to a paid Apify plan for unlimited runs.


Support

Issues and feature requests: open them on the Actor’s Issues tab in Apify Console. For urgent production pipelines, include a failing run URL and your input JSON (without secrets).


All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss