# Computrabajo Scraper - LatAm Jobs (MX, CO, AR, PE, CL...) (`rjmacarthy/computrabajo-scraper`) Actor

Scrape job listings from Computrabajo in 17 Latin American countries (Mexico, Colombia, Argentina, Peru, Chile...): parsed salary, ISO dates, remote/hybrid, company rating, optional full details and an only-new-jobs mode. No login, no start fee.

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

## Pricing

from $1.50 / 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.

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

## Computrabajo Scraper - Latin America Jobs (MX, CO, AR, PE, CL, EC...)

Scrape job listings from **Computrabajo**, the largest job board in Spanish-speaking Latin America, in **17 countries in one run**: Mexico, Colombia, Argentina, Peru, Chile, Ecuador, Venezuela, Guatemala, Costa Rica, Dominican Republic, Uruguay, Paraguay, Bolivia, Honduras, El Salvador, Nicaragua and Panama. Every job comes with a **parsed salary** (min, max, ISO currency, period, commission flag), an **ISO posting date** (from "Hace 2 horas", "Ayer", "27 de octubre"), **work mode** (remote / hybrid / on-site), company rating and urgent/featured badges. Turn on **job details** for the full description, contract type, schedule, education, years of experience, languages and skills. **Only-new-jobs mode** turns it into a daily job-alert feed. No login, no browser, **no start fee**: you pay per job.

### What data can you get?

| Field | Example | Notes |
|---|---|---|
| `title`, `url`, `id` | Auxiliar contable | `id` = `{country}:{offerId}`, stable across runs |
| `companyName`, `companyUrl` | CHARDON GROUP | Confidential employers show Computrabajo's label ("Importante empresa del sector") and no URL |
| `companyRating`, `companyVerified` | 4.4, true | Employee rating shown on the listing, when the company has one |
| `location`, `city`, `state`, `country`, `countryName` | Huimilpan, Querétaro | |
| `salaryText`, `salaryMin`, `salaryMax` | $ 17,000.00 (Mensual) → 17000 | Handles every number format (1.234,56 / 1,234.56 / 500 000,00) |
| `salaryCurrency`, `salaryPeriod`, `salaryHasCommission` | MXN, month, false | ISO 4217; USD when the listing says US$ |
| `workMode`, `workModeText` | hybrid, "Presencial y remoto" | remote / hybrid / onsite |
| `postedAt`, `postedText` | 2026-11-05T00:27:28Z, "Hace 12 horas" | When the offer was published or refreshed |
| `isUrgent`, `isPromoted` | true | "Se precisa Urgente" / "Empleo destacado" |
| `contractType`, `schedule` \* | Contrato por tiempo indeterminado, Tiempo Completo | |
| `description` \* | Full text | E-mails and phone numbers removed |
| `education`, `experienceYears`, `languages`, `skills`, `requirements` \* | Licenciatura, 3, \["Inglés"] | From the "Requerimientos" box |
| `firstPublishedAt`, `validThrough`, `industry` \* | 2026-11-04, 2027-01-03, Energía | |
| `searchKeyword`, `searchLocation`, `searchUrl`, `scrapedAt` | | |

\* With **Fetch job details** on (one extra page per job).

### Use cases

- **Salary benchmarking** across Mexico, Colombia, Peru, Chile and Argentina for the same role, with numeric min/max and currency.
- **Job alerts**: schedule a daily run with "Only new jobs" and push new postings to Slack, Sheets or email.
- **Recruiting and lead generation**: find companies hiring in a city or industry (company name, rating and Computrabajo company page).
- **Labour-market research**: remote vs. on-site share, contract types, required experience and education per country.
- **Job aggregators**: feed LatAm listings into your own job board.

### How to use

1. Pick one or more **countries**.
2. Enter **keywords** (one per line), e.g. `desarrollador`, `enfermera`, `vendedor`. Optional **location**: a city or state as Computrabajo names it (`jalisco`, `bogota`, `lima`, `santiago`).
3. Optionally limit to jobs **posted within** a period, turn on **job details**, or **only new jobs**.
4. Run, then download the dataset as JSON, CSV, Excel or via the API.

Developer jobs in Mexico (the prefilled example):

```json
{ "country": ["mx"], "keywords": ["desarrollador"], "maxItems": 15 }
```

Nurse jobs in Bogotá with full details:

```json
{ "country": ["co"], "keywords": ["enfermera"], "location": "Bogotá", "maxItems": 50, "fetchDetails": true }
```

Developer jobs posted last week in Mexico, Colombia and Argentina:

```json
{ "country": ["mx", "co", "ar"], "keywords": ["desarrollador"], "postedWithin": "7days", "maxItems": 100 }
```

Any Computrabajo search URL (filters in the URL are kept):

```json
{ "startUrls": [{ "url": "https://co.computrabajo.com/trabajo-de-enfermera-en-bogota-dc?pubdate=3" }], "maxItems": 200 }
```

Daily alert for new warehouse jobs in Chile:

```json
{ "country": ["cl"], "keywords": ["bodeguero"], "onlyNew": true, "stateKey": "bodeguero-cl" }
```

`maxItems` applies to **each** country × keyword search (or each start URL). 0 = no limit.

### Output example

A real item (description shortened):

```json
{
  "id": "mx:23BF33451A6A1A3D61373E686DCF3405",
  "offerId": "23BF33451A6A1A3D61373E686DCF3405",
  "url": "https://mx.computrabajo.com/ofertas-de-trabajo/oferta-de-trabajo-de-auxiliar-contable-en-huimilpan-23BF33451A6A1A3D61373E686DCF3405",
  "title": "Auxiliar contable",
  "companyName": "CHARDON GROUP",
  "companyUrl": "https://mx.computrabajo.com/empresas/ofertas-de-trabajo-de-chardon-group-FDBFCF7B812C835A",
  "companyRating": null,
  "companyVerified": false,
  "location": "Huimilpan, Querétaro",
  "city": "Huimilpan",
  "state": "Querétaro",
  "country": "mx",
  "countryName": "México",
  "salaryText": "$ 17,000.00 (Mensual)",
  "salaryMin": 17000,
  "salaryMax": 17000,
  "salaryCurrency": "MXN",
  "salaryPeriod": "month",
  "salaryHasCommission": false,
  "workMode": "onsite",
  "workModeText": null,
  "contractType": "Contrato por tiempo indeterminado",
  "schedule": "Tiempo Completo",
  "postedAt": "2026-11-05T00:27:28.996Z",
  "postedText": "Hace 12 horas",
  "firstPublishedAt": "2026-11-04T00:00:00.000Z",
  "validThrough": "2027-01-03T00:00:00.000Z",
  "isUrgent": false,
  "isPromoted": false,
  "industry": "Energía",
  "description": "Chardon Mexico Electric, ubicada en parque industrial PyME, solicita auxiliar contable: ...",
  "education": "Educación superior - Licenciatura",
  "experienceYears": 3,
  "languages": [],
  "skills": [],
  "requirements": ["Educación mínima: Educación superior - Licenciatura", "3 años de experiencia", "Edad: A partir de 20 años"],
  "vacancies": null,
  "detailsStatus": "ok",
  "searchKeyword": "contador",
  "searchLocation": null,
  "searchUrl": "https://mx.computrabajo.com/trabajo-de-contador",
  "scrapedAt": "2026-11-05T12:27:28.996Z"
}
```

Without job details, the detail fields are `null` and `detailsStatus` is `"not-requested"`. Every item always has every key.

### Pricing

Pay per event, no start fee:

| Event | Price | When |
|---|---|---|
| `job` | $0.0015 | Every job in the dataset |
| `job-details` | $0.0005 | Only when "Fetch job details" is on and the job page was read successfully |

Examples: **1,000 jobs ≈ $1.50**; 1,000 jobs with full details ≈ $2.00. Jobs skipped by "Only new jobs" are not charged. Set "Maximum cost per run" in the run options and the Actor stops cleanly at that budget.

### Tips and limits

- **Location** is matched the way Computrabajo builds its URLs: `Bogotá` → `/trabajo-de-enfermera-en-bogota`. If a city doesn't exist in a country you get 0 jobs and a warning in the run summary. When in doubt, search on the site and paste the URL into **Start URLs**.
- **Keywords** become Computrabajo's `/trabajo-de-<keyword>` searches. Spanish job titles work best (`desarrollador`, not `developer`).
- **postedAt** is the date Computrabajo shows on the listing, which is when the offer was published *or refreshed*. With job details, `firstPublishedAt` is the original publication date.
- **workMode**: Computrabajo only badges remote and hybrid jobs; jobs without a badge are reported as `onsite`.
- **Salary**: many offers hide the salary ("A convenir"); then the salary fields are null. Venezuela listings use "$" for both dollars and bolívares, so `salaryCurrency` is null there unless job details give the currency.
- **Vacancies** are only filled when the job page states a number, which is rare.
- Computrabajo shows 20 jobs per page; very deep searches (thousands of pages) are capped at 250 pages per search.
- Runs are polite (max 3 parallel requests). A 100-job listing run takes a few seconds; with details, expect roughly 2-3 jobs per second.

### FAQ

**Is it legal to scrape Computrabajo?**
This Actor only reads public job listings that anyone can see without logging in, and it respects Computrabajo's robots.txt (filters it disallows on some URL types are removed from start URLs). It does not collect candidate data, CVs, or recruiter contact details: e-mail addresses and phone numbers are removed from descriptions. You are responsible for using the data in line with the site's terms and the data-protection laws that apply to you.

**Do I need a proxy?**
Usually not. If Computrabajo starts returning HTTP 403/429 for Apify's servers, enable Apify Proxy (datacenter) in "Proxy configuration". Residential proxies are not supported: if you select them, the Actor falls back to Apify datacenter proxy and logs a warning.

**How does "Only new jobs" work?**
Job IDs (country + offer ID) already output are remembered in a named key-value store under your "State key". The next run with the same key skips them (and doesn't charge for them). Use one state key per alert.

**Why do some jobs show "Importante empresa del sector" as the company?**
That is how Computrabajo displays confidential employers. `companyUrl` is null for them.

**Can I scrape a company's jobs page or a filtered search?**
Yes: paste any Computrabajo listing URL into Start URLs; its own filters (date, salary range, location...) are kept.

### Integrations

- **API:** run the Actor and fetch the dataset with the Apify API or the `apify-client` libraries for JavaScript and Python.
- **Make, Zapier, n8n:** use the Apify app/node to run the Actor on a schedule and send new jobs to Google Sheets, Airtable, Slack or email.
- **MCP:** AI agents can call this Actor through the Apify MCP server (`mcp.apify.com`).
- **Webhooks:** get notified when a run finishes and pull the new items.

### Changelog

- **0.1** (November 2026): first release. 17 countries, keywords + location + posted-within, start URLs, parsed salaries and dates, work mode, optional job details, only-new-jobs mode.

### Ready-to-run examples

- [Find nurse jobs in Bogotá, Colombia on Computrabajo](https://apify.com/rjmacarthy/computrabajo-scraper/examples/nurse-jobs-bogota-computrabajo)
- [Track developer jobs in Mexico, Colombia and Argentina](https://apify.com/rjmacarthy/computrabajo-scraper/examples/developer-jobs-mexico-colombia-argentina)

### More scrapers by the same developer

- [Internshala Scraper - Internships & Jobs in India](https://apify.com/rjmacarthy/internshala-scraper)
- [JobStreet & JobsDB Scraper - Asia Jobs (MY, SG, PH, ID, HK, TH)](https://apify.com/rjmacarthy/jobstreet-jobsdb-scraper)
- [Apna Jobs Scraper - India Jobs by Keyword, City & Category](https://apify.com/rjmacarthy/apna-jobs-scraper)
- [Arbeitsagentur Jobs Scraper - German Jobbörse (Public API)](https://apify.com/rjmacarthy/arbeitsagentur-jobs-scraper)
- [ATS Jobs Scraper: Greenhouse, Lever, Ashby & Workday](https://apify.com/rjmacarthy/ats-jobs-scraper)
- [Cutshort Jobs Scraper - India Startup & Tech Jobs](https://apify.com/rjmacarthy/cutshort-jobs-scraper)

Browse all my Actors on [my Apify Store profile](https://apify.com/rjmacarthy).

### Support

Found a search that doesn't work, or need an extra field? Open an issue on the **Issues** tab with your input. Fixes are usually quick.

# Actor input Schema

## `country` (type: `array`):

Computrabajo country sites to search. Each keyword is searched in every selected country.

## `keywords` (type: `array`):

Job titles or keywords, one per line, e.g. "desarrollador", "enfermera", "vendedor". Each becomes a Computrabajo search (/trabajo-de-<keyword>). Leave empty to list all jobs in the location.

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

City or state as Computrabajo names it, e.g. "jalisco", "bogota dc", "lima", "santiago". Accents and case don't matter. Leave empty for the whole country. A location that doesn't exist in a country returns 0 jobs there (shown as a warning).

## `postedWithin` (type: `string`):

Only jobs published or refreshed within this period.

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

Maximum jobs to output for each country x keyword search (or each start URL). 0 = no limit.

## `fetchDetails` (type: `boolean`):

Open each job page for the full description, contract type, schedule, education, years of experience, languages, skills, industry and first-published date. One extra request per job, charged as the job-details event.

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

Computrabajo search result URLs copied from your browser, e.g. https://co.computrabajo.com/trabajo-de-enfermera-en-bogota-dc?pubdate=7. When given, countries, keywords, location and posted-within are ignored.

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

Skip jobs this Actor already output in earlier runs with the same state key (remembered in a named key-value store, keyed by country + offer ID). Schedule the Actor daily for a job-alert feed. The first run outputs everything and becomes the baseline. Each search stops at the first results page that contains only already-seen jobs.

## `stateKey` (type: `string`):

Name of the job-alert memory used by "Only new jobs". Use a different key for each separate alert/schedule.

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

Not needed normally. Enable Apify Proxy (datacenter) if Computrabajo blocks or rate-limits the run. Residential proxies are not supported: if selected, the Actor falls back to Apify datacenter proxy.

## `maxConcurrency` (type: `integer`):

Parallel requests to Computrabajo (1-3). Keep it low to be polite.

## Actor input object example

```json
{
  "country": [
    "mx"
  ],
  "keywords": [
    "desarrollador"
  ],
  "postedWithin": "any",
  "maxItems": 15,
  "fetchDetails": false,
  "onlyNew": false,
  "stateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxConcurrency": 3
}
```

# Actor output Schema

## `jobs` (type: `string`):

One item per job: title, company, location, salary, work mode, posting date and URL.

## `jobsFull` (type: `string`):

Every field, including parsed salary and (with job details) the full description and requirements.

## `summary` (type: `string`):

Per-search status, counts, request statistics and warnings.

# 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 = {
    "country": [
        "mx"
    ],
    "keywords": [
        "desarrollador"
    ],
    "maxItems": 15
};

// Run the Actor and wait for it to finish
const run = await client.actor("rjmacarthy/computrabajo-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 = {
    "country": ["mx"],
    "keywords": ["desarrollador"],
    "maxItems": 15,
}

# Run the Actor and wait for it to finish
run = client.actor("rjmacarthy/computrabajo-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 '{
  "country": [
    "mx"
  ],
  "keywords": [
    "desarrollador"
  ],
  "maxItems": 15
}' |
apify call rjmacarthy/computrabajo-scraper --silent --output-dataset

```

## MCP server setup

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