# Computrabajo LATAM Jobs Scraper (`automation-lab/computrabajo-jobs-scraper`) Actor

Search Computrabajo country sites and extract normalized public vacancies with employers, salaries, requirements, dates, descriptions, and stable offer IDs.

- **URL**: https://apify.com/automation-lab/computrabajo-jobs-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 80.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Computrabajo LATAM Jobs Scraper

Extract normalized public vacancy records from Computrabajo country sites across Latin America.
Search by keyword, use a real results URL, or enrich an individual vacancy with its full public details.

The Actor returns stable offer IDs, job titles, employers, country and location, salary data, work mode,
posting dates, requirements, descriptions, and canonical URLs in one export-ready dataset.
It is designed for recurring vacancy monitoring, recruitment research, and labor-market analysis.

### What does this Computrabajo scraper do?

Computrabajo LATAM Jobs Scraper turns public search and vacancy pages into consistent JSON records.
It supports 19 country subdomains and handles pagination until your requested item limit is reached.

You can:

- search one country with one or more job keywords;
- paste pre-filtered Computrabajo search URLs from multiple countries;
- paste an individual vacancy URL for a current detail snapshot;
- request fast search-card records or enriched vacancy details;
- deduplicate jobs by Computrabajo offer ID;
- schedule the same input to create comparable vacancy snapshots;
- export results as JSON, CSV, Excel, XML, RSS, or HTML through Apify.

The implementation uses lightweight HTTP extraction with an Apify datacenter proxy.
It does not require a Computrabajo account or browser automation.

### Who is it for?

#### Recruitment and talent intelligence teams

Build role- and location-specific vacancy feeds without manually copying search pages.
Use stable offer IDs to compare scheduled snapshots and identify new or removed openings.

#### Labor-market analysts

Collect salary, employer, industry, employment type, and location fields for regional analysis.
Missing values remain `null` rather than being guessed.

#### Job boards and data engineers

Create a normalized input for a warehouse, spreadsheet, CRM, search index, or internal jobs product.
The default dataset works with Apify integrations and API clients.

#### Sales and competitive-intelligence teams

Monitor public hiring activity by query, country, or a filtered Computrabajo URL.
Repeated runs can feed your own change-detection or alerting workflow.

### Supported Computrabajo countries

Use the two-letter country code for keyword searches, or provide a URL from the matching subdomain.

| Code | Country | Domain |
| --- | --- | --- |
| `ar` | Argentina | `ar.computrabajo.com` |
| `bo` | Bolivia | `bo.computrabajo.com` |
| `cl` | Chile | `cl.computrabajo.com` |
| `co` | Colombia | `co.computrabajo.com` |
| `cr` | Costa Rica | `cr.computrabajo.com` |
| `cu` | Cuba | `cu.computrabajo.com` |
| `do` | Dominican Republic | `do.computrabajo.com` |
| `ec` | Ecuador | `ec.computrabajo.com` |
| `gt` | Guatemala | `gt.computrabajo.com` |
| `hn` | Honduras | `hn.computrabajo.com` |
| `mx` | Mexico | `mx.computrabajo.com` |
| `ni` | Nicaragua | `ni.computrabajo.com` |
| `pa` | Panama | `pa.computrabajo.com` |
| `pe` | Peru | `pe.computrabajo.com` |
| `pr` | Puerto Rico | `pr.computrabajo.com` |
| `py` | Paraguay | `py.computrabajo.com` |
| `sv` | El Salvador | `sv.computrabajo.com` |
| `uy` | Uruguay | `uy.computrabajo.com` |
| `ve` | Venezuela | `ve.computrabajo.com` |

Country sites can differ in inventory and optional fields.
The Actor returns only data present on the public source page.

### What Computrabajo job data can you extract?

| Field | Meaning |
| --- | --- |
| `offerId` | Stable Computrabajo vacancy identifier |
| `title` | Public job title |
| `employer`, `employerId`, `employerUrl` | Hiring organization fields when present |
| `country`, `countryCode` | Normalized country name and two-letter code |
| `location`, `city`, `region` | Display location and structured detail fields |
| `workMode` | `remote`, `hybrid`, `on-site`, or `null` when not stated |
| `salary` | Salary text shown on the search card |
| `salaryValue`, `salaryMin`, `salaryMax` | Numeric salary values when structured data is available |
| `salaryCurrency`, `salaryPeriod` | Currency and unit such as `MXN` and `MONTH` |
| `employmentType` | Structured employment type when published |
| `industry` | Public industry value from the vacancy detail |
| `postedText` | Relative posting label from the search result |
| `datePosted`, `validThrough` | Structured ISO dates when published |
| `requirements` | Requirements section extracted from the description |
| `description`, `descriptionHtml` | Plain-text and source HTML descriptions |
| `isUrgent`, `isFeatured` | Search-card promotion flags |
| `companyRating` | Public employer rating when shown |
| `applyUrl` | Public apply URL when available on a search card |
| `url` | Canonical vacancy URL |
| `sourceUrl` | Search or direct URL that produced the record |
| `scrapedAt` | UTC extraction timestamp |

Detail-only fields are `null` when `includeDetails` is disabled or the source does not publish them.

### How to run the Actor

1. Open the Actor input page in Apify Console.
2. Select a `country` for keyword searches.
3. Add one or more `searchQueries`, or paste real `startUrls`.
4. Keep `includeDetails` enabled when descriptions and requirements matter.
5. Set `maxItems` and `maxResultsPerQuery` to control scope.
6. Click **Start**.
7. Open the default dataset to preview or export the jobs.

A valid run can return zero rows when a real query currently has no public vacancies.
A blocked source response is treated as an error, not as an empty result.

### Input parameters

| Input | Type | Default | Description |
| --- | --- | --- | --- |
| `country` | string | `mx` | Country code used to construct keyword searches |
| `searchQueries` | string\[] | `[]` | Job keywords searched independently |
| `startUrls` | URL\[] | `[]` | Computrabajo search or direct vacancy URLs |
| `includeDetails` | boolean | `true` | Fetch every vacancy page for enriched fields |
| `maxItems` | integer | `100` | Total unique jobs, from 1 to 10,000 |
| `maxResultsPerQuery` | integer | `100` | Per-search cap, from 1 to 10,000 |

If both keyword searches and URLs are supplied, the Actor processes all sources and deduplicates their results.
If neither is supplied, it performs a broad search in the selected country.
Only HTTPS URLs on a supported Computrabajo country subdomain are accepted.

### Input examples

#### Search Computrabajo Mexico by keyword

```json
{
  "country": "mx",
  "searchQueries": ["ventas", "analista de datos"],
  "includeDetails": false,
  "maxItems": 50,
  "maxResultsPerQuery": 25
}
```

#### Extract a filtered Colombia search URL

```json
{
  "startUrls": [
    { "url": "https://co.computrabajo.com/trabajo-de-desarrollador" }
  ],
  "includeDetails": true,
  "maxItems": 20,
  "maxResultsPerQuery": 20
}
```

#### Combine several LATAM countries

```json
{
  "startUrls": [
    { "url": "https://mx.computrabajo.com/trabajo-de-ventas" },
    { "url": "https://co.computrabajo.com/trabajo-de-ventas" },
    { "url": "https://cl.computrabajo.com/trabajo-de-ventas" }
  ],
  "includeDetails": false,
  "maxItems": 90,
  "maxResultsPerQuery": 30
}
```

### Output example

This abbreviated record reflects real current Actor output:

```json
{
  "offerId": "5D721A6E093055D661373E686DCF3405",
  "title": "Supervisor de rutas de ventas",
  "employer": "PURIFICADORA BRISA",
  "country": "México",
  "countryCode": "MX",
  "location": "San Luis Potosí, San Luis Potosí",
  "workMode": null,
  "salary": "$ 18,000.00 (Mensual)",
  "salaryValue": 18000,
  "salaryCurrency": "MXN",
  "salaryPeriod": "MONTH",
  "employmentType": "FULL_TIME",
  "datePosted": "2026-07-31",
  "requirements": "Educación mínima: Educación media superior ...",
  "description": "Empresa líder solicita supervisor de rutas ...",
  "isUrgent": true,
  "isFeatured": true,
  "url": "https://mx.computrabajo.com/ofertas-de-trabajo/oferta-de-trabajo-de-supervisor-de-rutas-de-ventas-en-san-luis-potosi-5D721A6E093055D661373E686DCF3405",
  "sourceUrl": "https://mx.computrabajo.com/trabajo-de-ventas",
  "scrapedAt": "2026-08-01T06:57:48.000Z"
}
```

Descriptions above are shortened only for documentation.
Dataset records contain the full public values returned by the source.

### Search mode versus enriched detail mode

Set `includeDetails` to `false` for fast vacancy discovery.
Search-card mode includes identity, title, employer, location, salary text, posting age, flags, and URLs.

Set `includeDetails` to `true` when you need:

- full plain-text and HTML descriptions;
- requirements;
- structured salary values;
- dates and validity;
- industry and employment type;
- structured city and region.

Detail mode makes one additional source request per accepted job and therefore runs longer.
Direct vacancy URLs are always parsed as detail pages.

### How much does it cost to scrape Computrabajo jobs?

The Actor uses pay-per-event pricing.
Each run has a **$0.004 start event**, followed by one `item` event for each saved job.
No charge is created for duplicates, rejected records, failed pages, or empty searches.

Current per-job prices decrease by Apify plan tier:

| Tier | Price per saved job |
| --- | ---: |
| FREE | $0.0022954 |
| BRONZE | $0.0019960 |
| SILVER | $0.0015569 |
| GOLD | $0.0011976 |
| PLATINUM | $0.0007984 |
| DIAMOND | $0.00055888 |

At the FREE tier, 20 saved jobs cost about **$0.050** including the start event.
At the BRONZE tier, 100 saved jobs cost about **$0.204** including the start event.
Actual totals depend on the number of unique jobs saved, not the number of pages requested.

### Recurring vacancy monitoring workflow

Apify schedules can run an unchanged input hourly, daily, or weekly.
A practical monitoring flow is:

1. Save a role, location, or filtered source URL in an Actor Task.
2. Keep the item limits consistent across runs.
3. Schedule the Task at the cadence appropriate for the hiring market.
4. Export each dataset to your warehouse or automation platform.
5. Compare `offerId`, `datePosted`, `validThrough`, and selected content fields.
6. Trigger your own alert when an offer ID appears, changes, or disappears.

The Actor emits snapshots.
It does not itself retain prior datasets, calculate deltas, or send alerts.

### Export and integration patterns

Use the dataset directly with:

- Google Sheets for recruiter review;
- Airtable for a lightweight vacancy tracker;
- Make or Zapier for row-level workflows;
- webhooks for run-finished processing;
- BigQuery, Snowflake, or another warehouse for trend analysis;
- a custom ATS, CRM, search index, or dashboard;
- Apify schedules for recurring collection.

CSV is convenient for spreadsheets.
JSON preserves nullable fields and numeric salary values most accurately.

### Use the API with cURL

Start a run and wait for its result:

```bash
curl "https://api.apify.com/v2/acts/automation-lab~computrabajo-jobs-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "country": "mx",
    "searchQueries": ["ventas"],
    "includeDetails": false,
    "maxItems": 20
  }'
```

Keep API tokens in environment variables or a secret manager.
Do not commit them to source control.

### Use the API with JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/computrabajo-jobs-scraper').call({
    country: 'co',
    searchQueries: ['desarrollador'],
    includeDetails: true,
    maxItems: 25,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Use the API with Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/computrabajo-jobs-scraper").call(run_input={
    "country": "cl",
    "searchQueries": ["analista de datos"],
    "includeDetails": True,
    "maxItems": 10,
})

items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

### Use the Actor through MCP

Add the Apify MCP server to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/computrabajo-jobs-scraper"
```

For **Claude Desktop**, **Cursor**, and **VS Code**, add this MCP server configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/computrabajo-jobs-scraper"
    }
  }
}
```

Example prompts:

- “Find 20 current sales vacancies on Computrabajo Mexico and group them by employer.”
- “Extract developer jobs from Computrabajo Colombia with salary and location fields.”
- “Collect enriched analyst vacancies in Chile and return offer ID, requirements, and date posted.”

### Reliability, retries, and limits

Computrabajo blocks anonymous datacenter traffic.
The Actor uses an Apify proxy and a browser-like HTTP fingerprint for the public SSR pages.
It reuses a coherent proxy session and rotates only after bounded transient failures.

The Actor:

- retries network errors, 403, 429, and temporary 5xx responses up to three attempts;
- rejects unsupported domains and malformed inputs;
- stops scheduling after your requested limit;
- deduplicates by stable offer ID;
- treats a challenge page as an error rather than valid empty output;
- caps pagination defensively;
- does not guess missing salary, work mode, or date fields.

Large enriched runs take longer because every saved job requires a detail request.
Start with a small representative input before scaling.

### Responsible use and legality

This Actor extracts information shown on public Computrabajo vacancy pages.
It does not log in, apply for jobs, access candidate profiles, or collect private account data.

You are responsible for:

- reviewing Computrabajo terms and applicable laws;
- choosing a proportionate run frequency and item limit;
- respecting copyright, database, and data-protection requirements;
- avoiding spam, discrimination, or harmful automated decisions;
- securing exported datasets and API credentials.

Public availability does not remove your compliance obligations.

### Troubleshooting

#### Why did a search return zero jobs?

The query may currently have no matching public vacancies, or the country inventory may be sparse.
Try the same URL in a normal browser, simplify the keyword, and verify the selected country.
A genuine empty search completes successfully with zero rows.

#### Why did the run fail with a source response error?

Computrabajo may have temporarily blocked a proxy identity or changed its page shape.
The Actor retries transient responses automatically.
If the error persists, rerun later or report the failing country URL and run ID.

#### Why are some enriched fields `null`?

Employers do not publish every field on every vacancy.
Search-only mode also omits detail-only fields by design.
Enable `includeDetails` and check whether the source vacancy displays the missing value.

#### Why do results differ between scheduled runs?

Vacancies are added, edited, reordered, and removed continuously.
Use `offerId` rather than row position when comparing snapshots.

### FAQ

#### Does the Actor support Computrabajo Colombia, Chile, and Argentina?

Yes. Those country domains are supported along with 16 other LATAM country sites listed above.

#### Can I paste a filtered Computrabajo URL?

Yes. Paste a supported HTTPS search URL in `startUrls`.
The Actor preserves its path and query filters while paginating.

#### Can I extract one vacancy?

Yes. Paste the direct `/ofertas-de-trabajo/` URL.
The Actor returns a single enriched record when the public JobPosting data is available.

#### Does it apply to jobs?

No. It only extracts public vacancy information.

#### Does it track changes automatically?

It produces stable snapshot records suitable for comparison.
Use schedules and your own downstream store or automation to calculate changes.

#### Are duplicates charged?

No. A job is charged only when its unique record is accepted and saved.

### Related automation-lab Actors

- [Comeet Jobs Scraper](https://apify.com/automation-lab/comeet-jobs-scraper) for public Comeet-powered careers pages.
- [Teamtailor Jobs Scraper](https://apify.com/automation-lab/teamtailor-jobs-scraper) for Teamtailor career sites.
- [Working Nomads Jobs Scraper](https://apify.com/automation-lab/working-nomads-jobs-scraper) for remote-job discovery.

Use Computrabajo LATAM Jobs Scraper when the target vacancy inventory is specifically on Computrabajo country sites.

# Actor input Schema

## `country` (type: `string`):

Country used for keyword searches. URLs select their country from the subdomain.

## `searchQueries` (type: `array`):

Job keywords such as desarrollador, ventas, or analista de datos. Each keyword is searched independently.

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

Search-result or individual vacancy URLs from a supported Computrabajo country site. You can combine countries.

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

Open each vacancy to add description, requirements, structured salary, dates, industry, and employment type.

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

Maximum number of unique vacancy records across the whole run.

## `maxResultsPerQuery` (type: `integer`):

Maximum records accepted from each keyword or search URL before moving to the next source.

## Actor input object example

```json
{
  "country": "mx",
  "searchQueries": [
    "desarrollador"
  ],
  "startUrls": [],
  "includeDetails": true,
  "maxItems": 20,
  "maxResultsPerQuery": 20
}
```

# Actor output Schema

## `overview` (type: `string`):

Table view of extracted vacancy records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "country": "mx",
    "searchQueries": [
        "desarrollador"
    ],
    "startUrls": [],
    "includeDetails": true,
    "maxItems": 20,
    "maxResultsPerQuery": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/computrabajo-jobs-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",
    "searchQueries": ["desarrollador"],
    "startUrls": [],
    "includeDetails": True,
    "maxItems": 20,
    "maxResultsPerQuery": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/computrabajo-jobs-scraper").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 '{
  "country": "mx",
  "searchQueries": [
    "desarrollador"
  ],
  "startUrls": [],
  "includeDetails": true,
  "maxItems": 20,
  "maxResultsPerQuery": 20
}' |
apify call automation-lab/computrabajo-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rKqPCB8ZnzX9iPLND/builds/dDdQRXQ68CLnJg4i4/openapi.json
