# Kariyer (`jesting_bureau/kariyer`) Actor

Scrapes internship listings from Kariyer.net, Türkiye’s leading job platform. Extracts job titles, companies, locations, application links, and detailed descriptions for internships in Istanbul. Fully configurable with support for rate limiting and up to 1000 results.

- **URL**: https://apify.com/jesting\_bureau/kariyer.md
- **Developed by:** [Enes Halit](https://apify.com/jesting_bureau) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 16 total users, 0 monthly users, 92.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Internship Scraper

This Apify actor scrapes internship listings from Kariyer.net, Turkey's leading job portal. It extracts detailed information about internship opportunities in Istanbul, including job descriptions, company details, and application links.

### Features

- Scrapes internship listings from Kariyer.net
- Extracts detailed job descriptions from individual job pages
- Configurable scraping parameters
- Respectful scraping with configurable delays
- Structured output in Apify dataset format

### Input Parameters

- **Maximum results** (optional): Maximum number of internship listings to scrape (default: 100, max: 1000)
- **Include job descriptions** (optional): Whether to fetch detailed descriptions from individual pages (default: true)
- **Delay between requests** (optional): Delay in seconds between HTTP requests (default: 1 second)

### Output

The actor outputs structured data for each internship listing:

```json
{
  "title": "Software Development Intern",
  "company": "Tech Company Ltd",
  "location": "Istanbul",
  "application_url": "https://www.kariyer.net/is-ilani/...",
  "employment_type": "Stajyer",
  "description": "Detailed job description...",
  "source": "kariyer.net",
  "posted_date": "2025-07-02T10:30:00"
}
````

### Usage

#### Running on Apify Platform

1. Go to [Apify Console](https://console.apify.com)
2. Create a new actor or import this one
3. Configure input parameters as needed
4. Run the actor
5. Download results from the dataset

#### Local Development

```bash
## Install dependencies
pip install -r requirements.txt

## Run locally
python main.py
```

### Data Fields

- **title**: Job title/position name
- **company**: Company name offering the internship
- **location**: Job location (filtered for Istanbul)
- **application\_url**: Direct link to apply for the position
- **employment\_type**: Type of employment (usually "Stajyer" for internships)
- **description**: Detailed job description and requirements
- **source**: Source website (always "kariyer.net")
- **posted\_date**: When the data was scraped

### Technical Details

- Built with Python 3.11
- Uses aiohttp for async HTTP requests
- BeautifulSoup for HTML parsing
- Apify SDK for platform integration
- Respectful scraping with delays between requests

### Rate Limiting

The actor includes built-in rate limiting to be respectful to Kariyer.net's servers. Default delay is 1 second between requests, which can be configured via input parameters.

### Legal Notice

This actor is for educational and research purposes. Please respect Kariyer.net's terms of service and robots.txt when using this scraper. Consider implementing additional rate limiting for production use.

# Actor input Schema

## `startUrl` (type: `string`):

Custom URL to scrape from Kariyer.net. If provided, this will override all other URL parameters below.

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

Maximum number of internship listings to scrape

## `cityCodes` (type: `string`):

Comma-separated city codes for filtering locations (e.g., '34,82' for Istanbul Avrupa and Asya, '6' for Ankara, '35' for İzmir). Ignored if Custom Start URL is provided.

## `jobType` (type: `string`):

Type of job to search for in the URL (e.g., 'stajyer' for internships, 'yazilim' for software jobs). Ignored if Custom Start URL is provided.

## `postingTime` (type: `string`):

Time filter for job postings. Ignored if Custom Start URL is provided.

## `lpstValue` (type: `string`):

LPST parameter value for the URL (usually matches the number in posting time). Ignored if Custom Start URL is provided.

## `searchKeyword` (type: `string`):

Keyword to search for internship positions (optional). Ignored if Custom Start URL is provided.

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

City or location to search for internships (e.g., Istanbul, Ankara, İzmir). Ignored if Custom Start URL is provided.

## `includeDescription` (type: `boolean`):

Whether to fetch detailed job descriptions from individual pages

## `delayBetweenRequests` (type: `integer`):

Delay in seconds between HTTP requests to be respectful to the server

## `useProxy` (type: `boolean`):

Enable Apify proxy rotation to avoid IP blocking and 403 errors

## `proxyGroups` (type: `array`):

Apify proxy groups to use (RESIDENTIAL, DATACENTER, etc.)

## `proxyCountryCode` (type: `string`):

Country code for proxy geolocation (TR for Turkey recommended)

## `customProxyUrls` (type: `array`):

Custom proxy URLs if not using Apify Proxy

## `outputFormat` (type: `string`):

Format for the output data

## `maxRetries` (type: `integer`):

Maximum number of retries for failed requests

## `debugMode` (type: `boolean`):

Enable detailed logging for debugging purposes

## Actor input object example

```json
{
  "startUrl": "https://www.kariyer.net/is-ilanlari/istanbul-stajyer?ct=34,82&lpst=8&date=8s",
  "maxResults": 100,
  "cityCodes": "34,82",
  "jobType": "stajyer",
  "postingTime": "8s",
  "lpstValue": "8",
  "searchKeyword": "",
  "location": "",
  "includeDescription": true,
  "delayBetweenRequests": 2,
  "useProxy": true,
  "proxyGroups": [
    "RESIDENTIAL"
  ],
  "proxyCountryCode": "TR",
  "customProxyUrls": [],
  "outputFormat": "json",
  "maxRetries": 3,
  "debugMode": false
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("jesting_bureau/kariyer").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("jesting_bureau/kariyer").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 '{}' |
apify call jesting_bureau/kariyer --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kariyer",
        "description": "Scrapes internship listings from Kariyer.net, Türkiye’s leading job platform. Extracts job titles, companies, locations, application links, and detailed descriptions for internships in Istanbul. Fully configurable with support for rate limiting and up to 1000 results.",
        "version": "0.0",
        "x-build-id": "QP6yKdIRfHOycOFXW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jesting_bureau~kariyer/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jesting_bureau-kariyer",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/jesting_bureau~kariyer/runs": {
            "post": {
                "operationId": "runs-sync-jesting_bureau-kariyer",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/jesting_bureau~kariyer/run-sync": {
            "post": {
                "operationId": "run-sync-jesting_bureau-kariyer",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrl": {
                        "title": "Custom Start URL",
                        "type": "string",
                        "description": "Custom URL to scrape from Kariyer.net. If provided, this will override all other URL parameters below.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of internship listings to scrape",
                        "default": 100
                    },
                    "cityCodes": {
                        "title": "City Codes",
                        "type": "string",
                        "description": "Comma-separated city codes for filtering locations (e.g., '34,82' for Istanbul Avrupa and Asya, '6' for Ankara, '35' for İzmir). Ignored if Custom Start URL is provided.",
                        "default": "34,82"
                    },
                    "jobType": {
                        "title": "Job Type",
                        "type": "string",
                        "description": "Type of job to search for in the URL (e.g., 'stajyer' for internships, 'yazilim' for software jobs). Ignored if Custom Start URL is provided.",
                        "default": "stajyer"
                    },
                    "postingTime": {
                        "title": "Posting Time Filter",
                        "enum": [
                            "1s",
                            "3s",
                            "8s",
                            "1d",
                            "3d",
                            "7d",
                            "14d",
                            "30d"
                        ],
                        "type": "string",
                        "description": "Time filter for job postings. Ignored if Custom Start URL is provided.",
                        "default": "8s"
                    },
                    "lpstValue": {
                        "title": "LPST Value",
                        "type": "string",
                        "description": "LPST parameter value for the URL (usually matches the number in posting time). Ignored if Custom Start URL is provided.",
                        "default": "8"
                    },
                    "searchKeyword": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "Keyword to search for internship positions (optional). Ignored if Custom Start URL is provided.",
                        "default": ""
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or location to search for internships (e.g., Istanbul, Ankara, İzmir). Ignored if Custom Start URL is provided.",
                        "default": ""
                    },
                    "includeDescription": {
                        "title": "Include job descriptions",
                        "type": "boolean",
                        "description": "Whether to fetch detailed job descriptions from individual pages",
                        "default": true
                    },
                    "delayBetweenRequests": {
                        "title": "Delay between requests (seconds)",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Delay in seconds between HTTP requests to be respectful to the server",
                        "default": 2
                    },
                    "useProxy": {
                        "title": "Use Apify Proxy",
                        "type": "boolean",
                        "description": "Enable Apify proxy rotation to avoid IP blocking and 403 errors",
                        "default": true
                    },
                    "proxyGroups": {
                        "title": "Proxy Groups",
                        "type": "array",
                        "description": "Apify proxy groups to use (RESIDENTIAL, DATACENTER, etc.)",
                        "default": [
                            "RESIDENTIAL"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyCountryCode": {
                        "title": "Proxy Country Code",
                        "type": "string",
                        "description": "Country code for proxy geolocation (TR for Turkey recommended)",
                        "default": "TR"
                    },
                    "customProxyUrls": {
                        "title": "Custom Proxy URLs",
                        "type": "array",
                        "description": "Custom proxy URLs if not using Apify Proxy",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "outputFormat": {
                        "title": "Output format",
                        "enum": [
                            "json",
                            "csv",
                            "xlsx"
                        ],
                        "type": "string",
                        "description": "Format for the output data",
                        "default": "json"
                    },
                    "maxRetries": {
                        "title": "Maximum retries",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum number of retries for failed requests",
                        "default": 3
                    },
                    "debugMode": {
                        "title": "Debug mode",
                        "type": "boolean",
                        "description": "Enable detailed logging for debugging purposes",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
