# Kariyer.net Scraper — Turkey Job Listings (`bovi/kariyer-net-scraper`) Actor

Scrapes structured job listing data from Kariyer.net search results.

- **URL**: https://apify.com/bovi/kariyer-net-scraper.md
- **Developed by:** [Vitalii Bondarev](https://apify.com/bovi) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 94.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 job listings

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?

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

### Kariyer.net Job Listings Scraper

Extract structured job listings from Kariyer.net, Turkey's largest job board, by keyword and page.
This actor is built for recruiters, staffing agencies, market researchers and job-board aggregators
who need fresh, structured Turkish job-market data without maintaining their own scraper. It reads
Kariyer.net's server-rendered search-result cards — no login, no CAPTCHA-solving required on your end.

#### Features

- Search Kariyer.net by any keyword or phrase (job title, skill, company)
- Paginate across multiple result pages in a single run
- Returns up to 40 structured fields per listing: title, company, location, sector, employment type,
  work model, sponsorship flag, publish/closing dates, company/sector/city/country IDs, job code, and more
- Deduplication signal (`contentHash`, `isRepost`) so you can filter re-posted listings
- Built-in Turkish residential proxy by default — works out of the box, zero manual proxy setup
- Pay-per-result pricing — you only pay for listings actually delivered

#### How to use

1. Click **Start**, or open the actor's page and hit **Try for free**.
2. Enter a `searchQuery` (e.g. `"yazilim"`, `"muhasebe"`, `"satis"`) — defaults to `"developer"`.
3. Set `maxResults` and `pagesToFetch` if you need more than the default sample.
4. Run. Results stream into the dataset as they're scraped — no waiting for the full run to finish
   before you can start exporting.
5. Export the dataset as JSON/CSV/Excel, or pull it via the Apify API into your own pipeline.

#### Input & Output example

**Input:**

```json
{
  "searchQuery": "yazilim",
  "maxResults": 20,
  "pagesToFetch": 1
}
```

**Output (one record):**

```json
{
  "id": "4502622",
  "title": "Çağrı Merkezi Müşteri Temsilcisi",
  "company": "N2mobil Takip Sistemleri A.Ş",
  "location": "Ankara",
  "workModel": "İş Yerinde",
  "employmentType": "Tam zamanlı",
  "isSponsored": true,
  "publishDateISO": "2026-07-17",
  "url": "https://www.kariyer.net/is-ilani/...",
  "source": "kariyer.net"
}
```

Each delivered job can contain the following fields: `id`, `url`, `title`, `company`, `companyWebsite`,
`location`, `district`, `workModel`, `employmentType`, `positionLevel`, `experienceLevel`,
`departmentName`, `applicationCount`, `sectorName`, `companySize`, `companyIndustry`, `countryName`,
`isSponsored`, `jobDateStatus`, `publishDate`, `publishDateISO`, `closingDate`, `salaryMin`, `salaryMax`,
`salaryCurrency`, `salaryPeriod`, `benefits`, `descriptionHtml`, `descriptionText`, `descriptionMarkdown`,
`contentHash`, `isRepost`, `originalPublishDate`, `originalUrl`, `source`, `scrapedAt`, `companyId`,
`sectorId`, `cityId`, `countryId`, `jobCode`. Fields unavailable from the listing pages are returned as
`null` — the actor does not perform detail-page enrichment, so description/salary/benefit fields are
populated only when Kariyer.net exposes them directly on the listing card.

#### Pricing

This actor uses pay-per-event (PPE) billing. One `job-listing` event is charged per delivered job at
USD 0.0018. Scraping 1,000 job listings costs approximately **$1.80**. There is also a negligible
Actor-Start event (~$0.00005) charged once per run. You only pay for what's actually delivered — a run
that returns 0 results costs nothing beyond the start fee.

#### FAQ / Disclaimers

- **Does this need my own proxy?** No — a Turkish residential proxy is wired in by default; you can
  override it via the `proxyConfiguration` input if you have your own Apify Proxy setup.
- **Does it log in to Kariyer.net?** No — it reads only publicly available search-result pages.
- **Detail-page fields (full description, salary) are missing — why?** This actor intentionally scrapes
  only the search-result listing cards for speed and cost efficiency; fields that only exist on the
  individual job-detail page come back as `null`.
- **Found a bug or need a custom variant (detail-page enrichment, other countries)?** Open an issue on
  the actor's Issues tab.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword to search for.

## `maxResults` (type: `integer`):

Maximum number of results to collect.

## `pagesToFetch` (type: `integer`):

Number of result pages to fetch.

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

Proxy settings for requests.

## Actor input object example

```json
{
  "searchQuery": "developer",
  "maxResults": 20,
  "pagesToFetch": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset with the scraped records.

# 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 = {
    "searchQuery": "developer",
    "maxResults": 20,
    "pagesToFetch": 1,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/kariyer-net-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 = {
    "searchQuery": "developer",
    "maxResults": 20,
    "pagesToFetch": 1,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("bovi/kariyer-net-scraper").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 '{
  "searchQuery": "developer",
  "maxResults": 20,
  "pagesToFetch": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call bovi/kariyer-net-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/6CBe2jbUhdOyXwcpZ/builds/XCoaSjz2EkBz8zVoE/openapi.json
