Hepsiemlak Scraper | Turkey Real Estate Sale Rent
Pricing
from $2.20 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
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_URLfrom Actor environment variables (plus optional per-runworkerBaseUrl). If you migrate the worker to a new host, updateWORKER_BASE_URL(andWORKER_AUTHif the API key changes) in Apify Console — no Actor code change required. SetWORKER_PROVIDES_PROXY=1when the worker supplies its ownPROXY_URLinstead 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 $50 | Dedicated $100 | Hard target $200–999 | |
|---|---|---|---|
| Site | 1 simple anti-bot public site | 1 medium anti-bot public site | Cloudflare / aggressive anti-bot / custom parser |
| Scope | Full listing + detail fields | Listing + detail + pagination, your field list | Agreed fields, repeatable runs |
| Delivery | CSV/JSON · Apify Actor or standalone runnable client (script/CLI) | Same, plus a sample run and short instructions | Feasibility first, then build |
| Time | 24 hours after we confirm the URL is in scope | 48 hours after confirmation | Quoted after feasibility |
| Fixes | 30 days for small public-layout changes | 30 days | Scoped 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:
- Validates your input (channel, locale, location / firmId, filters)
- Calls a managed Cloud Run worker that fetches Hepsiemlak pages with residential egress
- Parses guest-visible Nuxt SSR + JSON-LD (
ItemList/RealEstateListing) into normalized records - 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) - Writes
RUN_SUMMARY(andERROR_SUMMARYon 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?
| Data | Sale / Rent / Seasonal | Projects | Office |
|---|---|---|---|
| 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
- Zillow & Zumper Scraper
- Realtor.com Scraper
- Idealista Scraper
- ImmoScout24 Scraper
- Rightmove Scraper
- Funda Scraper
- Otodom Scraper
- Bayut Scraper
- Property Finder Scraper
- realestate.com.au Scraper
- Apartments.com Rental Scraper
Prefer another specialized scraper?
Jobs & Freelance
- LinkedIn Jobs Scraper
- Indeed Jobs Scraper
- Upwork Jobs Scraper
- Glassdoor Scraper
- Fiverr Gigs Scraper
- Bayt Jobs Scraper
E-commerce
- Walmart Product Scraper
- Amazon Search Scraper
- Costco Product Scraper
- Shopee Search Scraper
- Etsy Scraper
- SHEIN Product Scraper
- Temu Product Scraper
- Target Product Scraper
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)
- Create a free Apify account
- Open Hepsiemlak Scraper
- Choose a channel (
sale,rent,seasonal,projects, oroffice) - For listings: enter a location city slug (e.g.
istanbul) ornational; for offices: enter firmId (e.g.140403) - Optionally set locale (
en/tr/ru),propertyType,maxResults, andenrichDetails - 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:
| Event | Price |
|---|---|
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 collected | Approx. 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)
| Limit | Free Apify plan | Paid Apify plan |
|---|---|---|
| Runs of this Actor | 10 runs total | Unlimited |
Results per run (maxResults) | Up to 500 | Up 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:
| Field | Description |
|---|---|
channel | sale / rent / seasonal / projects / office |
location | City slug (istanbul) or national / _ / all for nationwide SERP |
locale | en / tr / ru |
district / neighborhood | District SERP without city prefix (e.g. arnavutkoy) |
propertyType | Path filter: daire, villa, arsa, isyeri, residence, … |
firmId / officeUrl | Required for channel=office |
projectIds / detailUrls | Project or listing detail URLs |
maxResults | Cap on Dataset rows (1–500) |
maxPages | ?page=N pagination (~24 cards/page) |
enrichDetails | Fetch 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.
| Field | Type | Meaning | Hepsiemlak source |
|---|---|---|---|
phones | [{value, type}] | Mobile / landline numbers | Detail 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 emails | Not 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 + role | Agent 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 ID | JSON-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 = 本站无. |
leadSource | enum | Where leads were extracted | search (thin SERP card) / detail (LDP page) / entity (agent/office page). |
leadReveal | enum | How contact was revealed | visible (phone already in SSR HTML, no click needed) / absent (field not available on this surface). |
leadAbsences | object/map | Per-subfield reason when null | One 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: trueor passdetailUrls. - 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:
| Field | Reason | leadAbsences value |
|---|---|---|
emails | Hepsiemlak 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.street | Area-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-clientfor 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).
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss