Computrabajo Jobs Scraper avatar

Computrabajo Jobs Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Computrabajo Jobs Scraper

Computrabajo Jobs Scraper

Scrape job listings from Computrabajo Mexico: titles, companies, locations, salaries, and posting dates.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Danilo Frias

Danilo Frias

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Scrapes public job listings from Computrabajo Mexico (mx.computrabajo.com) without any login. Each run returns structured job records: title, company, location, salary text, canonical job URL, relative posted date, and a description snippet field.

Who would use it: labor-market researchers, recruiters doing competitive benchmarking, job aggregators, and analysts tracking salary ranges or hiring volume by city/keyword in Mexico. The output is a clean, typed dataset pushed to the Apify dataset via Actor.push_data.

Inputs

FieldTypeDefaultDescription
search_querystring""Job keyword, e.g. "contador", "vendedor". When set, listing URLs are built as /trabajo-de-<query>[-en-<location>], mirroring the site's own search box. Accents and casing are normalized ("Atención a clientes" becomes atencion-a-clientes).
locationstring"Mexico"Place to search in, e.g. "Ciudad de Mexico", "Guadalajara". With no search query this builds /empleos-en-<location>. The generic value "Mexico" falls back to the default start_urls.
start_urlsarray of strings3 verified city pages (Ciudad de Mexico, Guadalajara, Monterrey)Explicit Computrabajo listing pages to scrape. When empty, URLs are built from search_query/location as described above.
max_itemsinteger50Maximum number of unique job listings to return (1-2000). The actor paginates each start URL (?p=2, ?p=3, ...) until this many is reached.

Sample output record

{
"title": "Auxiliar contable",
"company": "YUBZAVA SERVICIOS INTEGRALES",
"location": "Cuauhtémoc, Ciudad de México DF",
"salary_text": "$ 12,000.00 (Mensual)",
"job_url": "https://mx.computrabajo.com/ofertas-de-trabajo/oferta-de-trabajo-de-auxiliar-contable-presencial-en-cuauhtemoc-800D807A4C273BF561373E686DCF3405",
"posted_date": "Hace 1 hora",
"description_snippet": null
}

Field notes:

  • salary_text is null when the listing shows no salary (common).
  • posted_date is the site's relative label as shown (e.g. "Hace 1 hora", "Hace 3 días"), not normalized to a timestamp.
  • description_snippet is currently null: listing cards carry no description text, and detail pages are not fetched. Listings that hide the employer show "Importante empresa del sector" as company.

Coverage and limits

  • Pagination: ~20 cards per page. The actor follows the site's own "Siguiente" link (span.buildLink[data-path]), falling back to ?p=N. Deduplication is by job_url, so repeated/sponsored cards don't inflate counts.
  • Rate limiting: ~1 request/second between page fetches, with a normal desktop browser User-Agent and browser-like headers. No concurrency.
  • Blocks: if a page redirects to a login wall, serves a CAPTCHA, or returns 401/403/429, the actor logs the URL, status code, and redirect target and moves on to the next start URL. It never attempts to solve CAPTCHAs or log in.
  • Scope: Mexico site (mx.computrabajo.com) listing pages only. The /ofertas-de-trabajo/ bare path redirects to the homepage, and /empleos-en-mexico is a geolocation-gated SEO page with no cards, so neither is used as a default.

Data rules

  • Public pages only. Logged-out scraping of public search-result pages. No login flows, no session cookies, no CAPTCHA solving, no proxy services.
  • No personal data. Job listings show company names (businesses, fine), but the scraper deliberately never parses recruiter names, emails, or phone numbers, and it never opens job-detail or application pages where personal contacts could appear.

Local run

# write input, then run from this directory
mkdir -p storage/key_value_stores/default
cat > storage/key_value_stores/default/INPUT.json <<'EOF'
{"search_query": "", "location": "Mexico", "start_urls": [], "max_items": 50}
EOF
python main.py

Results land in storage/datasets/default/ (one JSON file per record).