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

### 🎯 Who uses it?

#### 🧑‍💼 Recruiters and staffing agencies

See which companies are hiring, for what roles, in which comunas, and how many people already applied.

#### 📊 Labor market analysts and researchers

Measure hiring by region, schedule, position type, education and experience, with salaries where employers publish them.

#### 🤝 B2B sales teams

Companies opening many jobs are growing. Find them by region or role and reach out with the right offer.

#### 🔔 Job seekers and job boards

Get a daily feed of new jobs that match your keyword and filters, or feed a niche board.

### ✨ What it does

- **Search like on the site.** Keyword, most relevant, newest or oldest first.
- **15 filters.** Region, comuna or city, work schedule, position type, career, education level, salary range, years of experience, posted since, and only inclusive, only easy apply, skip confidential employers, or only jobs with a salary.
- **Job details add-on:** reads each job for the salary, applicants, views, full description, requirements, skills, languages, screening questions and more.
- **Or paste links.** Job pages, searches copied from the site (with their filters and page) and company pages. Filters are not used with links.
- **Monitoring:** run it on a schedule with **Only new jobs**, and each run saves only the jobs you haven't received yet.

### 🏆 Why this scraper

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

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

### 📦 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"
}
```

### 💡 Use cases

**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
}
```

### ⚙️ How the input is organised

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

### 💰 Pricing

Pay-per-event: a one-time **$0.003** when the run starts, plus a price per job saved to your dataset. The price depends on your Apify plan tier:

| Your Apify plan | Price per job |
| --- | --- |
| Free | $0.012 |
| Bronze | $0.011 |
| Silver | $0.0105 |
| Gold / Platinum / Diamond | $0.010 |

Approximate total cost:

| Jobs collected | Free | Bronze | Silver | Gold+ |
| --- | --- | --- | --- | --- |
| 100 | $1.20 | $1.10 | $1.05 | $1.00 |
| 1,000 | $12.00 | $11.00 | $10.50 | $10.00 |
| 10,000 | $120.00 | $110.00 | $105.00 | $100.00 |

**Job details add-on:** when **Job details** is on (or **Only with a salary** turns it on), each job whose details were read adds one more charge:

| Your Apify plan | Job details, per job |
| --- | --- |
| Free | $0.004 |
| Bronze | $0.0035 |
| Silver | $0.003 |
| Gold / Platinum / Diamond | $0.0025 |

Jobs whose details could not be read pay only the base price, and jobs left out by filters are free. New Apify accounts start with $5 in free credit. On the Free plan, a run saves up to 10 jobs.

### 🚀 Run it

1. Create a free Apify account with $5 in credit.
2. Open the Trabajando.cl Jobs Scraper.
3. Type a keyword, add filters (or keep it empty for every job), then click **Start**.
4. Export the results as CSV, Excel, JSON or XML from the Dataset tab.

### 🤖 Use with AI agents (MCP)

Connect the [Apify MCP server](https://mcp.apify.com) to Claude, ChatGPT, Cursor or any MCP client, then ask in plain words, for example: *"Get every remote developer job on Trabajando.cl posted this week, with salary and applicants"*. The agent runs this Actor and reads the results.

### 🔧 Troubleshooting

- **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**.
- **Area says "Otra Área".** That is what most employers pick on the site. Use the position type or keyword instead.
- **Featured is empty.** Job links have no search card, so that flag is unknown for them.

### ❓ FAQ

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

**Do I need a proxy?** No.

### 🛡️ Limits & responsible use

This Actor collects job listings that Trabajando.cl publishes on its website. It reads only pages the site's robots.txt allows and keeps a moderate pace. Use the data in line with the site's terms and Chilean law. It collects no data about applicants, only how many there are.

### 📧 Contact

Questions, bugs or a field you need: norm.data.scrapers@gmail.com

### 🧪 Local development

```bash
bun install
bun scripts/gen-schemas.mjs
sh test/run.sh first '{"maxItems":10}'
```

# 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/wCaQfcPKbcOjWi0cb/openapi.json
