Infojobs Jobs Search Scraper
Pricing
from $2.99 / 1,000 infojobs job records
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
Maintained by CommunityActor 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 tomaxItems.
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
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search, single, or multiple. |
query | string | desarrollador | Search phrase; used in search mode. |
keywords | string | - | Legacy-compatible search phrase alias; query takes precedence when both are non-empty. |
location | string | Madrid | Province/location search input and location filter. |
jobUrl, directUrl, startUrl | string | - | Single official job URL aliases. |
jobUrls, directUrls, startUrls | string[] | - | Arrays of official job URL aliases; duplicate URLs are removed and at most 100 URLs are accepted. |
maxItems | integer | 3 | Maximum complete records to emit, from 1 to 100; applies across direct URLs. |
maxPages | integer | 1 | Maximum search pages, from 1 to 10; used only in search mode. |
requestTimeoutSecs | integer | 15 | Timeout per ordinary direct public request, from 5 to 60 seconds. |
experienceLevel | string | empty | Optional filter: entry, mid, senior, or executive. |
salaryMin, salaryMax | number | - | Optional non-negative EUR salary bounds; when both are supplied, minimum must not exceed maximum. |
remoteFilter | string | empty | Optional work-arrangement filter: remote, hybrid, or onsite. |
educationLevel | string | empty | Optional 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-scriptsnpm testapify 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 = $runStoreapify 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.