InfoJobs Spain Jobs — Ofertas, company & city avatar

InfoJobs Spain Jobs — Ofertas, company & city

Pricing

from $2.00 / 1,000 jobs

Go to Apify Store
InfoJobs Spain Jobs — Ofertas, company & city

InfoJobs Spain Jobs — Ofertas, company & city

Scrape InfoJobs Spain jobs from infojobs.net: title, company, city, contract, teleworking and offer URL. Salary only when InfoJobs publishes it on the card. Search URLs or keyword + geo. HTTP export, not a multi-board dump.

Pricing

from $2.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Noah Adler

Noah Adler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Share

InfoJobs Spain Jobs — InfoJobs scraper for ofertas

InfoJobs scraper for Spain’s #1 job board (infojobs.net). Export InfoJobs ofertas and InfoJobs Spain jobs as one clean Dataset row per listing: title, company, city, contract, teleworking, salary when published, offer URL.

HTTP-only (no Playwright): the public search page hydrates window.__INITIAL_PROPS__ with structured offers[]. Use Store-like search URLs or keyword + geo. Built as an InfoJobs API-style export for empleo Spain scraper workflows — not a bloated Indeed/LinkedIn multi-board.

InfoJobs returns ~22 ofertas per search page (code, title, description, city, companyName, companyLink, contractType, workday, teleworking, publishedAt, link). This Actor paginates with ?page=N until maxItems. ES residential proxy is optional locally; enable it on Apify if you hit 403/captcha.

Why this Actor: Clean schema · company + salary when the card has them · search URLs you can paste from the site · cheap PPE per Job · no Playwright · no email-harvesting claims

Store icon: official InfoJobs mark (see Actor icon in Console).


Table of contents

  1. What this Actor does
  2. What you get
  3. Features
  4. Input
  5. Output example
  6. Output fields
  7. Quick start (API)
  8. Use cases
  9. Limitations
  10. FAQ
  11. Keywords

What this Actor does

StepAction
1Accept searchUrls and/or keyword + geo + maxItems
2Map geo (Madrid, Barcelona, …) to InfoJobs provinceIds when known
3GET the search HTML (list.xhtml or your pasted URL)
4Parse window.__INITIAL_PROPS__ → offers[]
5Map each oferta → Dataset row (title, companyName, city, url, …)
6Paginate ?page=N until maxItems or an empty page

Input: InfoJobs search URLs, keyword, geo, max items, proxy.
Output: one Dataset row per job.


What you get

Job

  • title, description, offerId
  • city, contractType, workday, teleworking

Company / pay

  • companyName, companyUrl, companyLogoUrl
  • salary when InfoJobs shows it on the card (otherwise null)

Links / meta

  • url (absolute https://www.infojobs.net/…)
  • publishedAt, keyword, geo, searchUrl, scrapedAt

Features

CapabilityDetail
Search URLsPaste the same InfoJobs search you use in the browser
Keyword + geoe.g. python in Madrid → provinceIds=33
No browsercurl_cffi impersonate chrome124 + browserforge headers
Hydrated JSON__INITIAL_PROPS__ offers — no CSS card scraping
Proxy-awareApify RESIDENTIAL + ES if antibot kicks in
PPE-friendlyOne Job event per row — cheaper volume than a $3/1k blob

Input

FieldRequiredDescription
searchUrlsNo*infojobs.net search pages only (Indeed/LinkedIn rejected)
keywordNo*e.g. python, comercial, enfermero
geoNoCity or province (Madrid, Barcelona, Valencia)
maxItemsNoCap (default 40, max 500)
proxyConfigurationNoDefault RESIDENTIAL + ES on Store Try it

*Provide searchUrls and/or keyword (geo optional).

Example — keyword + Madrid

{
"keyword": "python",
"geo": "Madrid",
"maxItems": 20,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "ES"
}
}

Example — paste an InfoJobs search URL

{
"searchUrls": [
"https://www.infojobs.net/jobsearch/search-results/list.xhtml?keyword=python&provinceIds=33"
],
"maxItems": 40
}

Output example

{
"title": "Desarrollador Senior Python (Híbrido)",
"description": "Como Desarrollador Senior Python, formarás parte de un equipo ágil…",
"companyName": "DEVOTEAM",
"companyUrl": "https://devoteam.ofertas-trabajo.infojobs.net",
"city": "Madrid",
"contractType": "Contrato indefinido",
"workday": "Jornada completa",
"teleworking": "Híbrido",
"salary": null,
"publishedAt": "2026-09-17T08:16:28Z",
"url": "https://www.infojobs.net/madrid/desarrollador-senior-python-hibrido/of-i694a872eb84b0ba839fa86d91335d9",
"offerId": "694a872eb84b0ba839fa86d91335d9",
"keyword": "python",
"geo": "Madrid",
"scrapedAt": "2026-09-24T16:00:00Z",
"error": false,
"errorMessage": null
}

Output fields

FieldNotes
title, companyNameMust differ — title is the role, not the employer
cityCity label from the card (not a salary string)
urlAbsolute InfoJobs offer link (code in the path)
salaryPresent only when InfoJobs publishes pay on the listing
descriptionCard/teaser text from offers[] (not a second detail crawl)
error, errorMessageHard failure vs empty search

Quick start (API)

curl "https://api.apify.com/v2/acts/noahadler~infojobs-spain-jobs/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keyword": "python",
"geo": "Madrid",
"maxItems": 20
}'

Then fetch the default Dataset items URL from the run object. Schedule it for daily InfoJobs ofertas monitoring.


Use cases

  • Recruiters tracking open InfoJobs Spain jobs by skill and city.
  • Salary / contract research when listings show salary, contractType, teleworking.
  • Lead gen without spam claims — company name + company URL + offer URL (no email scrape).
  • Empleo Spain scraper pipelines that already pull Fotocasa/Wallapop-style ES portals.
  • Challenger export vs a generic $3/1k InfoJobs actor when you want a predictable schema.

Limitations

  • Public search-list fields only — does not open every JD apply form.
  • Does not harvest emails, phones, or CVs.
  • salary is often missing on InfoJobs cards (“Salario no disponible”).
  • Structure depends on __INITIAL_PROPS__; a front-end rewrite may need an Actor update.
  • 403/captcha → use Apify RESIDENTIAL + ES. After repeated WAF, the run fails honestly (no fake rows).
  • Spain InfoJobs only (infojobs.net). Not InfoJobs Brasil, Indeed, or LinkedIn.

FAQ

Do I need Playwright?
No. v0.1 is HTTP + Chrome TLS impersonation against the public search HTML.

Can I paste the URL from my browser?
Yes. searchUrls must be infojobs.net search pages.

What does geo=Madrid do?
It sets provinceIds=33 (InfoJobs Madrid). Barcelona is 9, Valencia 49, Sevilla 43, etc.

Why is salary null?
Many InfoJobs ofertas hide pay. The field is filled only when the hydrated JSON includes it.

What happens on hard failure?
One Dataset row with error: true and an actionable errorMessage (often “enable RESIDENTIAL + ES”).


Keywords

infojobs scraper, infojobs ofertas, infojobs spain jobs, infojobs api, empleo spain scraper, infojobs.net jobs, Madrid ofertas, Barcelona empleo, job listings Spain, recruiting lead generation, Apify Actor jobs