OCC.com.mx Jobs Scraper avatar

OCC.com.mx Jobs Scraper

Under maintenance

Pricing

from $4.85 / 1,000 listings

Go to Apify Store
OCC.com.mx Jobs Scraper

OCC.com.mx Jobs Scraper

Under maintenance

Scrapes job listings from OCC.com.mx, Mexico's leading job board. Extracts job titles, companies, locations, salaries, and descriptions for lead generation and market research.

Pricing

from $4.85 / 1,000 listings

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Apify Actor that scrapes job listings from OCC.com.mx and emits normalized job records.

What it extracts

The actor collects job postings from OCC.com.mx search results and, when detail fetching is enabled, enriches each item from the job detail page. Data is read from server-rendered HTML and JobPosting JSON-LD. No headless browser is used.

Typical extracted information includes job identity and URL, titles and descriptions, employer information, location, contract and employment types, salary when present, posting age/dates, and source metadata. Field availability depends on what the site actually returns for each listing.

Proxy behavior (mandatory)

This actor is configured for residential Mexico proxy usage. Requests are made through the Apify proxy with a residential Mexico geo-preference so that search and detail pages are served in the expected regional context. Provide a valid proxyConfiguration (see Inputs). Running without a suitable residential Mexico proxy is not supported for reliable operation.

Input example

{
"searchQuery": "desarrollador",
"maxResults": 50,
"fetchDetails": true,
"contractType": "",
"employmentType": "",
"city": "Ciudad de México",
"state": "CDMX",
"minSalary": 0,
"daysOld": 30,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "MX"
}
}

Inputs

FieldTypeRequiredDescription
searchQuerystringYesKeyword or phrase used in the OCC.com.mx job search.
maxResultsintegerNoMaximum number of job records to emit. Pagination stops when this limit is reached or when no further result pages are available (see also the pagination safety ceiling below).
fetchDetailsbooleanNoWhen true, the actor requests each job detail page and merges detail-level fields into the output. When false, no detail requests are made; the actor emits only honest minimal records (ID, URL, source, and timestamp). Filters that depend on detail-only fields cannot match those minimal records.
contractTypestringNoClient-side filter on contract type (e.g. values consistent with OCC labels). Empty or omitted means no filter on this field.
employmentTypestringNoClient-side filter on employment type. Empty or omitted means no filter on this field.
citystringNoClient-side filter on city / locality. Empty or omitted means no filter on this field.
statestringNoClient-side filter on state / region. Empty or omitted means no filter on this field.
minSalarynumberNoClient-side minimum salary threshold. Listings without a visible numeric salary do not satisfy a positive minSalary filter. Use 0 or omit to disable.
daysOldintegerNoClient-side recency filter: only emit jobs considered at most this many days old when a usable date/age signal exists. Omit or use a non-restrictive value to disable.
proxyConfigurationobjectYesApify proxy configuration. Residential Mexico proxying is required (useApifyProxy: true, residential group, country MX as in the example).

fetchDetails=false and filters

With fetchDetails=false, each emitted dataset record is limited to minimal identity and provenance fields (job id, URL, source, timestamps). Optional detail fields are not invented. Any input filter that requires detail-level data (for example salary, full location breakdown, contract/employment type from the detail page, or rich description text) will not match those minimal records, so matching results may be empty even when search hits exist. Use fetchDetails=true when you need detail fields or detail-dependent filters.

Output

Each dataset item is one normalized job record. Fields below are emitted when present in the parsed HTML/JSON-LD. Optional fields may be absent when the source page does not provide them.

FieldDescription
idJob identifier as exposed by OCC.
urlCanonical or listing URL for the job.
titleJob title.
descriptionJob description text when available (typically from detail/JSON-LD).
companyEmployer / company name.
companyIdEmployer identifier when present.
cityCity or locality.
stateState or region.
locationCombined or raw location string when provided.
countryCountry when present (commonly Mexico for this source).
contractTypeContract type label when present.
employmentTypeEmployment type label when present.
salaryMinNumeric minimum salary when parseable.
salaryMaxNumeric maximum salary when parseable.
salarySalary value or range summary when available.
salaryCurrencyCurrency code or symbol when available.
salaryVisibleBoolean: true when a real salary is shown; false when pay is hidden or not disclosed.
datePostedPosted date when available.
validThroughExpiry / valid-through date when available.
daysOldAge in days when it can be derived from source signals.
sourceSource marker for the actor / site.
scrapedAtISO timestamp when the record was processed.
jsonLdParsed JobPosting JSON-LD object when present on the page.

Salary and location notes

  • Hidden or undisclosed salaries remain numeric zero (salaryMin / salaryMax / equivalent numeric salary fields as applicable) with salaryVisible: false. The actor does not fabricate pay bands.
  • No coordinates are invented. Latitude/longitude are only emitted if explicitly present in the source data; otherwise they are omitted.
  • Optional fields are omitted rather than filled with guesswork when fixtures/pages do not support them.

Client-side filter behavior

Search results are retrieved from OCC; refinement filters supplied in input (contractType, employmentType, city, state, minSalary, daysOld, and similar) are applied client-side on the normalized records after parse (and after detail merge when fetchDetails is true). Listings that lack the fields required to evaluate a filter are treated as non-matches for that filter. This keeps filtering consistent with honest extraction rather than over-claiming server-side filter parity.

Retries and response quality

Transient HTTP and network failures are handled with bounded retries and conservative backoff. Responses are checked at a high level for usable HTML/JSON-LD before parsing. Empty, clearly blocked, or non-job pages are not turned into fake listings. The actor does not claim Cloudflare bypass or anti-bot evasion beyond normal proxy-backed HTTP access to server-rendered pages.

Pagination safety

Result pages are followed while results remain available and maxResults has not been reached. Pagination includes a hard safety ceiling on the maximum number of pages/requests so runaway crawls cannot continue indefinitely if the site returns ambiguous “next page” signals.

Pricing (PPE)

Pay-per-event billing uses exactly one job-record event per emitted dataset record. You are charged for jobs successfully written to the dataset, not for intermediate search hits discarded by filters or failed detail downloads that produce no record.

Limitations

  • Relies on server-rendered HTML and JobPosting JSON-LD as returned for the session; layout or schema changes on OCC.com.mx can reduce field coverage.
  • No browser: content that appears only after client-side rendering and is absent from HTML/JSON-LD will not appear in output.
  • Residential Mexico proxy use is mandatory for expected behavior; other proxy setups may yield incomplete or region-mismatched pages.
  • With fetchDetails=false, output is minimal (id/URL/source/timestamp); detail-dependent filters will not match those records.
  • Salaries may be hidden; hidden pay is represented as numeric zero with salaryVisible: false, not as estimated market rates.
  • Geocoding is not performed; coordinates are never invented.
  • Completeness is not guaranteed: caps (maxResults, pagination safety ceiling), filters, and site availability all limit what is emitted.
  • This README does not claim live verification against production OCC at any particular time; behavior is defined by the actor implementation and its fixtures/tests.
  • Does not support fields that are not present in the actor’s fixtures and parsers; unsupported attributes are not promised.

Ethics and compliance

Use this actor responsibly and in accordance with OCC.com.mx terms of use, applicable law, and Apify platform policies. Respect rate limits and personal data obligations when processing employer or listing content.