InfoJobs Scraper: Spain Jobs, Salaries and Applicants
Pricing
from $1.19 / 1,000 jobs
InfoJobs Scraper: Spain Jobs, Salaries and Applicants
Scrape InfoJobs (infojobs.net) job offers in Spain by keyword and province: title, company, salary range with period, contract, workday, remote or hybrid, applicants, minimum experience and studies, skills, publish date and full description. No login.
Pricing
from $1.19 / 1,000 jobs
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.
Why choose this actor?
- Every offer as a full row, not a half filled card. The job title, the company, the town and province, the salary as numbers with its period, the contract, the workday, remote or on site, the number of applicants, the minimum experience and studies, the skills and the full description. Our final test run (programador, camarero and enfermera across Spain, 100 each) returned 300 offers from 40 provinces in 125 seconds, with title, company, link, location, applicants, experience and studies filled on all 300.
- The same input as other InfoJobs scrapers, so you can switch in a minute.
queries,locationandmaxResultskeep the names, types and defaults other popular InfoJobs scrapers use, so you can paste your current input JSON and press Start. The output keeps the familiartitle,company,url,locationandqueryfields, filled with what their names say: the job title intitle, the company incompany. - No login, no cookies, and you pay only for offers you receive. A page the site did not answer, a search with no results, an offer found by two of your queries in the same run and, with
onlyNewJobs, an offer an earlier run already gave you are never charged. A bad location stops the run before anything is charged, the start fee included.
Part of The Mine Works Jobs and hiring family: Foundit Monster India Jobs, Hirist Jobs Scraper, India Jobs MCP, Naukri Jobs Scraper, Shine.com Jobs Scraper, Internshala Scraper.
Try it in one minute
Paste this into the input (JSON view) and press Start. It returns 10 programmer offers in the province of Madrid in about 10 seconds:
{"queries": ["programador"],"location": "madrid","maxResults": 10}
queries takes job titles or skills, one per line, as you would type them on infojobs.net (programador, camarero, enfermera, comercial), * for every offer that matches your filters, or an InfoJobs search URL copied from your browser. location takes a province in Spanish or English (madrid, sevilla or seville, vizcaya or biscay), a large town (bilbao, vigo, malaga), a region (andalucia, cataluna, galicia) or several separated by commas; leave it empty for all of Spain.
Apify's free plan includes $5 of credit every month, which covers about 2,700 results at this actor's price.
Copy to your AI assistant
themineworks/infojobs-scraper on Apify. Scrapes job offers from InfoJobs (infojobs.net, Spain), one row per offer with title, company, offer link, location, the query that found it, offer id, company profile link, town, province and postal code, salary text with minimum, maximum, period, currency and gross or net, contract type, workday, remote or on site, minimum experience and studies, number of applicants, vacancies, job level, category, skills, languages, company rating, publication date and full description. Call ApifyClient("TOKEN").actor("themineworks/infojobs-scraper").call(run_input={"queries": ["programador"], "location": "madrid", "maxResults": 50}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: queries (list of job titles or skills, "*" for every offer, or InfoJobs search URLs). Optional: location (province, large town or region in Spanish or English, several separated by commas; default "" = all of Spain), maxResults (per query, 10 to 5000, default 10), includeDetails (default true: reads each offer page for province, applicants, experience, studies, skills), postedWithin ("any", "24h", "7d", "15d"), sortBy ("relevance", "newest"), contractTypes (list of "permanent", "fixed_term", "seasonal_permanent", "self_employed", "training", "part_time_contract", "relief", "other"), workMode ("any", "remote", "hybrid", "remote_or_hybrid", "on_site"), workday ("any", "full_time", "part_time", "intensive"), onlyNewJobs (default false). Full spec: GET https://api.apify.com/v2/acts/themineworks~infojobs-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Up to 47 fields per offer. 26 come from the search results (title, company, link, town, salary as numbers and as text, contract, workday, remote or on site, date, promoted flag, full description) and 21 more from each offer's own page: province, postal code, applicants, vacancies, minimum experience, minimum studies, job level, category and subcategory, industry, skills, languages, requirements, benefits and the company's rating on InfoJobs.
- Province, town or region, in Spanish or English. InfoJobs filters by province. The actor knows all 52 Spanish provinces by their Spanish, co official and English names (
Biscay,Seville,Balearic Islands,A CoruñaorLa Coruña), about 50 large towns and the islands (Bilbaosearches Vizcaya/Bizkaia,Mallorcathe Balearic Islands) and the autonomous communities (Cataloniasearches its four provinces). - The site's own filters. Published in the last 24 hours, 7 or 15 days; contract type (permanent, fixed term, seasonal permanent, self employed and more); remote, hybrid or on site; full time, part time or intensive workday; sorted by relevance or newest first.
- From 10 to 5,000 offers per query, up to 100 queries per run. A search page holds 20 offers. Deep pages work: page 200 of a search for every offer in Spain answered in our tests.
- No double charging. InfoJobs shows promoted offers again further down the results, and the same offer often matches two of your queries. Each offer is delivered and charged once per run.
- Only new offers on a schedule. With
onlyNewJobs, a daily run returns and charges only offers it has not delivered to you before.
How to use it
Basic: one job title in one province
The same input other InfoJobs scrapers take. Raise maxResults for more offers:
{"queries": ["programador"],"location": "madrid","maxResults": 10}
Several job titles at once, all of Spain
Each query is its own search with its own maxResults. Our final test run of this input returned 300 offers from 40 provinces in 125 seconds, with every offer page read:
{"queries": ["programador", "camarero", "enfermera"],"location": "","maxResults": 100}
Job: daily alerts for new offers
Offers published in the last 24 hours in Barcelona, newest first, and only those not delivered before. Save it as a task and add a daily schedule (Console > Schedules); each run returns and charges only new offers, and a run with nothing new costs only the start fee.
{"queries": ["enfermera", "auxiliar de enfermería"],"location": "barcelona","postedWithin": "24h","sortBy": "newest","onlyNewJobs": true,"maxResults": 100}
Job: salary benchmark for one role across a region
Every electrician offer in Andalusia's eight provinces, with salary_min, salary_max and salary_period (year, month or hour) as numbers, plus experience and studies asked. Group by province and salary_period in a sheet for a pay range per province. Only offers where the company shows a salary carry the numbers: 141 of the 300 offers in our final test run did.
{"queries": ["electricista"],"location": "andalucia","maxResults": 300}
Job: remote tech roles for a talent newsletter
Remote only, several stacks, permanent contracts. skills and languages come from each offer page.
{"queries": ["python", "java", "devops", "frontend"],"workMode": "remote","contractTypes": ["permanent"],"maxResults": 100}
Job: companies hiring this week, as a lead list
Sales roles in Valencia published in the last 7 days. Each row carries the company, its InfoJobs profile link, the town, the number of applicants and the vacancies, so a staffing or HR software team can see who is hiring now and how hard. Run it weekly with onlyNewJobs for only the new openings.
{"queries": ["comercial", "televenta"],"location": "valencia","postedWithin": "7d","maxResults": 200}
Paste a search from your browser
Set the filters on infojobs.net, copy the address of the results page and paste it as a query. Its own filters are kept on every page (in our test, page 2 of a Barcelona waiter search stayed in Barcelona).
{"queries": ["https://www.infojobs.net/ofertas-trabajo/barcelona/camarero"],"maxResults": 30}
Faster runs with the search results only
Turn off includeDetails to skip the offer pages: no province (unless you filter by one province), applicants, experience, studies or skills, but every search result field, the full description included. In our test, 10 electrician offers in Valencia took 6 seconds.
{"queries": ["electricista"],"location": "valencia","includeDetails": false,"sortBy": "newest","maxResults": 10}
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
queries | array of strings | ["programador"] | Job titles or skills, one search each; * for every offer that matches the filters; or InfoJobs search URLs, whose own filters are kept. Required. Up to 100 per run. |
location | string | "" | Province, large town or region, in Spanish or English, several separated by commas. Empty means all of Spain. An unknown name stops the run with a list of the provinces, before anything is charged. remoto or remote turns on the remote filter. |
maxResults | integer | 10 | Most offers per query, from 10 to 5,000. |
includeDetails | boolean | true | Read each offer's page for province, postal code, applicants, minimum experience and studies, skills, languages, category, job level, vacancies, benefits and company rating. |
postedWithin | string | "any" | any, 24h, 7d or 15d, the site's own date filter. |
sortBy | string | "relevance" | relevance or newest. A * search is always newest first. |
contractTypes | array of strings | none | Any of permanent, fixed_term, seasonal_permanent, self_employed, training, part_time_contract, relief, other. Empty means any contract. |
workMode | string | "any" | any, remote, hybrid, remote_or_hybrid or on_site. |
workday | string | "any" | any, full_time, part_time or intensive. |
onlyNewJobs | boolean | false | Skip offers an earlier run of this actor delivered to you, so a scheduled run returns and charges only new offers. |
What data do you get?
One row per offer. Fields with no value on an offer are left out of that row rather than filled with blanks.
The offer: title (the job title as the company wrote it), url (the offer page, without tracking parameters), offer_id, query (the query or search URL that found it), published_at (ISO date, UTC), promoted (true when the company paid to show it at the top), short_description (first 300 characters) and description (the full text).
The company: company, company_url (its InfoJobs profile or careers page), company_logo_url, industry, company_rating (out of 5) and company_reviews (how many ratings it rests on).
Where: location (town and province, for example Vic, Barcelona), city, province, postal_code and country.
Pay: salary_text exactly as the offer page writes it (a range with gross or net and the period, or Más de 33.000€ when only a floor is given), salary_min, salary_max, salary_period (year, month or hour in our tests), salary_currency (EUR) and salary_type (gross on every salaried offer of our tests, net when an offer says so). Only offers where the company shows a salary carry these: 141 of 300 in our final test run.
Terms: contract_type (Contrato indefinido, Contrato de duración determinada...), workday (Jornada completa, Jornada indiferente...), remote_work as shown (Presencial, Híbrido, Solo teletrabajo, Sin especificar) and work_mode as a code (on_site, hybrid, remote, not_specified), plus contract_duration and working_hours when the offer gives them.
The candidate asked for: experience_min (Al menos 3 años, No Requerida), studies_min (Grado, Ciclo Formativo Grado Superior...), skills, languages (Inglés: Avanzado), requirements_minimum and requirements_desired (when the company lists them apart from the description), resident_in, job_level (Empleado/a, Especialista, Mando intermedio...), category, subcategory, vacancies and benefits.
Demand: applicants, the number of people who had applied when the offer page was read. In our final test run the 300 offers had 41,582 applicants between them, up to 1,734 on one offer.
Run bookkeeping: search_rank (position in its query's results), search_page, scraped_at and details_error (only on a row whose offer page could not be read, saying why).
The offer page fields (province when you search several provinces or all of Spain, postal_code, country, experience_min, studies_min, applicants, vacancies, job_level, category, subcategory, industry, skills, languages, requirements_*, benefits, company_rating) need includeDetails, which is on by default.
Stable fields for automations
These were present in every offer row of our test runs, and their names will not change:
| Field | What it holds |
|---|---|
title | Job title |
company | Company name |
url | Offer page on infojobs.net |
location | Town and province as one text |
query | The query or search URL that found the offer |
offer_id | InfoJobs offer id, stable across runs |
company_url | Company profile on InfoJobs |
city | Town of the job |
contract_type | Contract as shown |
workday | Jornada as shown |
published_at | Publication date, ISO 8601 UTC |
short_description | First 300 characters of the description |
description | Full description as plain text |
search_rank | Position in its query's results |
scraped_at | When the row was read |
With includeDetails on (the default), province, experience_min, studies_min, applicants, vacancies, job_level and category were also in every row of our final test run.
Output examples
Real rows from our test runs on 8 October 2026, descriptions shortened.
A programmer offer in the province of Girona, with the offer page read (the default):
{"title": "Programador/a Industrial","company": "ISPROX","url": "https://www.infojobs.net/sant-joan-de-les-abadesses/programador-industrial/of-i781e39ed6846f3ac45b0c73f23b75d","location": "Sant Joan De Les Abadesses, Girona","query": "programador","offer_id": "781e39ed6846f3ac45b0c73f23b75d","company_url": "https://isprox.ofertas-trabajo.infojobs.net","city": "Sant Joan De Les Abadesses","province": "Girona","postal_code": "17860","country": "España","salary_text": "36.000€ - 40.000€ Bruto/año","salary_min": 36000,"salary_max": 40000,"salary_period": "year","salary_currency": "EUR","salary_type": "gross","contract_type": "Contrato indefinido","workday": "Jornada completa","remote_work": "Presencial","work_mode": "on_site","experience_min": "Al menos 3 años","studies_min": "Ciclo Formativo Grado Superior","applicants": 3,"vacancies": 1,"job_level": "Especialista","category": "Ingenieros y técnicos","subcategory": "Electrónica y automática industrial","skills": ["programador", "plc", "electricista", "mecatronica", "automatizacion"],"company_rating": 4.7,"company_reviews": 10,"published_at": "2026-09-18T10:46:05.000Z","promoted": false,"short_description": "¿Eres un apasionado de la automatización que prefiere el contacto real con la máquina antes que el trabajo estático de oficina? Desde ISPROX seleccionamos un/a Especialista en Programación de PLC y Electricidad Industrial…","search_rank": 3,"search_page": 1,"scraped_at": "2026-10-07T20:26:29.803Z"}
A waiter offer in a hotel in Tenerife, with languages:
{"title": "Camarero/a hotel de lujo en Adeje","company": "Luxury Tenerife Hotels","url": "https://www.infojobs.net/adeje/camarero-hotel-lujo-adeje/of-i20a01f743e4bec8603346764b3ca7e","location": "Adeje, Santa Cruz de Tenerife","query": "camarero","province": "Santa Cruz de Tenerife","salary_text": "24.000€ - 26.000€ Bruto/año","salary_min": 24000,"salary_max": 26000,"salary_period": "year","contract_type": "Contrato indefinido","workday": "Jornada completa","remote_work": "Presencial","experience_min": "Al menos 1 año","studies_min": "Formación Profesional Grado Superior","applicants": 343,"vacancies": 2,"industry": "Hostelería y restaurantes","skills": ["atención al cliente", "calidad", "desarrollo profesional", "hoteles", "camarero", "Servicio de mesa", "Servicio de bebidas", "Amabilidad"],"languages": ["Inglés: Avanzado"],"company_rating": 5,"company_reviews": 2,"published_at": "2026-10-05T10:00:08.000Z"}
A nursing offer from a hospital in Sabadell with only a salary floor (salary_max is left out):
{"title": "ENFERMERA/ ENFERMERO","company": "Corporaciò Sanitaria Parc Taulí","url": "https://www.infojobs.net/sabadell/enfermera-enfermero/of-i57054fc0d84830b95f38f6e39b7359","location": "Sabadell, Barcelona","query": "enfermera","salary_text": "Más de 33.000€","salary_min": 33000,"salary_period": "year","contract_type": "Contrato otros contratos","experience_min": "No Requerida","studies_min": "Grado","applicants": 85,"vacancies": 15,"category": "Sanidad y salud","subcategory": "Enfermería","company_rating": 4.54,"company_reviews": 136}
The same kind of row with includeDetails off (search results only), an electrician offer near Valencia:
{"title": "ELECTRICISTA","company": "INSTALACIONES MANUEL GARCIA","url": "https://www.infojobs.net/mislata/electricista/of-i7adffc982448a6bf295f69bc01e853","location": "Mislata, Valencia/València","query": "electricista","offer_id": "7adffc982448a6bf295f69bc01e853","company_url": "https://www.infojobs.net/instalaciones-manuel-garcia/em-i66575451565354737883843007025059501429","city": "Mislata","province": "Valencia/València","salary_text": "21.000€ - 24.000€ Bruto/año","salary_min": 21000,"salary_max": 24000,"salary_period": "year","salary_currency": "EUR","salary_type": "gross","contract_type": "Contrato indefinido","workday": "Jornada completa","remote_work": "Presencial","work_mode": "on_site","published_at": "2026-10-07T18:00:05.000Z","promoted": false,"short_description": "En IMAGA buscamos incorporar electricistas profesionales para trabajar en proyectos de viviendas de obra nueva…","search_rank": 3,"search_page": 1}
At the end of a run that delivered offers, one info row (_type: "info") says how many were delivered and how to schedule the actor. It is never charged. The run summary (status per query, pages read, requests, charges) is in the run's key value store under OUTPUT.
Pricing
Pay per event: you pay for the offer rows you receive, plus a flat $0.005 per run, whatever memory you choose.
| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
job | Once per offer row stored in your dataset | $1.79 per 1,000 | $1.59 per 1,000 | $1.39 per 1,000 | $1.19 per 1,000 |
run-start | Once per run, when it starts | $0.005 | $0.005 | $0.005 | $0.005 |
The price per single offer is the price per 1,000 divided by 1,000. An offer with its offer page read costs the same as one without.
Never charged:
- a run whose input is refused (an unknown location, an empty query list): not even the start fee;
- pages the site did not answer, and searches the run could not read;
- searches with no results;
- an offer already delivered earlier in the same run (shown again further down, or found by another query);
- with
onlyNewJobs, an offer an earlier run already delivered to you; - the info row at the end of a run;
- anything past your "Max cost per run". The actor stops before it reaches your limit, keeps every row it delivered, ends as Succeeded and says in its status line that the result is partial and how to get the rest.
FAQ
What exactly does this actor read?
InfoJobs (infojobs.net) is Spain's biggest job board. The actor reads its public search results pages, the same pages anyone sees without an account, and with includeDetails on (the default) each offer's own public page. It reads the data those pages carry for the browser, so the numbers are the site's own: the salary range, the applicant count, the publication date.
Does it take the same input as other InfoJobs scrapers?
Yes. It uses the same input fields as other popular InfoJobs scrapers (queries, location, maxResults), with the same types and defaults, so you can switch without changing your input. Every other field is optional and off or neutral by default. The output keeps the usual title, company, url, location and query fields first.
How many offers can I get?
From 10 to 5,000 per query and up to 100 queries per run. The run summary (OUTPUT in the key value store) shows how many offers InfoJobs had for each query, so you can see when a search was larger than your maxResults. A search for every offer in Spain (*) had 66,284 offers on 8 October 2026, and its page 200 answered normally.
How long does a run take?
About 2.4 offers per second with offer pages: 300 offers in 125 seconds in our final test, 200 offers of one query in 110 seconds. With includeDetails off, a page of 20 offers takes a few seconds (10 offers in 6 seconds in our test).
Which locations work?
InfoJobs filters by province, so location becomes one or more provinces. All 52 Spanish provinces work by their Spanish, co official or English names, about 50 large towns map to their province (Bilbao to Vizcaya/Bizkaia, Vigo to Pontevedra) and the autonomous communities map to all their provinces (Galicia searches four). Use commas for several. A town search covers its whole province; the city field tells you the exact town of each offer, so you can keep only the towns you want after the run.
Why is a field missing on some rows?
Because the offer does not have it. About half of the offers on InfoJobs show no salary (159 of 300 in our final test), so they have no salary_* fields. languages, requirements_*, benefits, contract_duration and working_hours appear only when the company filled them in. With includeDetails off, the offer page fields are not read at all.
How fresh is the data?
Live: every run reads the site at that moment. applicants is the count when the run read the offer page, and grows over the life of an offer. published_at is the date InfoJobs shows; a company that republishes an offer moves it forward, and the postedWithin filter follows the site's own logic.
Do I need an account, cookies or a proxy?
No. There is no login and nothing to configure. The actor uses Apify's datacenter proxy, included in the price. In our test runs, 315 of 315 requests were answered on the first try.
What happens if an offer is taken down while the run reads it?
The row is still delivered with every search result field, and details_error says the offer page was gone. That happened on none of our 300 test offers, but offers do close every day.
Can I monitor new offers over time?
Yes. Save your input as a task with onlyNewJobs on, and add a schedule in Console (Schedules > Add schedule, for example daily). Each run then returns and charges only offers it has not delivered to you before; a day with nothing new costs only the $0.005 start fee. sortBy: "newest" with postedWithin: "24h" keeps each run short.
Which formats can I download?
JSON, CSV, Excel, XML, HTML or RSS from the dataset, in Console or through the API. The default table view shows the five shared fields first, then salary, contract, workday, remote, applicants, experience and date; a second view shows the offer page fields.
Can I use it from Claude, ChatGPT or Cursor (MCP)?
Yes, as a tool through Apify's MCP server.
- Connector URL: https://mcp.apify.com/?tools=themineworks/infojobs-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http infojobs-scraper "https://mcp.apify.com/?tools=themineworks/infojobs-scraper"
Is it legal to scrape InfoJobs?
The actor reads only public pages that anyone can open without an account, and it collects job offers and company names, not candidates. You are responsible for how you use the data: check InfoJobs' terms for your use case and follow data protection law such as the GDPR (and the CCPA if it applies to you). If in doubt, ask a lawyer.
Integrations
- Google Sheets: send each run's rows to a sheet with Apify's Google Sheets integration, or import the dataset's CSV link.
- Make, Zapier and n8n: start the actor and read its dataset with the Apify apps and nodes, for example "new nursing offers in Madrid to Slack every morning".
- Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
- API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.
More from The Mine Works
Jobs and hiring
- Foundit Monster India Jobs
- Hirist Jobs Scraper
- India Jobs MCP
- Naukri Jobs Scraper
- Shine.com Jobs Scraper
- Internshala Scraper
- Indeed Jobs Scraper
- Instahyre Jobs Scraper
- Apna Jobs Scraper
- CutShort Jobs Scraper
- LinkedIn Jobs Scraper
- Recruiting & Jobs MCP
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
Company and business data
E-commerce and marketplaces
Food and local services
Developer and AI tools
More tools
Support
Found a search that should return offers and does not? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For another job site, a new source or a field you need, email dmineworks@gmail.com.
Search InfoJobs by job title, province and the site's own filters, and get every Spanish job offer back as a clean row with its pay in numbers, its applicants counted and its company named.

