Sahibinden Scraper — Turkey Cars, Real Estate & Classifieds
Pricing
from $2.99 / 1,000 listings
Sahibinden Scraper — Turkey Cars, Real Estate & Classifieds
Sahibinden scraper for Turkish classifieds: apartments (satılık/kiralık), cars, shopping, prices, m², rooms, km, seller type, photos, and optional phones. JSON export — Python, Node.js, and MCP ready.
Pricing
from $2.99 / 1,000 listings
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by sahibinden.com or its affiliates. Data is read from publicly accessible pages only. No login. You are responsible for complying with applicable law (including KVKK / GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.
Contact-data controls: Phone fields are omitted from the dataset by default. Enable
includePhonesonly for numbers already published on public pages and only when you have a lawful basis. Any contact-field examples below assume that explicit opt-in; otherwise those fields are absent.
Sahibinden scraper for Turkey classifieds: satılık and kiralık apartments, villas, land, otomobil / SUV, and the second-hand catalog. Each row includes price (TRY), city/district, rooms or km, photos, and owner vs agency. Use it as a Sahibinden API alternative from Python, Node.js, cURL, or Apify MCP / AI assistants — paste a search or /ilan/ URL, or pick a city such as Istanbul.
Best for: Istanbul / Ankara / Izmir comps, used-car pricing, FSBO (sahibinden) lead lists, and JSON / CSV export via Apify.
| Actor | Role |
|---|---|
| Sahibinden Scraper ◄── you are here | Turkey cars, real estate & classifieds |
| Leboncoin Scraper | French classifieds |
| mobile.de Scraper | German vehicle listings |
When to use this Actor
- Sahibinden scraper for search pages — Copy a filtered browser URL (city, district, price, rooms, date) into Start URLs.
- Satılık / kiralık daire datasets — Istanbul, Ankara, Izmir, or any city slug; export JSON/CSV for comps and yield models.
- Used cars from the same Actor — Paste
/vasita/otomobilor/vasita/arazi-suv-pickupURLs (year + km on the card). - Private-seller lists — Enable Private sellers only, or paste a
/sahibindensearch URL to keep owner rows. - Scheduled monitoring — Re-run the same search and emit only new or price-changed listings.
When not to use this Actor
- Cookie / login walls — The Actor does not ask for session cookies and does not log in. Use Apify Proxy UNBLOCKER with country TR.
- More than ~1,000 rows from one filter — sahibinden itself stops around
pagingOffset=950. Split by district or price band. - Service pages — oto360, hizmetler, and ekspertiz URLs are skipped.
- Authenticated actions — No messaging, favorites, or store admin.
Key features
- Apify Unblocker + TR — Plain residential and datacenter IPs get Cloudflare 403. Group UNBLOCKER with country TR is the supported Cloud setup.
- Search + listing URLs — One Actor handles category/search pages and
/ilan/{id}detail links. - Search builder — City + category (sale, rent, cars, shopping) when you do not have a URL.
- Details off by default — Search cards cover price, location, rooms/km. Turn on details for description, GPS, attributes, and photos.
- Monitor mode — Key-value store remembers listing IDs and prices across runs.
- Typed JSON — Numeric price, m², year, km, and GPS — not string blobs.
Input
| Field | What it does |
|---|---|
| Start URLs | Search (/satilik-daire/istanbul, /vasita/otomobil/ford) or listing (/ilan/…/detay) links. Filters in the URL are kept. |
| Category / City | Builder only. Used when Start URLs are empty. |
| Sort | Newest, oldest, or price. Newest is best for monitors. |
| Max listings | Cap on dataset rows. |
| Scrape full listing details | Default off. On = description, attribute table, GPS, extra photos. |
| Include phone numbers | Opt-in. Only numbers already shown on the public listing page. |
| Private sellers only | Keep owner (sahibinden) rows when seller type is known. |
| Monitor mode | Save new and price-changed rows only. |
| Proxy | Apify Unblocker, country TR. |
{"startUrls": [{ "url": "https://www.sahibinden.com/satilik-daire/istanbul" }],"maxItems": 50,"includeDetails": false,"includePhones": false,"onlyPrivate": false,"monitorMode": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["UNBLOCKER"],"apifyProxyCountry": "TR"}}
Builder example (no URL):
{"category": "satilik-daire","city": "istanbul","sortBy": "newest","maxItems": 40,"includeDetails": false}
Cars example:
{"startUrls": [{ "url": "https://www.sahibinden.com/vasita/otomobil/istanbul?sorting=date_desc" }],"maxItems": 100}
Output
One dataset row per listing. Search-card fields are always present; detail fields fill in when Scrape full listing details is on. Turkish text is kept verbatim (UTF-8).
| Field | Description |
|---|---|
id / url | İlan number and canonical listing URL |
title / description | Headline and listing text |
price / currency / priceLabel | Numeric amount and 4.850.000 TL display string |
city / district / neighborhood | İl / ilçe / mahalle |
rooms / squareMeters / floor / heating | Real-estate fields (3+1, m², kat, ısıtma) |
make / series / model / year / km | Vehicle fields |
latitude / longitude | GPS from the detail map |
sellerType / isPrivate / sellerName | owner, agent, dealer, developer, bank |
phoneMobile | Public mobile when includePhones is on |
images / thumbnailUrl | Photo URLs |
recordType | summary or detail |
scrapedAt | UTC scrape timestamp |
{"id": "1313801852","url": "https://www.sahibinden.com/ilan/emlak-konut-satilik-metrobuse-yurume-luks-dekorlu-3-balkonlu-3-plus1-150-m2satilik-daire-1313801852/detay","title": "Metrobüse yürüme lüks dekorlu 3 balkonlu 3+1","price": 4850000,"currency": "TRY","city": "İstanbul","district": "Beylikdüzü","rooms": "3+1","squareMeters": 150,"sellerType": "agent","recordType": "summary"}
Use cases
- Build Istanbul satılık daire comps with price per m² by district.
- Track kiralık listings in Çankaya or Kadıköy overnight via monitor mode.
- Collect Ford / BMW search cards for used-car pricing without opening every detail.
- Keep sahibinden (owner) rows for FSBO outreach when you have a lawful basis for phones.
- Feed JSON into a spreadsheet, CRM, or valuation notebook.
Integration examples
Replace YOUR_TOKEN with your Apify API token. Actor name: crawloop/sahibinden-scraper.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('crawloop/sahibinden-scraper').call({startUrls: [{ url: 'https://www.sahibinden.com/satilik-daire/istanbul' }],maxItems: 50,includeDetails: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("crawloop/sahibinden-scraper").call(run_input={"startUrls": [{"url": "https://www.sahibinden.com/satilik-daire/istanbul"}],"maxItems": 50,"includeDetails": False,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/crawloop~sahibinden-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://www.sahibinden.com/satilik-daire/istanbul"}],"maxItems":50}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP.
Connect your Apify account, then call this Actor by its Store ID / name (crawloop/sahibinden-scraper).
Example prompts:
- "Run Sahibinden Scraper for satılık daire in Istanbul and return the top 20 rows as JSON"
- "Scrape sahibinden otomobil listings in Ankara with Sahibinden Scraper and summarize price, year, and km"
- "Chain Sahibinden Scraper then Leboncoin Scraper to compare Turkey and France rental comps"
Suite next step
After Turkey classifieds, add France coverage with Leboncoin Scraper or EU cars with mobile.de Scraper.
FAQ
Do I need a sahibinden account? No. Apify Proxy UNBLOCKER with country TR is the supported setup. Session cookies are not an input.
Why did the run fail with Cloudflare / unusual access? Datacenter and plain residential IPs are blocked. Set proxy group UNBLOCKER and country TR.
Can I get more than 1,000 listings? Not from a single filter URL. Split by ilçe, price band, or listing date (date=1day).
Are phones included? Only when includePhones is on, and only if the listing page already shows them.
Related Actors
| Actor | Role |
|---|---|
| Leboncoin Scraper | France classifieds |
| mobile.de Scraper | German used cars |