# Sahibinden.com Car Scraper (`rastriq/sahibinden-scraper`) Actor

Extract car listings from sahibinden.com — Turkey's #1 classifieds platform. Get make, model, year, mileage, price, location, and more. Requires Turkish residential proxies.

- **URL**: https://apify.com/rastriq/sahibinden-scraper.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Sahibinden.com Car Scraper — Extract Turkish Used Car Listings

Extract car listings from **sahibinden.com** — Turkey's largest online classifieds platform with 1.5M+ active listings. Sahibinden.com Car Scraper lets you scrape vehicle prices, specifications, mileage, locations, and seller details at scale. Export to JSON, CSV, or Excel and integrate with any workflow via the Apify API.

> 🚀 **Try it free** — your first $5 of usage is on Apify. No credit card required.

### 📌 What is Sahibinden.com Car Scraper?

**Sahibinden.com Car Scraper** is an Apify Actor that extracts structured car listing data from sahibinden.com — the dominant automotive marketplace in Turkey. Unlike manual browsing or copy-pasting, this scraper collects hundreds of listings in minutes and outputs clean, structured data ready for analysis.

Use Sahibinden.com Car Scraper to:

- 🔍 **Monitor used car prices** — track pricing trends for specific makes and models across Turkey
- 📊 **Build market intelligence datasets** — compare prices by city, year, mileage, and fuel type
- 🏆 **Find underpriced vehicles** — spot arbitrage opportunities before the competition
- 📈 **Analyze inventory levels** — track supply by brand and region over time
- 🔄 **Automate recurring workflows** — schedule daily runs, set up webhooks, and keep your datasets fresh

The Apify platform gives Sahibinden.com Car Scraper superpowers: **scheduling**, **monitoring**, **API access**, **proxy rotation**, and **integrations** with Make, Zapier, Google Sheets, and more — all out of the box.

### 📋 What data does Sahibinden.com Car Scraper extract?

Sahibinden.com Car Scraper returns structured data with the following fields:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique listing ID from Sahibinden |
| `title` | string | Full listing title |
| `make` | string | Car manufacturer (BMW, Mercedes, Toyota, etc.) |
| `series` | string | Car series (3 Series, C Class, Corolla, etc.) |
| `model` | string | Specific model/trim |
| `year` | integer | Model year |
| `km` | integer | Mileage in kilometers |
| `price` | number | Listing price |
| `currency` | string | Currency code (TRY, USD, EUR, GBP) |
| `color` | string | Vehicle color |
| `fuel_type` | string | Fuel type (Benzin, Dizel, LPG, Elektrik, Hybrid) |
| `gearbox` | string | Transmission (Otomatik, Manuel) |
| `seller_type` | string | Dealer (Galeriden) or Owner (Sahibinden) |
| `city` | string | City/district location |
| `date` | string | Listing date |
| `img_url` | string | Main listing image URL |
| `url` | string | Direct link to the listing |

> 💡 Some fields may be empty depending on what's available on the listing page.

### 🚀 How to use Sahibinden.com Car Scraper

Extracting car data from sahibinden.com takes under two minutes:

1. **Create a free Apify account** at [apify.com](https://apify.com) — your first $5 is free
2. **Open Sahibinden.com Car Scraper** in Apify Console or click **Try for free** on this page
3. **Set your input** — add a Start URL from sahibinden.com, or just set a brand name
4. **Configure proxy** — Turkish residential proxies are required (pre-configured by default)
5. **Click Save & Start** and wait for results
6. **Download your results** in JSON, CSV, Excel, or XML — or access via API

### ⚙️ Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrls` | array | ❌ | All cars | Sahibinden.com category or search URLs with filters applied |
| `brand` | string | ❌ | — | Filter by manufacturer (e.g. "BMW"). Ignored when startUrls are set |
| `maxPages` | integer | ❌ | 3 | Maximum listing pages to scrape (~20 results per page) |
| `maxItems` | integer | ❌ | — | Stop after this many results |
| `sessionCookies` | string | ❌ | — | Browser session cookies (JSON) to bypass login redirect |
| `requestDelay` | integer | ❌ | 3000 | Delay between requests in milliseconds |
| `proxyConfiguration` | object | ❌ | RESIDENTIAL/TR | Proxy settings |

### 📤 Output example

```json
{
  "id": "1234567890",
  "title": "2020 BMW 3.20i First Edition M Sport",
  "make": "BMW",
  "series": "3 Serisi",
  "model": "320i First Edition M Sport",
  "year": 2020,
  "km": 45000,
  "price": 2850000,
  "currency": "TRY",
  "color": "Beyaz",
  "fuel_type": "Benzin",
  "gearbox": "Otomatik",
  "seller_type": "Galeriden",
  "city": "İstanbul / Kadıköy",
  "date": "15 Temmuz 2026",
  "img_url": "https://i.sahibinden.com/...",
  "url": "https://www.sahibinden.com/ilan/vasita-otomobil-bmw-...",
  "source": "sahibinden.com",
  "scraped_at": "2026-07-29T12:00:00.000Z"
}
```

### ⚠️ Important: Anti-bot protection

Sahibinden.com has one of the most aggressive anti-bot systems among Turkish websites. To get results:

1. **RESIDENTIAL proxies are mandatory** — Sahibinden blocks all datacenter IPs. Use Apify's RESIDENTIAL proxy group with country code **TR** (pre-configured in the default input).

2. **Session cookies recommended** — Sahibinden frequently redirects new proxy IPs to a mandatory login page. Export your session cookies from a real browser session and paste them into the `sessionCookies` input field.

3. **Keep request delays high** — The default 3-second delay between pages is conservative but safe. Lower values increase the risk of rate limiting (HTTP 429).

4. **Selectors may change** — Sahibinden periodically updates their HTML structure. If you notice 0 results, check the debug HTML files in the Key-Value Store.

### 💰 Pricing

Sahibinden.com Car Scraper uses Apify's **Pay Per Event** pricing. You pay only for the results you get:

- **Cost estimate**: ~$0.50–1.00 per 1,000 listings (compute + residential proxy)
- **Free tier**: Your first $5 of platform usage is free — enough for ~5,000–10,000 listings
- **No monthly fees**: Pay only when you run the scraper

Residential proxies from Turkey are billed separately by Apify based on data transfer.

### ❓ FAQ

**Is it legal to scrape sahibinden.com?**
This actor extracts publicly available listing data (prices, specifications, locations). It does not extract personal data (emails, phone numbers, addresses). Always review Sahibinden's Terms of Service for your specific use case.

**Why am I getting 0 results?**
The most common cause is missing residential proxy or expired session cookies. Check the debug HTML files in the run's Key-Value Store for details.

**Can I scrape other categories (real estate, electronics)?**
This actor is optimized for car listings (`/vasita/otomobil`). Other categories may work with custom Start URLs but are not officially supported.

**How often should I run the scraper?**
For price monitoring, daily runs are typical. For inventory tracking, weekly runs are usually sufficient. Use Apify's scheduling feature to automate runs.

**Can I extract detail page data (description, all photos, specs)?**
The current version extracts listing-level data from search results pages. Detail page scraping is planned for a future release.

***

*Built by [Rastriq](https://apify.com/rastriq) — Data Intelligence Studio*

# Actor input Schema

## `startUrls` (type: `array`):

Add one or more Sahibinden car category or search URLs with your desired filters applied.<br><br>Accepted formats:<br>• <code>https://www.sahibinden.com/en/cars</code> — all cars<br>• <code>https://www.sahibinden.com/en/cars/bmw</code> — single brand<br>• <code>https://www.sahibinden.com/en/cars?sorting=date\_desc</code> — with filters<br><br>💡 <b>Tip:</b> Apply filters directly on sahibinden.com and copy the URL.

## `brand` (type: `string`):

Filter by car manufacturer (e.g. BMW, Mercedes, Toyota). Leave empty to scrape all brands.<br><br>⚠️ Ignored when <b>Start URLs</b> are provided — the URL takes priority.

## `maxPages` (type: `integer`):

Maximum number of listing pages to scrape. Each page has ~20 results.<br><br>Recommended values:<br>• <b>1–5 pages</b> — quick test (20–100 results)<br>• <b>10–50 pages</b> — market sample<br>• <b>100–500 pages</b> — full inventory scan<br><br>💡 <b>Tip:</b> Start with 3 pages to estimate costs before scaling.

## `maxItems` (type: `integer`):

Stop after collecting this many listings. Leave empty for no limit (controlled by Max pages instead).<br><br>💡 Use this for precise volume control.

## `sessionCookies` (type: `string`):

Paste your session cookies exported from a real browser logged into sahibinden.com.<br><br>Sahibinden frequently redirects new proxy IPs to a mandatory login page (<code>/giris</code>). Providing session cookies helps bypass this wall.<br><br>How to export:<br>1. Log into sahibinden.com in your browser<br>2. Use <b>EditThisCookie</b> or DevTools → Application → Cookies<br>3. Copy all cookies as JSON and paste here<br><br>⚠️ <b>Never save cookies in published tasks.</b> Only provide them when running your own tasks.

## `requestDelay` (type: `integer`):

Delay between page requests in milliseconds.<br><br>Recommended values:<br>• <b>3000 ms</b> — safe default<br>• <b>5000–10000 ms</b> — if getting rate-limited<br>• <b>1000 ms</b> — faster but riskier

## `proxyConfiguration` (type: `object`):

Proxy settings. <b>Turkish residential proxies are required</b> — Sahibinden blocks datacenter IPs.<br><br>Recommended setup:<br>• Proxy group: <b>RESIDENTIAL</b><br>• Country: <b>TR</b> (Turkey)

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.sahibinden.com/en/cars"
    }
  ],
  "brand": "BMW",
  "maxPages": 3,
  "requestDelay": 3000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "TR"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Structured car listing data with make, model, year, mileage, price, and location

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.sahibinden.com/en/cars"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "TR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/sahibinden-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.sahibinden.com/en/cars" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "TR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/sahibinden-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.sahibinden.com/en/cars"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "TR"
  }
}' |
apify call rastriq/sahibinden-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rastriq/sahibinden-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fq0r52bPllEQMjOGf/builds/TW9lWSi4qUcXe79ND/openapi.json
