InfoJobs Spain Jobs Scraper avatar

InfoJobs Spain Jobs Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
InfoJobs Spain Jobs Scraper

InfoJobs Spain Jobs Scraper

Scrape job listings from InfoJobs.net (Spain) with titles, companies, descriptions, contract types, salaries, locations, and more. HTTP-only via embedded search JSON.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(6)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

6

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Scrape job listings from InfoJobs.net — Spain's largest job board — including titles, companies, descriptions, contract types, salaries, locations, and more.

Output (per job)

  • type = job_infojobs
  • id (of-xxx), jobId (bare code without prefix), url
  • title
  • descriptionHtml, descriptionText
  • companyName, companyLogo, companyUrl
  • companySector, companySize (when present on the detail page)
  • city, province, country
  • contractType, workday, teleworking, remoteType (canonical: presencial / hibrido / teletrabajo)
  • experienceMin, studyLevel, yearsOfContractExperience
  • category, subcategory
  • salary, salaryMin, salaryMax, salaryPeriod, salaryType, salaryCurrency
  • skills, languages, benefits, processPhase (lists, when the detail page advertises them)
  • vacancies, applicationsCount / applicantCount
  • postedAt, closingDate / expiresAt
  • externalId (source reference / offer code used by the employer)
  • isPromoted, isExecutive, isVisibleToCompany, promotions, states
  • scrapedAt

Fields are only included when a non-empty value is available — so datasets never contain nulls. If a run extracts zero jobs (for example, a bad URL or an aggressive anti-bot block), a single job_infojobs_blocked sentinel record is emitted so the dataset is never empty.

Input

FieldTypeDescription
searchUrlsstring[]InfoJobs search URLs, or direct job detail URLs (…/of-<id>). Default: https://www.infojobs.net/jobsearch/search-results/list.xhtml?keyword=python.
keywordstringFallback keyword used to build a search URL when searchUrls is empty.
provincestringClient-side filter on the parsed city / province field (e.g. Madrid, Barcelona).
categorystringExtra keyword appended as &category= when a search URL is synthesised.
contractTypeenumany / indefinido / temporal / practicas / autonomo / otros.
workdayenumany / completa / parcial / indiferente.
teleworkingenumany / presencial / hibrido / teletrabajo.
maxItemsintegerMaximum jobs per run. Default 3.
proxyConfigurationobjectApify proxy. Datacenter recommended; residential helps when Distil blocks the IP.

How it works

  1. The actor fetches the listing URL with curl_cffi (chrome131 TLS impersonation) and parses the embedded window.__INITIAL_PROPS__ JSON blob.
  2. Each offer record already exposes title, description, city, company, contract type, workday, teleworking, salary, and posting date.
  3. Each job's detail page is then fetched best-effort to pick up experienceMin, studyLevel, category, subcategory, province, and applicationsCount — listings stay in the dataset even when the detail fetch is blocked.
  4. Client-side filters (contractType / workday / teleworking / province) run on the parsed Spanish labels.

FAQ

Do I need a proxy? Not strictly — InfoJobs often serves a 200 on the search page from datacenter IPs. When you see a captcha interstitial, switch the proxy group to residential.

Does it scrape beyond Spain? InfoJobs is a Spain-only platform — every posting is tagged country = "Spain".

Why do some fields disappear? Fields are omitted when empty rather than returned as null, so your dataset is always clean. Detail-page-only fields (experienceMin, studyLevel, category, subcategory, skills, languages, benefits, vacancies, processPhase, closingDate, externalId, companySector, companySize, applicationsCount) depend on the detail page being reachable; listing-level fields (title, company, salary, contract, city, remoteType, isPromoted, etc.) are always present when a job is returned.

What's the job_infojobs_blocked sentinel? A single row emitted when zero jobs were extracted — useful to tell the difference between "no results" and "scraper failed silently".