# Kariyer.net İş İlanları ve Maaş Analizi | Jobs & Salary Scraper (`berkify/kariyer-net-is-ilanlari-maas`) Actor

Kariyer.net iş ilanlarını Excel'e döker; her ilana piyasa maaşı, il ve deneyim seviyesi ortalaması ekler. Scrape Kariyer.net (Turkey) jobs with market salary insights, applicant counts and company data.

- **URL**: https://apify.com/berkify/kariyer-net-is-ilanlari-maas.md
- **Developed by:** [Berkay Çınar](https://apify.com/berkify) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 i̇lan özeti / job summaries

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Kariyer.net İş İlanları ve Maaş Analizi | Kariyer.net Jobs & Salary Scraper

**🗓️ Son güncelleme: 18 Ekim 2026** · Last updated: 18 October 2026

![Kariyer.net İş İlanları ve Maaş Analizi](https://api.apify.com/v2/key-value-stores/oWrjJ9piYRaUiZVXX/records/cover-v3.png)

**🇹🇷 Türkçe** · [🇬🇧 English below](#english)

Kariyer.net'teki iş ilanlarını tek tıkla düzenli bir tabloya dönüştürür. İsterseniz her ilanın yanına **o pozisyonun maaş analizini** ekler: ortalama maaş, **ilanın şehrindeki ortalama**, **ilanın istediği deneyim dilimindeki ortalama**, sık paylaşılan maaş aralığı ve 2018'den bugüne yıllık maaş trendi. Sonuç JSON, CSV, Excel ve API olarak indirilebilir; Console tabloları Türkçe başlıklıdır.

#### Kimler için?

- **İK ve işe alım ekipleri**: Rakiplerin açtığı pozisyonları, başvuru sayılarını ve teklif etmeniz gereken maaş aralığını görün.
- **Ücret / maaş danışmanları**: Pozisyon × il × deneyim × eğitim kırılımlı maaş verisi.
- **Kariyer siteleri, araştırmacılar, gazeteciler**: Türkiye iş piyasası ve maaş trendleri.
- **Satış ekipleri (lead)**: İşe alım yapan şirketler, çalışan sayısı, web sitesi.

#### Ne alırsınız? 3 veri seviyesi, 3 sayfa

Sonuçlar seçtiğiniz **veri seviyesine** göre en fazla 3 tabloda (Output sekmesinde sayfa olarak) gelir. Her seviye bir öncekini de içerir; sayfalar `jobId` ile birbirine bağlıdır.

| Veri seviyesi | Sayfalar | İçerik | Fiyat (1.000 ilan) |
|---|---|---|---|
| **İlan Özeti** (`list`) | İlan Özeti | Şirket, pozisyon, şehir, ilçe, çalışma şekli/modeli, sektör, kolay başvuru, yayın tarihi, ilan linki | **$0.50** |
| **İlan Detayı** (`details`, varsayılan) | + **İlan Detayı** | İlan sayfasındaki tüm bilgiler: açıklama, pozisyon seviyesi, kategori, güncellenme ve son başvuru tarihi, deneyim, eğitim, bölüm, askerlik, ehliyet, dil, yan haklar, **başvuru sayısı**, "başvurular X gün önce incelendi", çalışma saatleri, **sık paylaşılan maaş aralığı**, **şirket profili** (çalışan sayısı, takipçi, sektör, kuruluş yılı, adres, web sitesi, açık ilan sayısı) | **$1** |
| **Maaş Analizi** (`full`) | + **Maaş Analizi** | Pozisyonun maaş analizi (aşağıda ayrıntılı) | **$3** |

💸 **Apify Bronze / Silver / Gold** aboneleri İlan Özeti ve İlan Detayı ücretlerinde **%10 / %20 / %30 indirimli** öder (Maaş Analizi ek ücreti hariç).

#### 💰 Maaş Analizi

**Veri nereden geliyor?** Kariyer.net'in her pozisyon için yayınladığı maaş sayfasından (örn. *Muhasebe Personeli Maaşları*). Kariyer.net'in açıklamasına göre bu veriler:

- **Özel sektördeki** işe alımlar için adayların **başvuru sırasında paylaştığı maaş beklentileridir**,
- **aylık net** maaştır,
- **son 3 ayda** girilen verilerden hesaplanır, **aylık güncellenir**, aşırı uç değerler dışarıda bırakılır.

İşverenin ödediği maaş ya da bir maaş önerisi değildir; **piyasadaki adayların ne beklediğini** gösterir. Kariyer.net ilanlarında maaş yayınlanmadığı için bir pozisyonun maaş seviyesini görmenin en geniş kaynağıdır (pozisyon başına binlerce, bazen yüz binden fazla kişi).

**Nasıl eşleştirilir?** Her ilan, Kariyer.net'in o ilana atadığı **standart pozisyona** bağlanır (*Standart Pozisyon* kolonu; ilan başlığından farklı olabilir). Ardından ilanın **şehri** ve istediği **deneyim** o pozisyonun kırılımlarıyla eşleştirilir.

![Maaş Analizi sayfası: gerçek çıktı](https://api.apify.com/v2/key-value-stores/oWrjJ9piYRaUiZVXX/records/ornek-maas-analizi.png)

**Maaş Analizi sayfasındaki kolonlar**

| Kolon | Anlamı |
|---|---|
| Standart Pozisyon | Maaş verisinin ait olduğu pozisyon |
| Şehir · Deneyim | İlanın şehri ve istediği deneyim |
| **Ortalama Maaş** | Pozisyonun Türkiye geneli aylık net ortalaması |
| **İlin Ortalaması** | Aynı pozisyonun **ilanın şehrindeki** ortalaması |
| **Deneyim Dilimi Ort.** | İlanın istediği en az deneyim yılının düştüğü dilimin ortalaması (0–1, 1–3, 4–6, 7–9, 10–14, 15+ yıl) |
| **Sık Paylaşılan Maaş Alt / Üst** | Adayların çoğunluğunun beklentisinin bulunduğu aralık |
| En Düşük / En Yüksek | Paylaşılan beklentilerin alt ve üst sınırı |
| Maaş Örneklemi | Hesaplamaya giren kişi sayısı |
| Maaş Sayfası · İlan Linki | Kaynak sayfalar |

**JSON'da ek kırılımlar** (tabloda değil, *All fields* ve JSON/API çıktısında). Her satırda `min`, `avg`, `max`, `sampleSize` var:

- `marketSalaryByExperience`: 6 deneyim dilimi
- `marketSalaryByEducation`: ön lisans, lisans, yüksek lisans, doktora
- `marketSalaryByCity`: verisi olan tüm iller
- `marketSalaryByWorkModel`: çalışma modeline göre
- `marketSalaryTrend`: 2018'den bugüne yıllık ortalama

**Gerçek örnek** (Maaş Analizi seviyesi, Ekim 2026): *Genel Muhasebe Elemanı, İstanbul (Avrupa), 3–10 yıl deneyim*

| | Aylık net |
|---|---|
| Ortalama maaş (Türkiye) | **60.700 ₺** |
| İstanbul ortalaması | **64.600 ₺** |
| Sık paylaşılan aralık | **54.700 – 90.000 ₺** |
| En düşük – en yüksek | 48.600 – 242.900 ₺ |
| Örneklem | 14.079 kişi |

Aynı pozisyon için JSON'dan: deneyime göre **37.300 ₺** (0–1 yıl) → **73.400 ₺** (15+ yıl); eğitime göre ön lisans **55.700 ₺**, lisans **61.800 ₺**, yüksek lisans **67.600 ₺**; yıllık ortalama 2024 **38.198 ₺** → 2025 **50.260 ₺** → 2026 **60.728 ₺**.

```json
"marketSalaryTrend": [
  { "year": 2026, "avg": 60728, "sampleSize": 14079 },
  { "year": 2025, "avg": 50260, "sampleSize": 8056 },
  { "year": 2024, "avg": 38198, "sampleSize": 4135 }
]
```

**Ne işe yarar?**

- Bir pozisyon için **teklif edeceğiniz maaşı** şehir ve deneyime göre belirlemek
- Aynı pozisyonu **iller arasında** karşılaştırmak (İstanbul / Ankara / İzmir…)
- Maaş beklentilerinin **yıllık artışını** enflasyonla kıyaslamak
- Rakiplerin açtığı ilanların **maaş seviyesini** tahmin etmek

**İlan Detayı mı, Maaş Analizi mi?** İlan Detayı seviyesi, ilan sayfasında görünen **sık paylaşılan maaş aralığını** zaten içerir ($1). Ortalama, il ve deneyim ortalaması, kırılımlar ve trend için Maaş Analizi ($3) seçin.

**Sınırlar**

- "Tecrübesiz" ilanlar 0–1 yıl dilimine eşlenir. Deneyim yılı belirsizse (ör. "Tecrübeli / Tecrübesiz") *Deneyim Dilimi Ort.* boş kalır. Deneyim aralık olarak verilmişse (ör. "3–10 yıl") **en az** yıl esas alınır.
- Bir ilde yeterli veri yoksa *İlin Ortalaması* boş kalır.
- Pozisyonun maaş sayfası yoksa ya da çok az veri varsa maaş alanları `null` olur.
- Aynı pozisyondaki ilanlar maaş sayfasını bir kez okur (7 gün önbellek), bu yüzden büyük aramalar hızlıdır.

#### Nasıl kullanılır?

1. **Anahtar kelime** girin (ör. `yazılım`, `muhasebe`, `satış`). Boş bırakırsanız tüm ilanlar gelir.
2. İsterseniz **şehir** seçin (ör. `İstanbul`, `İzmir`, `Ankara`).
3. **Veri seviyesi**ni seçin: İlan Özeti / İlan Detayı (varsayılan) / Maaş Analizi.
4. **En fazla ilan** sayısını girin ve **Start**'a basın.

İsterseniz Kariyer.net'te filtrelediğiniz bir arama sayfasının adresini **Başlangıç URL'leri**ne yapıştırabilirsiniz.

#### Girdi örneği

```json
{ "keyword": "muhasebe", "location": "İzmir", "detailLevel": "full", "maxItems": 200 }
```

#### Sık sorulanlar

- **Ne kadar sürer?** İlan Özeti: 150 ilan ≈ 20 sn. İlan Detayı ve Maaş Analizi: ilan başına ≈ 2 sn (1.000 ilan ≈ 30 dk). Varsayılan süre sınırı 60 dk (≈ 1.900 ilan); daha büyük aramalarda run seçeneklerinden Timeout'u artırın. Süre dolmadan actor düzgün biter, o ana kadarki ilanlar kaydedilir.
- **Kaç ilan çekebilirim?** Kariyer.net bir aramada en fazla 5.000 ilan gösterir. Daha fazlası için şehir bazlı aramalar yapın.
- **Ücretsiz planda?** Sınır yok. Apify'ın her ay verdiği $5 kredi ile örneğin 10.000 İlan Özeti, 5.000 İlan Detayı ya da yaklaşık 1.650 Maaş Analizi alabilirsiniz.
- **Bütçe sınırı koyabilir miyim?** Evet. Run seçeneklerinde maksimum ücret limiti koyabilirsiniz; limite gelince actor durur ve limiti aşan ilan yazılmaz.
- **Yasal mı?** Yalnızca herkese açık ilan ve maaş sayfaları okunur; giriş gerektiren, kişisel aday verisi toplanmaz. Verinin kullanımından (KVKK dahil) kullanıcı sorumludur.
- **Diğer sayfaları nasıl indiririm?** Output sekmesindeki *İlan Detayı* ve *Maaş Analizi* sayfalarından ya da Storage sekmesinden. Export düğmesi yalnız *İlan Özeti* sayfasını indirir.
- **İlan Detayı / Maaş Analizi sayfasında tek bir ℹ️ satırı var.** Seçtiğiniz veri seviyesi o sayfayı doldurmaz; satır hangi seviyeyi seçmeniz gerektiğini söyler. API'de `_info: true` ile ayıklayabilirsiniz.

***

<a id="english"></a>

### 🇬🇧 English

Scrape **Kariyer.net** (Turkey's largest job board) job listings into a clean dataset, and optionally enrich each job with **salary insights**: the position's average salary, the **average in the job's city**, the **average for the required experience band**, the most common salary range, and a yearly trend since 2018. Export as JSON, CSV, Excel or via API.

#### Data levels, output pages & pricing (pay per event)

Each level includes the previous one. Results come in up to 3 linked datasets (pages in the Output tab, joined by `jobId`):

| Level | Pages | What you get | Price per 1,000 jobs |
|---|---|---|---|
| `list` (Job summary) | Job summary | Company, title, city, district, work type & model, sector, easy apply, posted date, job URL | **$0.50** |
| `details` (Job details, default) | + **Job details** | Everything on the job page: description, position level, category, updated & closing date, experience, education, departments, military status, driving license, languages, benefits, **applicant count**, working hours, **most common salary range**, **company profile** (size, followers, sectors, founded, address, website, open jobs) | **$1** |
| `full` (Salary insights) | + **Salary insights** | Salary analysis of the position (see below) | **$3** |

💸 **Apify Bronze / Silver / Gold** subscribers get **10% / 20% / 30% off** the job summary and job details fees (salary insights add-on excluded).

#### 💰 Salary insights

**Source:** Kariyer.net's salary page for each position. Per Kariyer.net, the figures are **monthly net salary expectations** that candidates shared **when applying to private-sector jobs in the last 3 months**, updated monthly, outliers removed. They are not employer pay or salary offers; they show **what the market's candidates expect**. Kariyer.net job ads don't publish salaries, so this is the broadest salary signal per position (often thousands to 100k+ people).

**Matching:** each job is linked to Kariyer.net's **standard position**; the job's **city** and required **experience** are matched to that position's breakdowns.

| Column | Meaning |
|---|---|
| Average salary | Nationwide monthly net average for the position |
| City average | Same position, **in the job's city** |
| Experience band average | Band containing the job's minimum required years (0–1, 1–3, 4–6, 7–9, 10–14, 15+) |
| Most common range (low / high) | Where most candidates' expectations fall |
| Lowest / Highest · Sample size | Bounds and number of people |

**Extra breakdowns in JSON** (`min`, `avg`, `max`, `sampleSize` each): `marketSalaryByExperience`, `marketSalaryByEducation`, `marketSalaryByCity`, `marketSalaryByWorkModel`, `marketSalaryTrend` (yearly since 2018).

**Real example** (Oct 2026): *General Accounting Clerk, Istanbul (Europe), 3–10 yrs*. Average **60,700 TRY**, Istanbul **64,600 TRY**, common range **54,700–90,000 TRY**, 14,079 people. By experience 37,300 (0–1 yr) → 73,400 TRY (15+ yrs); yearly average 2024 38,198 → 2026 60,728 TRY.

**Limits:** experience-band average is empty when the ad has no year count ("experienced / inexperienced"); city average is empty when the city has too little data. Positions are fetched once and cached for 7 days.

![Salary insights page: real output](https://api.apify.com/v2/key-value-stores/oWrjJ9piYRaUiZVXX/records/ornek-maas-analizi.png)

#### Input

| Field | Description |
|---|---|
| `keyword` | Job title / skill / company (Turkish works best, e.g. `yazılım`) |
| `location` | City in Turkey, e.g. `İstanbul` |
| `detailLevel` | `list` · `details` · `full` |
| `maxItems` | Max jobs per run (no free-plan cap; Apify's $5 monthly credit ≈ 10,000 summaries) |
| `startUrls` | Optional Kariyer.net search or job URLs |

#### Output fields (selection)

`company`, `title`, `positionName`, `cities`, `district`, `workType`, `workModel`, `positionLevel`, `sector`, `postedAt`, `lastModifiedAt`, `validThrough`, `description`, `experience`, `education`, `languages`, `benefits`, `applicationCount`, `expectedSalaryMin`, `expectedSalaryMax`, `companyWorkerCount`, `companyWebsite`, `companyUrl`, `marketSalaryAvg`, `marketSalaryCityAvg`, `marketSalaryExperienceAvg`, `marketSalaryWeightedMin`, `marketSalaryWeightedMax`, `marketSalaryByExperience[]`, `marketSalaryByCity[]`, `marketSalaryTrend[]`, `url` … Missing values are `null`; text lists are comma-joined strings. The Export button exports the Job summary page; download the other pages from the Output tab or the Storage tab. If your data level doesn't fill a page, it holds one info row (`_info: true`).

#### Notes

- Only public job and salary pages are read; no login, no candidate personal data. You are responsible for how you use the data (incl. GDPR/KVKK).
- Kariyer.net shows at most 5,000 results per search; split large searches by city.
- Set a max charge per run to cap spending; the Actor stops cleanly at the limit.
- Speed: ~150 summary items in 20 s; details/full ≈ 2 s per job (1,000 jobs ≈ 30 min). Default timeout is 60 min (≈ 1,900 jobs); raise Timeout for bigger runs — the Actor finishes gracefully before the limit and keeps everything scraped so far.

# Actor input Schema

## `keyword` (type: `string`):

Pozisyon, beceri veya şirket adı (ör. 'yazılım', 'muhasebe'). Boş bırakırsan tüm ilanlar. / Job title, skill or company. Leave empty for all jobs.

## `location` (type: `string`):

Türkiye'de bir şehir (ör. 'İstanbul', 'İzmir', 'Ankara'). Boş = tüm Türkiye. / A city in Turkey. Empty = all of Turkey.

## `detailLevel` (type: `string`):

Her seviye bir öncekini de içerir. İlan Özeti: temel ilan bilgileri (en ucuz). İlan Detayı: + açıklama, deneyim, eğitim, başvuru sayısı, şirket profili. Maaş Analizi: + pozisyonun piyasa maaşı, ilin ve deneyim seviyesinin ortalaması, kırılımlar. / Each level includes the previous one. Job summary: basic fields. Job details: + description, requirements, company profile. Salary insights: + market salary.

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

Toplam kaç ilan toplansın. / Maximum number of jobs to save.

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

Opsiyonel: Kariyer.net arama ya da ilan sayfası URL'leri (ör. https://www.kariyer.net/is-ilanlari/ankara?kw=muhasebe). Doluysa anahtar kelime/şehir yok sayılır. / Optional Kariyer.net search or job URLs; overrides keyword/city.

## Actor input object example

```json
{
  "keyword": "yazılım",
  "detailLevel": "details",
  "maxItems": 20
}
```

# Actor output Schema

## `liste` (type: `string`):

No description

## `detayli` (type: `string`):

No description

## `maas` (type: `string`):

No description

# 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 = {
    "keyword": "yazılım",
    "detailLevel": "details",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("berkify/kariyer-net-is-ilanlari-maas").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 = {
    "keyword": "yazılım",
    "detailLevel": "details",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("berkify/kariyer-net-is-ilanlari-maas").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keyword": "yazılım",
  "detailLevel": "details",
  "maxItems": 20
}' |
apify call berkify/kariyer-net-is-ilanlari-maas --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,berkify/kariyer-net-is-ilanlari-maas"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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