# Computrabajo Jobs Scraper & New Job Monitor - Latin America (`neverempty/computrabajo-jobs-scraper`) Actor

For recruiters, job alerts and hiring lead lists: Computrabajo jobs in 19 Latin American countries by keyword and city, with company rating, salary as numbers with currency, remote or hybrid, date and link. Monitor mode returns only new jobs.

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

## Pricing

from $2.59 / 1,000 job returneds

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

## Computrabajo Jobs Scraper & New Job Monitor - Latin America

Get **Computrabajo jobs** as clean JSON from **all 19 country sites**: Mexico, Colombia, Peru, Argentina, Chile, Ecuador, Venezuela, Costa Rica, Guatemala, El Salvador, Uruguay, Paraguay, Panama, Honduras, Nicaragua, Dominican Republic, Bolivia, Cuba and Puerto Rico. Each row has the job title, **company**, the **company's rating** on Computrabajo, city and region, **salary as numbers with the currency** (COP, MXN, PEN, ARS, CLP ...) and the pay period, **remote or hybrid**, the date posted and the link. Search by **job title or keyword** and **city**, or paste Computrabajo search URLs. Turn on **Monitor mode** and scheduled runs return **only jobs that are new since the last check**, so a recruiter, a job alert, a Slack or Telegram bot or a hiring lead list gets the new ones without paying for the same jobs again.

- **Salary you can sort and filter.** Computrabajo writes `$ 2.500.000,00 (Mensual)` or `S/. 2.700,00 (Mensual)`. This Actor returns `salaryMin: 2500000`, `salaryMax`, `salaryCurrency: "COP"` (from the country site, since `$` means pesos in most of these countries), `salaryPeriod: "month"` and `salaryPlusCommission`. In our production run on 2026-10-21, 15 of 20 engineering jobs in Bogotá had a posted salary, all returned as COP numbers. `minSalary` keeps only jobs that pay at least your amount.
- **Company rating and verified employers.** `companyRating` (Computrabajo's 1 to 5 stars from employees), `companyVerified`, the company page and ID, so you can sort a lead list by employer.
- **New job monitor.** Schedule the same input with `onlyNew`. The first run sets the starting point; every later run returns only jobs posted after the previous check (`changeType: new`). A job this watch returned is not returned or charged again, also when you rewrite the search (a URL with tracking parameters, an added filter). A run where nothing is new costs the small run start fee plus a small monitoring check per search.
- **Up to 1,000 jobs per search, all 19 countries in one run.** Keywords times locations times countries, plus search URLs, up to 20 searches per run. The Actor reads Computrabajo's results pages (20 jobs each) itself.
- **No duplicates.** A job found by two overlapping searches in one run is returned once.
- **Full job page on request.** `includeJobDetails` adds contract type, working hours, employment type, education, years of experience, skills, posting and closing dates, the company logo and the full description, also for jobs whose employer is kept confidential.
- **Remote and hybrid filter, newest first, posted within N days.**
- **Free rows explain everything else.** A search with no jobs, nothing that passes your filters or a page that could not be read comes back as a row that says why, and is not charged.

Unofficial. Reads the public Computrabajo search result pages (and, if you turn it on, the public job pages), the same pages a person sees without logging in, and follows Computrabajo's robots.txt. It does not log in, does not apply to jobs, and does not solve or bypass check pages. It returns **the company, not the people**: there are no recruiter or applicant columns. In every text column, phone numbers, WhatsApp links and e-mail addresses are replaced with `[phone removed]` and `[email removed]`, and names after a title (Sr., Sra., Srta., Señor, Señora ...) or a label (Contacto, Preguntar por, Comunicarse con, Reclutadora, Atención ...) with `[name removed]`. Salary amounts are kept.

### What you get

One row per job. Example (a production run on 2026-10-21, `contador` in `Lima` on pe.computrabajo.com with job page details; `description` is shortened here):

```json
{
  "status": "ok",
  "changeType": null,
  "jobId": "C9241A033CE7708F61373E686DCF3405",
  "title": "Asistente contable de registro de compras y cuentas por pagar I Lince",
  "company": "TOURING Y AUTOMOVIL CLUB DEL PERU",
  "companyId": "1368D76891DC6FD4",
  "companyUrl": "https://pe.computrabajo.com/empresas/ofertas-de-trabajo-de-touring-y-automovil-club-del-peru-1368D76891DC6FD4",
  "companyRating": 4.3,
  "companyVerified": true,
  "companyLogoUrl": "https://ii.ct-stc.com/3/logos/empresas/2019/04/02/6fbc2e4c9c334703847a163309724thumbnail.jpg",
  "location": "Lince, Lima",
  "city": "Lince",
  "region": "Lima",
  "country": "pe",
  "countryName": "Peru",
  "workMode": null,
  "salaryText": "S/. 2.700,00 (Mensual)",
  "salaryMin": 2700,
  "salaryMax": 2700,
  "salaryCurrency": "PEN",
  "salaryCurrencySymbol": "S/.",
  "salaryPeriod": "month",
  "salaryPlusCommission": false,
  "postedText": "Hace 56 minutos",
  "postedAt": "2026-10-20T21:08:09.862Z",
  "datePosted": "2026-10-20",
  "validThrough": "2026-12-19",
  "isUrgent": false,
  "isFeatured": false,
  "employmentType": ["FULL_TIME"],
  "contractType": "Contrato por Necesidades del Mercado",
  "workingHours": "Tiempo completo",
  "industry": "Transporte",
  "education": "Universitario",
  "experience": "2 años de experiencia",
  "experienceYears": 2,
  "skills": null,
  "description": "¡Buscamos Asistente de Contabilidad! En el Touring y Automóvil Club del Perú buscamos un profesional de Contabilidad ...",
  "detailsStatus": "ok",
  "url": "https://pe.computrabajo.com/ofertas-de-trabajo/oferta-de-trabajo-de-asistente-contable-de-registro-de-compras-y-cuentas-por-pagar-i-lince-en-lince-C9241A033CE7708F61373E686DCF3405",
  "positionInSearch": 1,
  "jobsInSearch": 2075,
  "searchQuery": "contador",
  "searchLocation": "Lima",
  "searchCountry": "pe",
  "searchUrl": "https://pe.computrabajo.com/trabajo-de-contador-en-lima",
  "note": null,
  "watchName": null,
  "checkedAt": "2026-10-20T22:04:09.862Z"
}
```

| Column | What it is |
|---|---|
| `status` | `ok` for a job row; anything else is a free row (see below) |
| `changeType` | Monitor mode: `first-check` (first run of a watch) or `new`; `null` in a normal search |
| `jobId`, `url` | Computrabajo's job ID and the job page |
| `title` | Job title as posted |
| `company`, `companyId`, `companyUrl` | Employer and its Computrabajo company page. `null` when the employer keeps the ad confidential |
| `companyRating`, `companyVerified` | Computrabajo's star rating of the employer (1 to 5) and whether Computrabajo marks it as verified |
| `companyLogoUrl` | Employer logo (with `includeJobDetails`) |
| `location`, `city`, `region` | Place as shown on the job, split into city and region |
| `country`, `countryName` | Country site the job is on |
| `workMode` | `remote` (Remoto), `hybrid` (Presencial y remoto) or `null` (on site or not stated) |
| `salaryText` | Salary exactly as posted, or `null` |
| `salaryMin`, `salaryMax` | Salary as numbers (the same number twice when one amount is posted) |
| `salaryCurrency`, `salaryCurrencySymbol` | ISO currency (COP, MXN, PEN, ARS, CLP, USD ...) and the symbol on the page. `null` currency where the site's `$` cannot be pinned to one currency (Venezuela, Cuba) |
| `salaryPeriod`, `salaryPlusCommission` | `month`, `half-month`, `week`, `day`, `hour` or `year`; and whether the ad adds commissions |
| `postedText`, `postedAt` | Computrabajo's "Hace 3 horas", and an estimate of when the job was posted: exact to the unit the site shows ("Hace 3 horas" is 3 hours before the check); "Hoy" is set to 12 hours and "Ayer" to 24 hours before the check, a date such as "15 de octubre" to noon (UTC) of that day |
| `datePosted`, `validThrough` | Posting and closing dates from the job page (with `includeJobDetails`) |
| `isUrgent`, `isFeatured` | Marked urgent, or a promoted ad |
| `employmentType`, `contractType`, `workingHours` | With `includeJobDetails`: FULL_TIME/PART_TIME ..., the contract as written, and the hours |
| `industry`, `education`, `experience`, `experienceYears`, `skills` | With `includeJobDetails` |
| `description` | With `includeJobDetails`: the full description with its paragraph and line breaks (`
`), contacts removed |
| `detailsStatus` | With `includeJobDetails`: `ok`, or why the job page could not be added (`gone`, `unreadable`, `blocked`, `not-allowed-by-robots-txt`) |
| `positionInSearch`, `jobsInSearch` | Position in the search, and the number of jobs Computrabajo reports for it |
| `searchQuery`, `searchLocation`, `searchCountry`, `searchUrl` | The search this row came from |
| `note` | Free rows only: why nothing (or not everything) was returned |
| `watchName`, `checkedAt` | The watch name you gave, and the time of the check |
| `dataNotes` | A list of short notes when something about this row needs saying (for example: returned from the example search, a job card on the page could not be read, a held-back job no longer on the list), otherwise `null` |

#### Free rows (not charged)

| `status` | When |
|---|---|
| `no-results` | Computrabajo has no job for this search (also what Computrabajo answers for a place or job title it does not know) |
| `none-match-filters` | Jobs were read, but none passes your filters (remote work, posted within, minimum salary) |
| `not-found` | Computrabajo does not have this page (HTTP 404) |
| `no-new-since-last-run` | Monitor mode: nothing new since the previous check |
| `more-not-returned` | Normal search: fewer jobs passed your filters than `maxResultsPerSearch` within the 1,000 results Computrabajo shows. Monitor mode: more new jobs than `maxResultsPerSearch` (the next run returns them first), or, on the first check, how many jobs are now the starting point |
| `more-new-than-readable` | Monitor mode: more jobs were posted since the last check than one monitor run reads (the 160 newest, 8 pages), or jobs an earlier run could not return were taken down before they could be returned |
| `already-returned` | Everything on this search was already returned by an earlier search of the same run (or, in monitor mode, by this watch under another way of writing the search); it is not returned or charged twice |
| `not-allowed-by-robots-txt` | Computrabajo's robots.txt does not allow the page. Nothing was requested |
| `unreadable` | Computrabajo could not be read, even after asking again from other IP addresses, or the page layout changed. Nothing is guessed and nothing is remembered |
| `blocked` | Computrabajo showed a check page. This Actor does not solve or bypass check pages; it stops and does not run the remaining searches |
| `budget-reached` | The run hit the maximum total charge you set. In monitor mode the jobs not returned are returned by the next run |
| `bad-input` | The input could not be used (for example an unknown country, or only filters such as `postedWithinDays` without a search term, location or search URL). Nothing was requested. The run ends as failed |

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `searchQueries` | list of strings | - | Job titles or keywords: `ingeniero`, `vendedor`, `contador`, `desarrollador`, `enfermera`, `asesor comercial` ... An empty input runs the example `ingeniero` on co.computrabajo.com (its rows say so in `dataNotes`); filters without a search term, location or search URL are refused as `bad-input` |
| `locations` | list of strings | whole country | Cities or regions: `Bogotá`, `Medellín`, `Antioquia`, `Ciudad de México`, `Monterrey`, `Lima`, `Buenos Aires`, `Santiago`, `Quito` |
| `countries` | list of `co`, `mx`, `pe`, `ar`, `cl`, `ec`, `ve`, `cr`, `gt`, `sv`, `uy`, `py`, `pa`, `hn`, `ni`, `do`, `bo`, `cu`, `pr` | `co` | Computrabajo country sites to search |
| `searchUrls` | list of strings | - | Computrabajo search result pages copied from the browser, for example `https://co.computrabajo.com/trabajo-de-ingeniero-en-bogota-dc` or `https://mx.computrabajo.com/empleos-en-jalisco`. The Actor reads the following pages itself |
| `remoteWork` | `any`, `remote`, `hybrid`, `remote-or-hybrid` | `any` | Remote work filter. With `remote` and no location, Computrabajo's own remote job list is read |
| `postedWithinDays` | integer 1-30 | - | Only jobs posted within this many days |
| `minSalary` | integer | - | Only jobs whose posted salary (top of the range) is at least this amount, in the currency of the country site. Jobs without a posted salary are left out when this is set |
| `sortBy` | `relevance`, `newest` | `relevance` | Order of the results. Monitor mode always reads newest first |
| `includeJobDetails` | boolean | false | Also read each returned job's page: contract, hours, education, experience, skills, dates, logo and full description |
| `maxResultsPerSearch` | integer 1-1000 | 100 | Most jobs returned for one search. In monitor mode: most new jobs per search in one run (the rest come first in the next run) |
| `onlyNew` | boolean | false | Monitor mode: return only jobs that are new since the previous check |
| `watchName` | string | - | Separate memories for monitor mode, for example one per client or per alert |
| `resetMonitoringState` | boolean | false | Forget what this watch has seen, so the run is a first check again |

Each keyword is searched in each location on each country site (up to 20 searches per run). A keyword alone searches the whole country; a location alone lists all jobs there.

### Examples

Accountants in Lima, with contract, hours and full description:

```json
{ "searchQueries": ["contador"], "locations": ["Lima"], "countries": ["pe"], "includeJobDetails": true }
```

Remote developer jobs in Mexico, Colombia and Argentina posted in the last 3 days, newest first:

```json
{ "searchQueries": ["desarrollador"], "countries": ["mx", "co", "ar"], "remoteWork": "remote", "postedWithinDays": 3, "sortBy": "newest" }
```

Sales jobs in Bogotá that pay at least COP 3,000,000 a month:

```json
{ "searchQueries": ["vendedor"], "locations": ["Bogotá"], "countries": ["co"], "minSalary": 3000000 }
```

A daily job alert: new nursing jobs in Santiago and Monterrey (schedule this input):

```json
{ "searchUrls": ["https://cl.computrabajo.com/trabajo-de-enfermera-en-santiago", "https://mx.computrabajo.com/trabajo-de-enfermera-en-monterrey"], "onlyNew": true, "watchName": "nursing-cl-mx" }
```

### Pricing

Pay per event:

- **Run start** - once per run that read Computrabajo: in a normal search, before the first job row is returned (so not charged when nothing passes your filters); in monitor mode, when a list was read and compared, also when nothing is new - that pays for the check. Never charged when nothing could be read or robots.txt does not allow the page.
- **Job returned** - per job row.
- **Job with details** - per job row with job page details (`includeJobDetails`), instead of Job returned. A row whose job page could not be read is charged as Job returned.
- **Monitoring check** - monitor mode only: per search that was read and compared and had no new job (a small fee, so a schedule that finds nothing new still pays for its checks). Not charged for a search that returned jobs, could not be read, or whose new jobs were already returned under another search of the same run.

Free rows are never charged. If you set a maximum total charge for a run, the run stops before it would go over it and says so; job pages are only read for rows that fit.

### Monitor mode, step by step

1. First run: reads the newest jobs of each search, returns up to `maxResultsPerSearch` as `first-check`, and remembers them as the starting point.
2. Later runs: read the list newest first until a whole results page, or 15 jobs in a row, are older than the previous check (at most 8 pages, the 160 newest). A job this watch has not seen is `new` only when the newest time its "Hace 3 horas" can mean is after the previous check; "Hoy" and "Ayer" are never read as "now". An older job that moves up the list, or appears for the first time, is remembered but not returned. Jobs that were not returned because of `maxResultsPerSearch` or the charge limit are returned first by the next run.
3. Nothing is judged from a page that could not be read (nothing returned, remembered or charged); the next run checks it again.
4. The memory is saved only after the rows are delivered and charged, so a job is remembered as returned only when you actually got it.

Within one run, a job found by two overlapping searches is returned once. Across runs, a job returned by a watch is remembered for 31 days for every search of that `watchName`, so rewriting a search (tracking parameters in the URL, an added `postedWithinDays`) does not return the same jobs again. The memory of one watch is one key-value store record, written only when something changed.

Keep one schedule per search and watch name. Two overlapping runs of the same watch can both return the same new job (the memory is a key-value store without transactions).

### Limits

- Computrabajo shows at most 50 results pages (1,000 jobs) for one search. For broad searches, add a city or split one search into several in the same run.
- A city search on Computrabajo also includes nearby towns: on 2026-10-21, 1 of the first 20 jobs for `Bogotá` was in Madrid, Cundinamarca. `location`, `city` and `region` say where each job is.
- Salaries are returned only when the employer posts one. On sites where `$` can mean more than one currency (Venezuela, Cuba), `salaryCurrency` is `null` and `salaryText` keeps what was written.
- Names in descriptions are recognised only after a title or a contact label (see above); a name written anywhere else in free text is not. Phone numbers, WhatsApp links and e-mail addresses are removed everywhere.
- If Computrabajo refuses datacenter IP addresses, pages are read over residential IP addresses in the site's country: up to 30 search pages and 60 job pages per run, and up to 3 search pages per monitor run.

### Support

Questions, a field you need, or a search that does not work: open an issue on the Issues tab of this Actor.

### Thanks for using this Actor

We build these tools for people who run them every day, and we improve them from what users tell us.

- **Missing a field, or need another filter?** Tell us in the **Issues** tab. If the data is there, we add it.
- **Found a bug or a wrong value?** Post the run ID in the **Issues** tab. Wrong data is the thing we fix first.

If this Actor saved you time, a short review helps other people find it.

# Actor input Schema

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

What you would type into the Computrabajo search box, for example ingeniero, vendedor, contador, desarrollador, enfermera, asesor comercial. Each keyword is searched in each location and country. An input left completely empty runs the example search: ingeniero on co.computrabajo.com (Colombia), and its rows say so. Filters alone (posted within, salary, remote, monitor mode, another country) without a job title, location or search URL are refused, nothing is searched or charged.

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

Optional. City or region, for example Bogotá, Medellín, Antioquia, Ciudad de México, Monterrey, Lima, Buenos Aires, Santiago, Quito. Empty = the whole country. Computrabajo answers a place it does not know with 0 jobs (a free row says so).

## `countries` (type: `array`):

Which Computrabajo country sites to search (19 countries). Every keyword and location is searched on every country you pick. Default: Colombia.

## `searchUrls` (type: `array`):

Optional. Computrabajo search result pages copied from your browser, for example https://co.computrabajo.com/trabajo-de-ingeniero-en-bogota-dc or https://mx.computrabajo.com/empleos-en-jalisco. Any of the 19 country sites. The Actor reads the following pages itself (?p=2, 3 ...).

## `remoteWork` (type: `string`):

Any (default), only jobs Computrabajo marks as remote (Remoto), only hybrid (Presencial y remoto), or either. With Remote only and no location, the Actor reads Computrabajo's own remote job list.

## `postedWithinDays` (type: `integer`):

Optional. Only jobs posted within this many days (1 to 30), as Computrabajo shows them (for example Hace 3 días).

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

Optional. Only jobs whose posted salary (the top of the range) is at least this amount, in the currency of that country's site as shown on the job (for example 3000000 for COP 3,000,000 a month in Colombia). Jobs without a posted salary are left out when this is set.

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

Most relevant first (default, the order of the Computrabajo search page) or newest first. Monitor mode always reads newest first.

## `includeJobDetails` (type: `boolean`):

On: for each job returned, also read its job page and add contract type, working hours, employment type, education, years of experience, skills, the posting and closing dates, the company logo and the full description (phone numbers, e-mails and contact names removed). Rows with job page details are charged as job-with-details instead of job-returned. If a job page cannot be read, the row is still returned as job-returned with detailsStatus saying why.

## `maxResultsPerSearch` (type: `integer`):

Most jobs returned for one search (1 to 1000, default 100). The Actor reads Computrabajo's results pages (20 jobs each) until it has this many jobs that pass your filters. In monitor mode it limits the new jobs returned per search in one run; the rest come first in the next run.

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

On: every run reads the newest jobs of each search and returns only jobs posted since the previous check (changeType new); jobs this watch already returned are not returned again, also when the search is written differently. The first run returns the current jobs (changeType first-check, up to Max jobs per search) and remembers them as the starting point. Each run that reads the list is charged the run start fee, and each search with nothing new a small monitoring check; such searches return a free row saying so.

## `watchName` (type: `string`):

Optional. Keeps separate memories for monitor mode, for example one per client (letters, digits, dot, dash, underscore; up to 40). Runs with the same watch name and the same search share what has already been returned.

## `resetMonitoringState` (type: `boolean`):

On: forget what this watch has seen for these searches before running, so this run is a first check again.

## Actor input object example

```json
{
  "searchQueries": [
    "ingeniero"
  ],
  "locations": [
    "Bogotá"
  ],
  "countries": [
    "co"
  ],
  "remoteWork": "any",
  "sortBy": "relevance",
  "includeJobDetails": false,
  "maxResultsPerSearch": 100,
  "onlyNew": false,
  "resetMonitoringState": false
}
```

# Actor output Schema

## `results` (type: `string`):

One row per Computrabajo job: job ID, title, company with its star rating, location split into city and region, country, remote or hybrid, salary as numbers with currency and period, posted date, urgent and featured flags, link and position in the search. With job page details: contract type, working hours, education, years of experience, skills and the full description (phone numbers, e-mails and contact names removed). Monitor mode marks rows first-check or new. A search with no jobs, nothing new, a page robots.txt does not allow, a refused request or a run that hit its maximum charge comes back as a free row that says why.

# 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 = {
    "searchQueries": [
        "ingeniero"
    ],
    "locations": [
        "Bogotá"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neverempty/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 = {
    "searchQueries": ["ingeniero"],
    "locations": ["Bogotá"],
}

# Run the Actor and wait for it to finish
run = client.actor("neverempty/computrabajo-jobs-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 '{
  "searchQueries": [
    "ingeniero"
  ],
  "locations": [
    "Bogotá"
  ]
}' |
apify call neverempty/computrabajo-jobs-scraper --silent --output-dataset

```

## MCP server setup

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