InfoJobs Scraper - Spain Jobs, Salaries & Companies
Pricing
from $1.65 / 1,000 job offers
InfoJobs Scraper - Spain Jobs, Salaries & Companies
Scrape InfoJobs.net, Spain’s largest job board: title, company, city, salary range, contract, workday, remote/hybrid mode, publication date and the full description. Filter by keyword, province, category, contract and remote mode. Optional enrichment adds skills and applicant counts.
Pricing
from $1.65 / 1,000 job offers
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape InfoJobs.net, Spain's largest job board - roughly 57,000 live offers at any moment - into a clean, structured dataset. Every row is one job offer with the hiring company, the city, the contract and workday, whether the role is remote, hybrid or on-site, a structured salary range, the exact publication timestamp and the full offer description.
No login, no cookies, no browser, no API key. InfoJobs renders its results server-side and ships them as structured data, so this actor reads a real data structure rather than guessing at CSS classes - which is why the fields below come back complete instead of half-empty.
Why this InfoJobs scraper?
- Structured salary, not a text blob.
salaryMin,salaryMax,salaryPeriod,salaryCurrencyandsalaryType(gross/net) as separate numeric columns, so you can sort, average and chart pay without parsing anything. About three quarters of InfoJobs offers publish a range. - The full description on every row, free. InfoJobs ships the complete offer text with each search result, so you get it without a second request and without a second charge.
- Remote work as a first-class field.
remoteModenormalises InfoJobs' Spanish labels toremote/hybrid/on-site, plusisRemote,isHybridandisOnSitebooleans for one-click filtering. - Real pick-lists, not free text. Provinces, categories, contract types, workdays, remote modes, education levels and countries are all dropdowns built from InfoJobs' own live facet lists, so a typo is impossible and a filter can never silently fail to apply.
- Optional deep enrichment adds required skills, sector, minimum education and experience, vacancies, social benefits, how many people have already applied, and the company's star rating.
- Monitor mode returns only offers that are new since your last run - a clean feed of fresh jobs for a CRM, an alert, or a market tracker.
Use cases
- Recruitment & staffing - track competitor postings, spot companies hiring in bulk, build candidate-facing job feeds.
- Salary benchmarking - real published ranges by role, city, contract and seniority across the whole Spanish market.
- Lead generation - a company posting five roles this month is growing and buying.
companyName+companyUrl+ city on every row. - Labour-market research - remote-vs-office split, contract mix, education requirements and hiring volume by province or sector.
- Job aggregators & AI agents - a structured, machine-readable feed of Spain's biggest board.
How to use
- Type one or more search terms (
desarrollador,enfermera,comercial...), or paste InfoJobs search URLs straight from your browser, or just set filters and leave the search empty to sweep a whole category. - Narrow it with the province, category, contract, workday, remote-mode and education pick-lists.
- Set Maximum offers to return and run. Results stream into the dataset as each page is read.
Input
{"searchQueries": ["desarrollador"],"provinces": ["33"],"remoteModes": ["2"],"postedWithin": "_7_DAYS","withSalaryOnly": true,"sortBy": "PUBLICATION_DATE","maxResults": 200}
Everything is optional and combines with AND:
- searchQueries - one term per line; each is searched separately and results are merged and de-duplicated.
- startUrls / urlsFromFile - paste InfoJobs search URLs (every filter already in the URL is kept) or single offer URLs. You can type them, upload a file, or link a remote
.txt/.csv/ Google Sheet. - provinces - 110 pick-list options, ordered by how many offers each currently holds.
- cities - exact city names, applied after the search (InfoJobs itself filters by province).
- categories (21) - InfoJobs' own job families.
- contractTypes (8), workdayTypes (10), educationLevels (19), countries (27) - all pick-lists.
- remoteModes -
Presencial(on-site),Híbrido(hybrid),Solo teletrabajo(fully remote),Sin especificar. - executiveOnly - InfoJobs' Executive segment only: senior and management roles.
- postedWithin -
ANY, last24 hours,7 daysor15 days. These are the only windows InfoJobs supports, so they are a dropdown: an invalid value is rejected before the run starts instead of quietly returning nothing. - minSalary / maxSalary / withSalaryOnly - filter on the published range.
- titleQuery / companyNameQuery / excludeKeywords / maxDaysOld - tighten a broad search without re-running it.
- includeDescription (on by default), includeDetails + maxDetailRecords - see below.
- monitorMode / monitorKey, maxResults, proxyConfiguration.
Tip: run with no search term and no URL and you get a small 25-offer sample rather than a full-price bulk pull, so an exploratory or agent-issued call is never an expensive surprise.
Output
Every row is one job offer. The dataset ships four ready-made views: Job offers, Offers with salary, Remote & hybrid, and Newest first.
{"recordType": "jobOffer","offerId": "aed96d7df74a10ace0200f866b2869","title": "Java Senior Developer - IA Generativa (Sector Seguros)","url": "https://www.infojobs.net/barcelona/java-senior-developer-ia-generativa-sector-seguros/of-iaed96d7df74a10ace0200f866b2869","companyName": "Arestes","companyUrl": "https://arestes.ofertas-trabajo.infojobs.net","companyLogo": "https://multimedia-logos.infojobs.net/image/upload/f2/f21ca57b-...","city": "Barcelona","country": "ES","teleworking": "Híbrido","remoteMode": "hybrid","isRemote": false,"isHybrid": true,"isOnSite": false,"contractType": "Contrato indefinido","workday": "Jornada completa","salaryMin": 44000,"salaryMax": 50000,"salaryPeriod": "year","salaryCurrency": "EUR","salaryType": "gross","salaryText": "44,000 - 50,000 EUR / year (gross)","hasSalary": true,"publishedAt": "2026-08-28T12:30:05.000Z","daysSincePublished": 3,"isExecutive": false,"badges": ["REUSED"],"isFeatured": true,"description": "…the full offer text…","descriptionLength": 1885,"searchKeyword": "desarrollador","resultPage": 1,"scrapedAt": "2026-08-31T21:11:05.036Z"}
Deep enrichment - includeDetails
Turn it on and each matched offer's own page is fetched and merged in, adding up to 19 more fields:
province · provinceId · category · subcategory · sector · jobLevel · department · minimumEducation · minimumExperience · minimumRequirements · desiredRequirements · skills[] · requiredLanguages[] · socialBenefits[] · vacancies · directReports · contractDuration · applicantsCount (how many candidates have already applied - a direct competition signal) · companyRating and companyRatingCount · normalizedJobTitle.
It costs one extra request and one extra event per offer, and maxDetailRecords caps how many are enriched so a big search cannot become a big bill by accident.
What to expect (field coverage)
Measured on a live run (search desarrollador, 25 newest offers, 2026-08-31):
| Field group | Coverage |
|---|---|
| Title, URL, company, company page, city, contract, workday, remote mode, published date, description | 100% |
| Company logo | 96% |
| Salary range (min/max/period/currency/gross-net) | 56-64% |
Enrichment fields (with includeDetails) | present when InfoJobs publishes them; skills, category, province, applicantsCount and companyRating were on 100% of enriched offers |
A blank salary means the employer chose not to publish one - roughly a quarter of offers - not that scraping failed. Use withSalaryOnly to drop them.
Monitor mode - only newly posted jobs
Turn on monitorMode and the actor remembers every offer it has already returned (in a named key-value store) and, on the next run, emits only offers that are new, each tagged monitorEvent: "new".
This is orthogonal to Apify Schedules: the Schedule starts the run on your cadence; monitor mode decides what is new. Use a distinct monitorKey per saved watch (one per city, per category, per client) so separate monitors never share memory.
Automate & schedule
Run it on autopilot and pull results into your own stack: Schedules for cadence, webhooks to push each finished run onward, and one-click integrations for Google Sheets, Slack, Airtable, Make and Zapier.
Integrate with any app
Results are available as JSON, CSV, Excel, XML and RSS through the Dataset API, and the actor can be started from the API or any client library.
Use with AI assistants (MCP)
This actor is exposed through the Apify MCP server, so Claude, ChatGPT, Cursor and any other MCP client can call it directly as a tool - "find me remote Java jobs in Madrid posted this week, with salary" becomes one tool call.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More job & hiring scrapers from scrapesage
- ZipRecruiter Scraper - US job listings with salary and company
- Arbeitsagentur Scraper - the German federal job board
- Remote OK / We Work Remotely / Himalayas - remote-first job boards
- Browse everything at apify.com/scrapesage
FAQ
Do I need an InfoJobs account or API key? No. This reads only public search and offer pages.
How many offers can I get?
InfoJobs holds roughly 57,000 live offers. A single search is paged until maxResults is reached; InfoJobs itself limits how deep any one search can be paged, so for very large sweeps split the work by province or category.
Why is salary empty on some rows?
The employer did not publish one. Roughly three quarters of offers do. Turn on withSalaryOnly to keep only those that did.
Is the description the full text or a snippet? The full text. It is included by default at no extra cost.
Can I get the offers in English?
InfoJobs is a Spanish-language board, so titles, descriptions, contract types and workdays come back in Spanish exactly as published. remoteMode, salaryPeriod and salaryType are normalised to English values so you can filter on them without knowing Spanish.
What does applicantsCount mean?
How many candidates have already applied to that offer, published by InfoJobs itself. It appears when includeDetails is on and is the single best signal of how contested a role is.
Need help?
Open an issue on the actor's Issues tab with your input and the run ID and it will be looked at.
This actor collects publicly available job postings for research, recruitment and market-analysis purposes. It is not affiliated with, endorsed by, or sponsored by InfoJobs. InfoJobs is a trademark of its respective owner.