Emlakjet Scraper [Only $1/1K💰] | Turkey Real Estate | Agents
Pricing
from $0.90 / 1,000 results
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
Maintained by CommunityActor 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

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:
- The embedded schema.org
RealEstateListingJSON-LD on search pages, used to discover listing links and emit summaries. - 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
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchUrls | string[] | 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. |
listingUrls | string[] | No | - | Direct listing detail URLs (https://www.emlakjet.com/ilan/...); each is scraped for full details. |
officeUrls | string[] | No | - | https://www.emlakjet.com/emlak-ofisleri or /danismanlar, or an individual office/consultant profile URL. |
maxListings | integer | No | 100 | Maximum listing detail pages (or directory rows) to collect for paying users. |
maxSearchPages | integer | No | 0 | Pages per search query. 0 = automatic (enough pages to fill maxListings); a positive value hard-caps pagination. |
scrapeDetails | boolean | No | true | Open each listing for full details (agent, phone/WhatsApp, rooms, m2, floor, coordinates). Off = summary-only from search pages. |
maxConcurrency | integer | No | 10 | Parallel requests. |
maxRequestsPerCrawl | integer | No | 500 | Hard cap on total HTTP requests. |
proxy | object | No | off | Apify 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"):
| Field | Description |
|---|---|
listingId, title, url, slug | Identity and link |
transactionType | sale / rent |
propertyType | residential / land / commercial |
price, currency, pricePerSqm, previousPrice | Price in TRY |
rooms | e.g. 4+1 |
grossArea, netArea | m2 (brut / net) |
floor, totalFloors, bathrooms, buildingAge | Building details |
city, cityId, district, districtId, mahalle, mahalleId | il / ilce / mahalle |
locationAddress, latitude, longitude | Location |
images, mainImage, imageCount | Photo gallery |
listingDate, updatedDate | ISO timestamps |
agent | { id, memberId, name, companyName, type, membershipLevel, isVerified, licenseNo, yearsActive, officeUrl, consultantUrl, hasPhone, phone, whatsappUrl } |
quickInfos, properties | Full 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.
Related Actors
- Emlakjet Scraper - Turkey Property Listings (Emlak) - established Emlakjet listing scraper.
- Emlakjet Scraper - category-driven Emlakjet scraper.
- Sotheby's Realty Scraper - luxury real-estate listings to pair with Turkish market data.
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:
recordTypedistinguisheslisting,listingSummary,office,consultant,officeDirectoryandconsultantDirectoryrows in one dataset - filter on it.maxSearchPagesdefaults to0(auto): the actor crawls exactly enough pages to fillmaxListings, so a request for 100 listings is not silently capped.scrapeDetailsdefaults totrueand adds one request per listing; turning it off returns only the summary data embedded in search pages (no agent/phone/coordinates).maxListingsdefaults 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.
Legal & Compliance Disclaimer
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