Emlakjet Istanbul Real Estate Listings
Pricing
from $1.70 / 1,000 listing founds
Emlakjet Istanbul Real Estate Listings
Pull live apartment/housing listings straight from Emlakjet.com for Istanbul — one of Turkey's biggest real-estate classifieds portals — by deal type (sale/rent) and property type. No login, no browser, no proxies.
Pricing
from $1.70 / 1,000 listing founds
Rating
0.0
(0)
Developer
Tim Zinin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Pull live apartment and housing listings straight from Emlakjet.com — one of Turkey's biggest real-estate classifieds portals — for Istanbul (city-wide or any district), filtered by deal type (sale/rent) and property type. No login, no API key, no browser needed on your side.
What you get
- Title, price (with currency), room count, floor area, neighborhood/district, floor, up to 5 photos and the direct listing URL for every ad found.
- Filter by sale (
satilik) or rent (kiralik), by apartment (daire) or the broader housing category (konut), and by Istanbul city-wide search or any specific district. - Runs on Apify: schedule it, monitor it, call it from the API, export to JSON/CSV/Excel or push straight into your own pipeline.
How to run it
- Click Try for free — no card needed on the free plan.
- Pick Deal type (sale or rent) and Property type.
- Optionally set City / district slug (defaults to all of Istanbul).
- Hit Start and pull the results from the dataset (UI, API or webhook).
Pricing
Pay-per-event: $0.005 per run start + $0.002 per result. No monthly seat, no minimum. 100 listings found cost about $0.21 (the one-time start fee plus 100 result rows). Rows where the source returned nothing (an unrecognized location, a query with zero matching listings, or a request that failed) are returned for transparency but are never charged for.
Input
| Field | Required | What it does |
|---|---|---|
deal_type | yes | satilik (for sale) or kiralik (for rent). |
property_type | yes | daire (apartment) or konut (residential/housing — a broader Emlakjet category that overlaps with, but isn't identical to, daire). |
city | no | Emlakjet.com location slug — istanbul (default, whole city) or an Istanbul district like istanbul-kadikoy. |
max_items | no | Total row cap for this run (default 100, max 1500 — Emlakjet's own pagination depth limit). |
max_pages | no | How many result pages to walk before stopping (default 3, max 50 — Emlakjet itself won't show more). |
{"deal_type": "satilik","property_type": "daire","city": "istanbul","max_items": 5,"max_pages": 1}
Output
Real row from a live run (2026-07-31):
{"deal_type_requested": "satilik","property_type_requested": "daire","city_requested": "istanbul","found": true,"url": "https://www.emlakjet.com/ilan/31-deniz-manzarali-masrafsiz-satilik-daire-19653884","title": "3+1 Deniz Manzaralı Masrafsız Satılık Daire","price": 4950000,"currency": "TRY","deal_type": "sale","property_type": "Satılık Daire","rooms": 4,"area_sqm": 105,"location": "Derviş Ali Mahallesi, Fatih","lat": null,"lng": null,"posted_date": "2026-07-27","description": null,"images": ["https://imaj.emlakjet.com/listing/19653884/D6E66217DCFB76A863DB8A135947D4D219653884.jpg","https://imaj.emlakjet.com/listing/19653884/FBB5C01B737612A60BBDE1E71A456FCF19653884.jpg","https://imaj.emlakjet.com/listing/19653884/F1CFCCC7D198D194ECDD546928DC0CB719653884.jpg","https://imaj.emlakjet.com/listing/19653884/927369159EE32CDDD42773F05D55454A19653884.jpg","https://imaj.emlakjet.com/listing/19653884/0EE55F00F84AE1B3DC537944A97EF8A519653884.jpg"],"source_portal": "emlakjet","scraped_at": "2026-07-31T14:19:11.804Z","partial": true,"partial_reason": "stopped after 1 page(s), 5 item(s) collected — reached this run's own max_pages/max_items limit before the source confirmed (via confirmedEnd) that there is nothing more; there may be additional matching listings beyond what was collected","rooms_raw": "3+1","floor_raw": "Çatı Dubleks"}
| Field | Meaning |
|---|---|
found | true for a real listing row, false for a not-found/error row. |
price | Listing price as a number, in currency (always TRY for a found row). |
deal_type | sale or rent, read off the listing's own label — not just echoed from your request. |
property_type | The listing's own category label as Emlakjet shows it (e.g. "Satılık Daire", "Kiralık Konut"). |
rooms | Turkish "bedrooms+salon" room count, summed into one number (e.g. "3+1" → 4). null when the source's format can't be summed (studio listings, an open-ended "6+" bucket, or a missing value) — never guessed as 0. |
rooms_raw | The source's original room-count string as shown on the listing (e.g. "3+1"), so you can apply your own convention if you don't want ours. |
area_sqm | Floor area in square meters. |
location | Neighborhood and district, as shown on the listing. |
floor_raw | Floor as the source states it — not always a plain number ("8. Kat", "Yüksek giriş" = elevated ground floor, "Çatı Dubleks" = rooftop duplex). |
description | Always null — Emlakjet's listing pages carry no text description in the data this Actor reads. |
lat / lng | Not available on list pages — always null. |
images | Up to 5 photos shown on the listing. |
partial | true when this run stopped (hit its own max_pages/max_items limit) before the source itself confirmed there was nothing more to page through — false/absent when the source's own end-of-results signal was reached first. |
partial_reason | Set alongside partial: true — a human-readable note on why this run stopped short (e.g. page/item cap reached), so a row that may not reflect the full matching set is never silently indistinguishable from a complete one. |
A not-found row (unrecognized location or category — Emlakjet returns a clean HTTP 404 for these, with no in-between "understood you, zero matches" state):
{"deal_type": "satilik","property_type": "daire","city": "not-a-real-location-9999","found": false,"error": "http 404","scraped_at": "2026-07-31T14:19:16.259Z"}
API
Start a run with a bearer token and the same input shown above:
curl -sS -X POST 'https://api.apify.com/v2/acts/zinin~emlakjet-istanbul/runs?waitForFinish=60' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data '{"deal_type":"satilik","property_type":"daire","city":"istanbul","max_items":5,"max_pages":1}'
Read Dataset rows using the returned defaultDatasetId:
curl -sS "https://api.apify.com/v2/datasets/$DEFAULT_DATASET_ID/items?clean=true&format=json" \-H "Authorization: Bearer $APIFY_TOKEN"
MCP
For an Apify MCP client exposing the standard call-actor tool, send this exact payload:
{"name": "call-actor","arguments": {"actor": "zinin/emlakjet-istanbul","input": {"deal_type": "satilik","property_type": "daire","city": "istanbul","max_items": 5,"max_pages": 1}}}
Other tools we built
Related Actors
Fill the gap this Actor's own FAQ names, or compare Istanbul against other emerging real-estate markets on the same account.
| Actor | Use it when |
|---|---|
| Structured Data Extractor | You need the full description, phone number (if published) or exact coordinates — this Actor's own FAQ says list-page data doesn't carry those; run it on each row's url. |
| URL to Markdown Converter | Same detail-page gap, but you want clean Markdown from url for an LLM to summarize the Turkish listing text rather than structured JSON. |
| PropertyFinder.ae UAE Real Estate Listings | You're comparing entry prices for the same buyer profile across Istanbul and the Gulf, not just within Turkey — same input shape, same account. |
FAQ / Limitations
Does this need an Emlakjet.com account or API key? No — it reads the same public search pages a visitor sees, no login.
What this is NOT. This does not fetch the seller's phone number, the full listing description, or exact coordinates from the listing's own detail page — only what's exposed on the search-results list. It does not guarantee every listing on Emlakjet is returned: Emlakjet itself caps how many pages of a single search you can page through (50), regardless of how large the category actually is.
Found a bug or need a custom variant (a different Turkish city, extra fields)? Open an issue on the Actor page.
Machine use
The Actor is callable through the Apify API, SDK, and Apify MCP server. The input and Dataset row are the machine-facing contract; a found:false row (unrecognized location/category, or a failed request) is never billed, so an agent can safely branch on found before touching price or rooms on the same row.