Emlakjet Istanbul Real Estate Listings avatar

Emlakjet Istanbul Real Estate Listings

Pricing

from $1.70 / 1,000 listing founds

Go to Apify Store
Emlakjet Istanbul Real Estate Listings

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

Tim Zinin

Maintained by Community

Actor 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

  1. Click Try for free — no card needed on the free plan.
  2. Pick Deal type (sale or rent) and Property type.
  3. Optionally set City / district slug (defaults to all of Istanbul).
  4. 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

FieldRequiredWhat it does
deal_typeyessatilik (for sale) or kiralik (for rent).
property_typeyesdaire (apartment) or konut (residential/housing — a broader Emlakjet category that overlaps with, but isn't identical to, daire).
citynoEmlakjet.com location slug — istanbul (default, whole city) or an Istanbul district like istanbul-kadikoy.
max_itemsnoTotal row cap for this run (default 100, max 1500 — Emlakjet's own pagination depth limit).
max_pagesnoHow 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"
}
FieldMeaning
foundtrue for a real listing row, false for a not-found/error row.
priceListing price as a number, in currency (always TRY for a found row).
deal_typesale or rent, read off the listing's own label — not just echoed from your request.
property_typeThe listing's own category label as Emlakjet shows it (e.g. "Satılık Daire", "Kiralık Konut").
roomsTurkish "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_rawThe 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_sqmFloor area in square meters.
locationNeighborhood and district, as shown on the listing.
floor_rawFloor as the source states it — not always a plain number ("8. Kat", "Yüksek giriş" = elevated ground floor, "Çatı Dubleks" = rooftop duplex).
descriptionAlways null — Emlakjet's listing pages carry no text description in the data this Actor reads.
lat / lngNot available on list pages — always null.
imagesUp to 5 photos shown on the listing.
partialtrue 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_reasonSet 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

Fill the gap this Actor's own FAQ names, or compare Istanbul against other emerging real-estate markets on the same account.

ActorUse it when
Structured Data ExtractorYou 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 ConverterSame 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 ListingsYou'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.