Emlakjet Scraper [Only $1/1K💰] | Turkey Real Estate | Agents avatar

Emlakjet Scraper [Only $1/1K💰] | Turkey Real Estate | Agents

Pricing

from $0.90 / 1,000 results

Go to Apify Store
Emlakjet Scraper [Only $1/1K💰] | Turkey Real Estate | Agents

Emlakjet Scraper [Only $1/1K💰] | Turkey Real Estate | Agents

Scrape emlakjet.com Turkish property listings - price in TRY, rooms, m2, floor, city/district/mahalle, coordinates, photos - plus the agent/office directory with phone and WhatsApp. For Turkey real-estate market research and lead generation.

Pricing

from $0.90 / 1,000 results

Rating

0.0

(0)

Developer

Ahmed Jasarevic

Ahmed Jasarevic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Emlakjet Scraper

Emlakjet scraper for Turkey's property marketplace: extract satilik (for sale) and kiralik (for rent) listings across all 81 provinces with price in TRY, rooms, m2, floor, city/district/mahalle, coordinates, photos - plus the emlak agent/office directory with phone and WhatsApp contacts.

Main Use Cases

  • Turkey real-estate market research - asking prices, price per m2 and supply by province and district
  • Investment screening and yield analysis - compare satilik and kiralik asking prices in the same district
  • Buyer-agent and brokerage lead generation from the emlak office and consultant directories
  • Rental and daily-rental market tracking across coastal and city districts
  • Feeding a valuation or proptech product with live Turkish listing data

How It Works

How the Emlakjet Scraper works: search URLs to Turkish sale and rent listings with prices, square metres and agent contacts.

emlakjet.com is a Next.js (App Router) site. Its search and listing pages are server-rendered, so the actor is a lightweight Cheerio (HTTP) crawler - no browser. It reads two structured sources straight out of the served HTML:

  1. The embedded schema.org RealEstateListing JSON-LD on search pages, used to discover listing links and emit summaries.
  2. The React Server Component (RSC) flight payload (self.__next_f), where it brace-matches the application-state objects for full listing details (including the agent block) and for the office/consultant directories.

The agent phone number is recovered from the agent's public WhatsApp deeplink when the raw contact field is masked in the payload. Search pages paginate automatically (30 listings per page) until maxListings is reached.

Scrape Emlakjet Listings And Agent Contacts (Satilik / Kiralik)

Pass one or more Emlakjet search URLs - for example https://www.emlakjet.com/satilik-konut/istanbul or https://www.emlakjet.com/kiralik-konut/ankara - and the actor walks the result pages, opening each listing for the full record: price in TRY, rooms (e.g. 3+1), gross and net m2, floor, city/district/mahalle, coordinates, image gallery and the advertising agent or office with its phone/WhatsApp. Add https://www.emlakjet.com/emlak-ofisleri or https://www.emlakjet.com/danismanlar to also pull the office and consultant directories with their active-listing counts.

Input

FieldTypeRequiredDefaultNotes
searchUrlsstring[]No["https://www.emlakjet.com/satilik-konut/istanbul"]Emlakjet search/category URLs whose result pages should be crawled. Listing links are discovered from the embedded schema.org data.
listingUrlsstring[]No-Direct listing detail URLs (https://www.emlakjet.com/ilan/...); each is scraped for full details.
officeUrlsstring[]No-https://www.emlakjet.com/emlak-ofisleri or /danismanlar, or an individual office/consultant profile URL.
maxListingsintegerNo100Maximum listing detail pages (or directory rows) to collect for paying users.
maxSearchPagesintegerNo0Pages per search query. 0 = automatic (enough pages to fill maxListings); a positive value hard-caps pagination.
scrapeDetailsbooleanNotrueOpen each listing for full details (agent, phone/WhatsApp, rooms, m2, floor, coordinates). Off = summary-only from search pages.
maxConcurrencyintegerNo10Parallel requests.
maxRequestsPerCrawlintegerNo500Hard cap on total HTTP requests.
proxyobjectNooffApify Proxy picker; enable if a cloud IP is ever challenged.

Output

Rows are written to the default dataset and distinguished by recordType.

Listings (recordType: "listing"):

FieldDescription
listingId, title, url, slugIdentity and link
transactionTypesale / rent
propertyTyperesidential / land / commercial
price, currency, pricePerSqm, previousPricePrice in TRY
roomse.g. 4+1
grossArea, netAream2 (brut / net)
floor, totalFloors, bathrooms, buildingAgeBuilding details
city, cityId, district, districtId, mahalle, mahalleIdil / ilce / mahalle
locationAddress, latitude, longitudeLocation
images, mainImage, imageCountPhoto gallery
listingDate, updatedDateISO timestamps
agent{ id, memberId, name, companyName, type, membershipLevel, isVerified, licenseNo, yearsActive, officeUrl, consultantUrl, hasPhone, phone, whatsappUrl }
quickInfos, propertiesFull attribute map (heating, parking, deed status, ...)

Directory rows: officeDirectory, consultantDirectory, office, consultant - with activeListingCount, last3MonthListingCount, membershipYears, phone, languages, location and (for consultants) reviewCount, avatar.

Example Input

{
"searchUrls": [
"https://www.emlakjet.com/satilik-konut/istanbul",
"https://www.emlakjet.com/kiralik-konut/ankara"
],
"officeUrls": ["https://www.emlakjet.com/emlak-ofisleri"],
"maxListings": 300,
"scrapeDetails": true
}

Example Output

{
"recordType": "listing",
"listingId": "19727527",
"title": "Han Emlak'tan Ethemefendi'de 3+1 Ultra Luks Yeni Bina",
"url": "https://www.emlakjet.com/ilan/...-19727527",
"transactionType": "sale",
"propertyType": "residential",
"price": 22450000,
"currency": "TRY",
"pricePerSqm": 160357,
"rooms": "3+1",
"grossArea": 140,
"netArea": 125,
"floor": "3. Kat",
"city": "Istanbul",
"district": "Kadikoy",
"mahalle": "Erenkoy Mahallesi",
"latitude": 40.9765,
"longitude": 29.0553,
"listingDate": "2026-08-14T00:00:00.000Z",
"agent": {
"name": "Han Emlak",
"companyName": "Han Gayrimenkul",
"type": "office",
"isVerified": true,
"hasPhone": true,
"phone": "+90 555 000 0000",
"officeUrl": "https://www.emlakjet.com/emlak-ofisleri/han-emlak"
},
"scrapedAt": "2026-10-15T15:25:00.000Z"
}

Integrations & Automation

  • Apify API / JS / Python clients - load listings into a valuation model, BI tool or proptech backend.
  • Webhooks - trigger downstream processing when a run finishes.
  • Zapier, Make, Google Sheets - export a district price table or a broker lead list.
  • Scheduling - run daily to track new listings and asking-price movement for a district set.

FAQ

Why use this actor instead of the official API?

Emlakjet does not publish a public listings API - its internal API requires an auth token the frontend holds (unauthenticated calls return 401). This actor reads the server-rendered HTML and the embedded structured data that the public pages already serve, so no key is required.

What are alternatives to this actor?

Commercial third-party APIs exist that wrap Emlakjet into JSON endpoints (for example ReefAPI and similar providers) and add price history, nearby places and demographics - those require a subscription. For a self-serve scrape of listings and the agent directory, this actor is the direct route.

Which provinces and districts are covered?

All 81 Turkish provinces are reachable through their Emlakjet search URLs (/satilik-konut/istanbul, /kiralik-konut/ankara, district pages, and so on). Coverage is limited only by the URLs you supply and maxListings.

How do I compare sale and rental prices for the same area?

Run the actor once with a satilik-konut search URL and once with kiralik-konut for the same district, then join the two datasets on district and rooms. Note that rental prices are monthly while sale prices are total, and that some fields (owner phone) may be masked on the source page.

For AI Agents & LLM Apps

Purpose: return Emlakjet property listings and/or the agent/office directory as structured rows, for a set of Emlakjet search or profile URLs.

Minimal working input:

{ "searchUrls": ["https://www.emlakjet.com/satilik-konut/istanbul"] }

Variant input (directory mode):

{ "officeUrls": ["https://www.emlakjet.com/emlak-ofisleri"] }

Output fields - listings: recordType, listingId, title, url, slug, transactionType, propertyType, price, currency, pricePerSqm, previousPrice, rooms, grossArea, netArea, floor, totalFloors, bathrooms, buildingAge, city, district, mahalle, locationAddress, latitude, longitude, images, mainImage, imageCount, listingDate, updatedDate, agent, quickInfos, properties, scrapedAt. Directory: recordType, activeListingCount, last3MonthListingCount, membershipYears, phone, languages, location, reviewCount, avatar.

Behaviors an agent should know:

  • recordType distinguishes listing, listingSummary, office, consultant, officeDirectory and consultantDirectory rows in one dataset - filter on it.
  • maxSearchPages defaults to 0 (auto): the actor crawls exactly enough pages to fill maxListings, so a request for 100 listings is not silently capped.
  • scrapeDetails defaults to true and adds one request per listing; turning it off returns only the summary data embedded in search pages (no agent/phone/coordinates).
  • maxListings defaults to 100; free users get a capped preview (10 rows).
  • Pagination uses ?sayfa=N (30 listings per page) and stops as soon as the listing budget is filled.

Billing: pay-per-event - about $1 per 1,000 result rows, plus a per-listing detail charge (about $3 per 1,000) when scrapeDetails is on, and the one-time actor-start event; lower on paid Apify plans.

This actor is independent and is not affiliated with, endorsed by, or sponsored by Emlakjet. It reads only publicly available listing, search and agent-directory pages; it does not log in or access account-only data. Agent names and phone numbers are business contact details the platform publishes on its listings. Turkish data-protection law (KVKK) and, for non-Turkish data subjects, the GDPR may govern your use of the personal data in rows that include an agent's name or phone number - you are responsible for your own compliance with Emlakjet's terms of service and with applicable law. Data is provided for market research and lawful outreach, and should not be used to send unsolicited commercial messages in violation of applicable rules.

SEO Keywords

emlakjet scraper, turkey real estate data, turkish property listings, emlakjet api, satilik konut, kiralik konut, turkey property price data, istanbul apartment prices, price per square meter turkey, emlak ofisleri directory, turkish rental market data, turkey housing market scraper, emlak ilan data, sahibinden alternative, real estate investor data turkey, property agent leads turkey, turkey citizenship investment property, emlakjet listings json