# Trabajando.cl Jobs Scraper - Chile Job Listings (`normdata/trabajando-scraper`) Actor

Scrape Trabajando.cl, a top Chile job board: title, company, schedule, comuna, region, map position and date. Add salary, applicants, views, experience, education, description, requirements, skills and screening questions. 15 filters, links and only new jobs. No proxy needed.

- **URL**: https://apify.com/normdata/trabajando-scraper.md
- **Developed by:** [Norm Data](https://apify.com/normdata) (community)
- **Categories:** Jobs
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 job saveds

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

![Norm Data](https://raw.githubusercontent.com/FabriAV/normdata/refs/heads/main/assets/banner_norm2.png)

## 💼 Trabajando.cl Jobs Scraper - Chile Job Listings

Extract job listings from **Trabajando.cl**, one of Chile's largest job boards, with about 11,000 open jobs across every region. For each job you get the **title, company, work schedule, comuna, region, map position, short summary, publication date, and the featured, inclusive and confidential flags**. Turn on **job details** to also get the **position type, vacancies, published salary, years of experience and education asked for, full description and requirements, address, number of applicants and views, easy apply, the employer's own apply link, careers, preferred universities, languages, skills, screening questions and closing date**. Search with **15 filters** or paste links, and run it on a schedule to get **only new jobs**.

> 👉 **Try it now:** press **Start**. The ready-made input gives you 10 job saveds in a few seconds.<br>
> 💰 **$0.012 per job saved** on the Free plan (10 job saveds per run), from $0.011 on paid plans. [See pricing](#-pricing)

### ✨ Why this scraper?

> - **Fast**<br>
>   1,000 jobs in about 3 seconds, or about 75 seconds with job details.
>
> - **Applicant numbers**<br>
>   How many people applied and how many times each job was viewed, to spot the jobs with the least competition.
>
> - **What employers really ask**<br>
>   Experience, education, study status, careers, universities, languages with levels, skills and the screening questions applicants must answer.
>
> - **Clean, typed data**<br>
>   Salaries, vacancies, years and counts are numbers. Dates are ISO. Schedules, position types and education levels are in English.
>
> - **Respects hidden employers**<br>
>   When a company hides its name, its name and company links stay empty.
>
> - **Nothing to set up**<br>
>   No proxy, no login.
>
> - **Apify platform**<br>
>   Schedule runs, get only new job saveds, export to Excel or CSV, use the API, or connect Google Sheets, Zapier and Make.

### ⚖️ How it compares

| | **This Actor** | [rainminer/trabajando-cl-scraper](https://apify.com/rainminer/trabajando-cl-scraper) | [fabrikit/trabajando-cl-jobs-scraper](https://apify.com/fabrikit/trabajando-cl-jobs-scraper) |
| --- | --- | --- | --- |
| Search without links | ✅ keyword and 15 filters | ❌ links only | ✅ keyword, location, area, schedule |
| Region, salary, experience, education, career and date filters | ✅ | ❌ | ❌ |
| Links: job, search and company pages | ✅ | Job and search | ❌ |
| Applicants and views per job | ✅ | ❌ | ❌ |
| Screening questions, languages, universities | ✅ | ❌ | ❌ |
| Only new jobs (monitoring) | ✅ | ❌ | ❌ |

Checked on the Apify Store in October 2026.

### 🚀 How to scrape Trabajando.cl Jobs

1. Create a free Apify account.
2. Pick the filters you need, or keep the ready-made input.
3. Click **Start**.
4. Download the job saveds as Excel, CSV or JSON from the **Output** tab.

### 💰 Pricing

#### How much does it cost to scrape Trabajando.cl Jobs?

You pay a one-time **$0.003** per run, plus a price for each job saved saved (and for each add-on you turn on):

| Charged for | Free | Bronze | Silver | Gold+ |
| --- | --- | --- | --- | --- |
| **Job saved**: One Trabajando.cl job saved to your dataset. | 0.012 | 0.011 | 0.0105 | 0.01 |
| **Job details**: Salary, applicants, views, full description, requirements and more for one job. | 0.004 | 0.0035 | 0.003 | 0.0025 |

Example: 1,000 job saveds cost about **$11** on Bronze. No proxy or compute costs on top.

### 📦 What data you get

| Field | Description |
| --- | --- |
| `companyLogoUrl` | Company logo (empty for the site's generic logo). |
| `title` | Job title. |
| `company` | Employer name (empty when the employer hides it). |
| `positionType` | *(Job details)* Kind of position, like "Analyst" or "Technician". |
| `area` | *(Job details)* Job area on the site, like "Ventas" (most jobs say "Otra Área"). |
| `schedule` | Work schedule: Full time, Part time, Hybrid, Remote, Shifts, Field work, Internship and more. |
| `vacancies` | *(Job details)* Number of openings. |
| `salary`, `salaryCurrency` | *(Job details)* Monthly salary in CLP, only when the employer shows it. |
| `minExperienceYears`, `maxExperienceYears` | *(Job details)* Years of experience asked for (0 = no experience needed). |
| `educationLevel` | *(Job details)* Level of study asked for, like "University degree". |
| `academicStatus` | *(Job details)* Whether the degree must be finished: Graduated, Finished studies, Studying, About to graduate or Any. |
| `location`, `comuna`, `region` | Comuna and region, as shown on the job. |
| `address`, `postalCode` | *(Job details)* Address of the job, and its postal code. |
| `latitude`, `longitude` | Map position of the job (more often filled with job details). |
| `summary` | First words of the description, as shown in the search results. |
| `description`, `requirements` | *(Job details)* Full description and requirements, as plain text. |
| `applicants`, `views` | *(Job details)* How many people have applied, and how many times the job was viewed. |
| `companyId` | *(Job details)* Trabajando.cl company number (empty for hidden employers). |
| `id` | Trabajando.cl job number. |
| `confidential` | The employer hides its name. |
| `featured` | Promoted job (paid by the employer). Empty for job links. |
| `inclusive` | Marked as inclusive employment. |
| `easyApply` | *(Job details)* You can apply with just a CV file ("Postula Fácil"). |
| `url` | Link to the job. |
| `companyJobsUrl` | *(Job details)* Page with all of the company's jobs. |
| `externalApplyUrl` | *(Job details)* Employer's own application page, when it uses one. |
| `careers` | *(Job details)* Degrees the employer asks for. |
| `institutions` | *(Job details)* Universities and institutes the employer prefers. |
| `languages` | *(Job details)* Languages and levels, like "English (writing advanced, speaking advanced, reading advanced)". |
| `skills` | *(Job details)* Skills asked for. |
| `screeningQuestions` | *(Job details)* Questions applicants must answer. |
| `postedAt` | When the job was published. |
| `expiresAt` | *(Job details)* Last day to apply. |
| `scrapedAt` | When this row was saved. |
| `error` | Only present when a row failed. The fields that loaded are still there. |

Fields marked *Job details* only appear when that add-on is on.

#### Example row (trimmed)

```json
{
  "companyLogoUrl": "https://staticcdn.trabajando.cl/company/12229/logo.png",
  "title": "Encargado(a) Técnico(a) Depto Sonido",
  "company": "UChile - Facultad Artes",
  "positionType": "Person in charge",
  "area": "Otra Área",
  "schedule": "Full time",
  "vacancies": 1,
  "salary": 1000000,
  "salaryCurrency": "CLP",
  "minExperienceYears": 5,
  "educationLevel": "University degree",
  "academicStatus": "Graduated",
  "location": "Santiago, Metropolitana de Santiago",
  "comuna": "Santiago",
  "region": "Metropolitana de Santiago",
  "address": "Compañía de Jesús 1264, Santiago, Chile",
  "postalCode": "8320000",
  "latitude": -33.438996,
  "longitude": -70.65474,
  "summary": "En la Facultad de Artes de la Universidad…",
  "description": "En la Facultad de Artes de la Universidad de Chile, nos encontramos en la búsqueda de un Encargado(a) Técnico(a) en Sonido quien debe velar por el óptimo funcionamiento del ...",
  "requirements": "Artículo 12° del Estatuto Administrativo Ley N°18.834:\na) Ser ciudadano(a), o ser extranjero/a poseedor/a de un permiso de residencia definitiva;\nb) Haber cumplido con la ley de ...",
  "applicants": 0,
  "views": 216,
  "companyId": "12229",
  "id": "6137691",
  "confidential": false,
  "featured": false,
  "inclusive": true,
  "easyApply": true,
  "url": "https://www.trabajando.cl/trabajo/6137691-encargado-a-tecnico-a-depto-sonido",
  "companyJobsUrl": "https://www.trabajando.cl/trabajos-uchile-facultad-artes-12229",
  "careers": ["Ingeniería en Sonido"],
  "institutions": ["IP AIEP", "Otra Institución", "IP de Chile ( IPCHILE )"],
  "skills": ["Buen Trabajo en Equipo", "Orientación Al Cliente", "Orientación a La Excelencia"],
  "screeningQuestions": [
    "Indique su formación profesional y el año en que obtuvo su titulación",
    "Detalle su experiencia como Ingeniero en Sonido, lugar de desempeño y periodo trabajado.",
    "Indique su expectativa de renta líquida mensual"
  ],
  "postedAt": "2026-10-16T15:43",
  "expiresAt": "2026-10-23",
  "scrapedAt": "2026-10-18T15:44:59.072Z"
}
```

### ⚙️ Input

| Section | What it's for |
| --- | --- |
| **Maximum results** | Always first, caps the whole run. Empty means no limit. |
| **What to scrape** | Keyword, sort by and job details (salary, applicants, full description, requirements). |
| **Filters** | Regions, comunas or cities, work schedule, position type, careers, education level, minimum salary (CLP a month), maximum salary (CLP a month), minimum years of experience, maximum years of experience, posted since, only inclusive jobs, only easy apply, skip confidential employers and only with a salary. |
| **Monitoring** | Only new jobs and monitor name. |
| **Links** | Links instead of the fields above. Filters are ignored with links. |

#### Input examples

**Engineering jobs in Antofagasta, newest first, with details:**

```json
{
  "keyword": "ingeniero",
  "regions": ["3"],
  "sortBy": "newest",
  "includeDetails": true,
  "maxItems": 200
}
```

**Remote and hybrid jobs for analysts:**

```json
{
  "schedules": ["9", "11"],
  "positionTypes": ["Analista"]
}
```

**Jobs for people with no experience in Santiago comunas:**

```json
{
  "maxExperienceYears": 0,
  "locations": ["Santiago", "Providencia", "Las Condes"]
}
```

**Jobs that show their salary, over 1,500,000 CLP:**

```json
{
  "onlyWithSalary": true,
  "minSalary": 1500000
}
```

**New jobs every day (schedule this run):**

```json
{
  "sortBy": "newest",
  "onlyNew": true,
  "monitorName": "daily-jobs"
}
```

**Links (filters are not used):**

```json
{
  "startUrls": [
    { "url": "https://www.trabajando.cl/trabajo-empleo/vendedor?region=3" },
    { "url": "https://www.trabajando.cl/trabajos-sodexo-1454" },
    { "url": "https://www.trabajando.cl/trabajo/6137846-asistente-contable" }
  ],
  "includeDetails": true
}
```

### 🔗 Related scrapers

> - [Catho Jobs Scraper](https://apify.com/normdata/catho-scraper)
> - [OCC Mundial Jobs Scraper](https://apify.com/normdata/occ-scraper)
> - [Swiss Jobs Scraper (Job-Room / arbeit.swiss)](https://apify.com/normdata/jobroom-scraper)
> - [Knasta Scraper](https://apify.com/normdata/knasta-scraper): Chile & Peru Price Tracker & Real Deals.

### ❓ FAQ and troubleshooting

#### Is there a Trabajando.cl Jobs API? Do I need an API key?

> Trabajando.cl Jobs has no public data API for this. This Actor works as a Trabajando.cl Jobs API alternative: it reads the public pages and gives you clean JSON, CSV or Excel, with no API key, no login and no code to maintain. You can also call it from your own code with the Apify API, or from an AI agent through MCP.

#### Why do I get only 10 job saveds?

> On the Apify free plan each run saves up to 10 results, so you can try it before paying. Any paid plan removes the limit.

#### How many jobs are there?

> About 11,000 open jobs as of October 2026.

#### Can I get the employer of a confidential job?

> No. When the employer hides its name, this Actor leaves the name and company links empty.

#### Can I pick several schedules, position types or comunas?

> Yes. The site searches one of each at a time, so the Actor runs one search per value and removes duplicates.

#### Few or no results

> Comunas and careers are matched by name: check the spelling (accents don't matter for comunas), or loosen a filter. A career no open job asks for is skipped with a warning that lists careers that do have jobs.

#### Salary is empty on most jobs

> Most employers don't publish it. The salary filters still use the salary the employer gave the site, so they also find jobs that don't show it. To keep only jobs that show one, tick **Only with a salary**.

#### Is this an official Trabajando.cl Jobs tool?

> No. It is independent and not affiliated with Trabajando.cl Jobs. It reads only data Trabajando.cl Jobs publishes on its public pages, at a moderate pace. Use the data in line with Trabajando.cl Jobs's terms and the laws that apply to you.

### 📧 Contact

Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com

# Actor input Schema

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

Stop after this many jobs in total. Leave empty for no limit. The Apify Free plan is always capped at 10.

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

Words to search for in job titles, companies and descriptions, like "vendedor", "ingeniero civil" or "Sodexo". Empty = every job.

## `sortBy` (type: `string`):

The order the site lists them in. Empty = most relevant.

## `includeDetails` (type: `boolean`):

Also read each job for the position type, area, vacancies, published salary, experience and education asked for, full description and requirements, address, number of applicants and views, easy apply, the external apply link, careers, universities, languages, skills and screening questions, and the closing date. Charged per job as an add-on.

## `regions` (type: `array`):

Keep only jobs in these regions of Chile.

## `locations` (type: `array`):

Only jobs in these places, like "Las Condes", "Providencia" or "Concepción". Empty = all of Chile.

## `schedules` (type: `array`):

Keep only these schedules.

## `positionTypes` (type: `array`):

Keep only these kinds of position, as the employer classed the job.

## `careers` (type: `array`):

Only jobs asking for these degrees, in the site's Spanish names, like "Ingeniería Comercial", "Contador Auditor" or "Psicología".

## `educationLevels` (type: `array`):

Keep only jobs asking for these levels of study.

## `minSalary` (type: `integer`):

Uses the salary the employer gave the site, even when the job does not show it.

## `maxSalary` (type: `integer`):

Uses the salary the employer gave the site, even when the job does not show it.

## `minExperienceYears` (type: `integer`):

Keep only jobs asking for at least this much experience.

## `maxExperienceYears` (type: `integer`):

Keep only jobs asking for at most this much. 0 = jobs for people with no experience.

## `postedSince` (type: `string`):

Keep only jobs published on or after this date, like 2026-10-01 or "7 days".

## `onlyInclusive` (type: `boolean`):

Keep only jobs the employer marks as inclusive employment (open to people with disabilities).

## `onlyEasyApply` (type: `boolean`):

Keep only jobs you can apply to with just a CV file ("Postula Fácil").

## `skipConfidential` (type: `boolean`):

Leave out jobs whose employer hides its name.

## `onlyWithSalary` (type: `boolean`):

Keep only jobs that show their salary. Turns on job details.

## `onlyNew` (type: `boolean`):

Skip jobs saved by earlier runs with the same monitor name.

## `monitorName` (type: `string`):

Runs with the same name share their history. Use a different name for each schedule.

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

Job pages (https://www.trabajando.cl/trabajo/6137846-asistente-contable), searches copied from the site (https://www.trabajando.cl/trabajo-empleo/vendedor?region=3) or company pages (https://www.trabajando.cl/trabajos-sodexo-1454).

## Actor input object example

```json
{
  "maxItems": 10,
  "keyword": "ingeniero"
}
```

# Actor output Schema

## `results` (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 = {
    "maxItems": 10,
    "keyword": "ingeniero"
};

// Run the Actor and wait for it to finish
const run = await client.actor("normdata/trabajando-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 = {
    "maxItems": 10,
    "keyword": "ingeniero",
}

# Run the Actor and wait for it to finish
run = client.actor("normdata/trabajando-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 '{
  "maxItems": 10,
  "keyword": "ingeniero"
}' |
apify call normdata/trabajando-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,normdata/trabajando-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/yB9uu7vb0kfUkLF8a/builds/xwthDLbDTpxdehzN2/openapi.json
