Infojobs Jobs Search Scraper avatar

Infojobs Jobs Search Scraper

Pricing

from $2.99 / 1,000 infojobs job records

Go to Apify Store
Infojobs Jobs Search Scraper

Infojobs Jobs Search Scraper

Scrape job listings from Infojobs.net, a leading job platform in Spain and Latin America. Extract job titles, companies, locations, contract types, salary ranges, and experience requirements.

Pricing

from $2.99 / 1,000 infojobs job records

Rating

0.0

(0)

Developer

Jobs API

Jobs API

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

Categories

Share

Extract rich, detail-verified public vacancies from InfoJobs Spain using ordinary direct HTTPS access to public pages. The Actor discovers public offers or fetches exact offer URLs, verifies canonical identity, parses full detail pages, and emits only complete job records.

Modes

  • search: discover offers from a bounded keyword/location search and enrich their details.
  • single: fetch one exact official offer URL.
  • multiple: fetch up to 100 exact official offer URLs, subject to maxItems.

jobUrl, directUrl, startUrl, jobUrls, directUrls, and startUrls are supported direct-URL aliases. When mode is omitted, one unique URL selects single and multiple unique URLs select multiple; an explicitly supplied mode takes precedence. Aliases are combined and duplicate URLs are removed. Direct URLs must use HTTPS on www.infojobs.net and end in an official /of-<id> route.

Input

FieldTypeDefaultDescription
modestringsearchsearch, single, or multiple.
querystringdesarrolladorSearch phrase; used in search mode.
keywordsstring-Legacy-compatible search phrase alias; query takes precedence when both are non-empty.
locationstringMadridProvince/location search input and location filter.
jobUrl, directUrl, startUrlstring-Single official job URL aliases.
jobUrls, directUrls, startUrlsstring[]-Arrays of official job URL aliases; duplicate URLs are removed and at most 100 URLs are accepted.
maxItemsinteger3Maximum complete records to emit, from 1 to 100; applies across direct URLs.
maxPagesinteger1Maximum search pages, from 1 to 10; used only in search mode.
requestTimeoutSecsinteger15Timeout per ordinary direct public request, from 5 to 60 seconds.
experienceLevelstringemptyOptional filter: entry, mid, senior, or executive.
salaryMin, salaryMaxnumber-Optional non-negative EUR salary bounds; when both are supplied, minimum must not exceed maximum.
remoteFilterstringemptyOptional work-arrangement filter: remote, hybrid, or onsite.
educationLevelstringemptyOptional filter: high_school, associate, bachelor, master, or doctorate.
{
"mode": "search",
"query": "desarrollador",
"location": "Madrid",
"maxItems": 3,
"maxPages": 2,
"requestTimeoutSecs": 15
}

Filter example:

{
"mode": "search",
"query": "desarrollador",
"location": "Madrid",
"maxItems": 3,
"maxPages": 1,
"salaryMin": 30000,
"remoteFilter": "hybrid",
"experienceLevel": "mid"
}

Single and multiple detail examples are also available in INPUT-single.json and INPUT-multiple.json.

Output and quality

Each dataset row includes stable job identity, canonical URLs, title, company and ratings, location, work arrangement, salary, employment and experience, requirements, education, category, sectioned description, truthful apply controls, listing provenance, request receipts, field coverage, and runtime metadata.

Rows are written only after title, company, location, substantial description, canonical URL, and offer ID are verified. Partial search or multiple runs preserve complete records and report diagnostics in OUTPUT_SUMMARY, RUN_HEALTH, RUN_DIAGNOSTICS, and RUN_SKIPS. status reports the platform lifecycle (SUCCEEDED or FAILED); resultStatus separately reports COMPLETE, LIMITED, SKIPPED, DEFERRED, NO_DATA, or FAILED. Row counts include only successful dataset writes. A fatal non-block failure with no stored rows calls Actor.fail(); previously stored rows remain SUCCEEDED/LIMITED after a later non-block failure. The dataset validator rejects empty, duplicate, placeholder, unofficial, or schema-invalid data.

Public access and failure policy

Use ordinary direct HTTPS requests to publicly available InfoJobs pages only. Do not use a proxy, retry a blocked request, change headers, cookies, sessions, fingerprints, or identity, switch to another route or browser to get around a denial, or solve a CAPTCHA or verification challenge.

If the public route returns HTTP 401, 403, 429, or 451, or shows a source-authored access-denial, security challenge, CAPTCHA, or human-verification page, stop requests to that site immediately. Finish the platform run as SUCCEEDED with resultStatus: SKIPPED, discard all buffered rows, and preserve the exact status, diagnostic, and request receipts. Do not retry the blocked request or try another access path.

A generic browser-controller refusal, HTTP 405/407/408 or 5xx response, redirect, or network/transport failure without source-authored denial is not proof that InfoJobs blocked access. Mark the result DEFERRED (or LIMITED if verified rows were stored first) and preserve the evidence; do not retry or work around it by changing methods, routes, browsers, headers, proxies, or identities. A confirmed no-match search is SUCCEEDED/NO_DATA; parser/extraction failures with zero stored rows are FAILED/FAILED.

Local use

npm install --ignore-scripts
npm test
apify validate-schema

For a local Actor run on Windows PowerShell, choose a new relative storage directory for each run, verify that it does not already exist, and use --resurrect:

$runStamp = Get-Date -Format 'yyyyMMdd-HHmmss-fff'
$runStore = ".\storage-infojobs-$runStamp"
if (Test-Path $runStore) { throw 'Choose a new, unused local storage directory.' }
$env:APIFY_LOCAL_STORAGE_DIR = $runStore
apify run --resurrect --input-file INPUT.json

Never use --purge or reuse an existing store; both can destroy or mix local Actor data. Inspect the dataset and run summary in the isolated store after the run. Keep limits bounded and collect only public job data. Respect InfoJobs terms, robots directives, and applicable privacy and employment laws. Do not automate applications or collect candidate data.