InfoJobs Jobs Scraper avatar

InfoJobs Jobs Scraper

Pricing

from $4.00 / 1,000 job scrapeds

Go to Apify Store
InfoJobs Jobs Scraper

InfoJobs Jobs Scraper

Scrape InfoJobs.net (Spain) job listings — title, company, salary range, contract, location, full description. MCP/API-ready.

Pricing

from $4.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

What is InfoJobs Jobs Scraper?

InfoJobs Jobs Scraper extracts job listings from InfoJobs.net, Spain's leading job board, and returns one dataset row per job. Each row has the job title, hiring company, company profile and logo, city, remote or hybrid mode, contract type, working hours, a structured salary range with currency and period, publication date and the full job description. Recruiters, salary-benchmarking analysts, HR-tech teams and AI agents use it to track hiring across Spain by keyword, province and category, with exports to JSON, CSV or Excel.

Why recruiters choose this InfoJobs scraper

  • Structured salaries. salaryMin, salaryMax, salaryPeriod, salaryCurrency and salaryType are separate fields, ready for benchmarking.
  • Full descriptions in every row. description holds the complete job text straight from the search results.
  • Spanish job attributes kept intact. teleworking, contractType and workday use InfoJobs' own labels such as "Híbrido" and "Contrato indefinido".
  • Fresh-job monitoring. sortBy: "PUBLICATION_DATE" with publishedSince: "_24_HOURS" returns only today's postings.
  • Power mode. Paste any InfoJobs search URL in searchUrls to reuse filters you built on the site.
  • Spanish residential routing by default. The default proxy uses Apify Residential in Spain for steady access.

Best fit for this Actor

  • Best fit for Spanish job-market research, salary benchmarking, competitor hiring watch and recruiter sourcing lists.
  • Designed for search-driven collection by keyword, province and category, or from InfoJobs search URLs.
  • When you want the same roles from Indeed, LinkedIn and Glassdoor too, continue with Jobs Scraper — Indeed, LinkedIn & Glassdoor and merge the datasets on companyName.
  • For a deeper LinkedIn view of the companies hiring in Spain, use LinkedIn Jobs Scraper with the same keywords.

Example workflow: from a daily search to a salary benchmark

An HR analyst at a Madrid software firm starts a scheduled search each morning with keyword "desarrollador", province "madrid", sortBy set to PUBLICATION_DATE and publishedSince set to _24_HOURS. The dataset returns each new posting's companyName, contractType, teleworking and salary fields. They export the rows to a spreadsheet, filter to jobs with salaryMin present, and compare the range against their own offers by seniority and remote mode. At the end of the month they feed the accumulated rows into a dashboard that shows which competitors are hiring and at what pay.

Input

{
"keyword": "desarrollador",
"province": "madrid",
"category": "informatica-telecomunicaciones",
"sortBy": "PUBLICATION_DATE",
"publishedSince": "_7_DAYS",
"maxResults": 100,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "ES"
}
}
FieldTypeWhat it controls
keywordstringFree-text search in Spanish, for example enfermera or marketing manager.
provincestringProvince slug such as madrid or barcelona.
categorystringCategory slug such as informatica-telecomunicaciones.
sortBystringRELEVANCE (default) or PUBLICATION_DATE.
publishedSincestringANY (default), _24_HOURS, _7_DAYS or _15_DAYS.
maxResultsintegerJobs to collect across all searches. Default 100.
searchUrlsarray of stringsFull InfoJobs list.xhtml search URLs for power users.
proxyConfigurationobjectDefaults to Apify Residential in Spain.

Output

FieldWhat it contains
url, codeJob-offer URL and InfoJobs offer code
titleJob title
companyName, companyUrl, companyLogoHiring company, profile link and logo
cityJob location
teleworking, contractType, workdayRemote mode, contract and working hours
salaryMin, salaryMax, salaryPeriod, salaryCurrency, salaryType, salaryTextStructured salary when the employer publishes one
publishedAtPublication time
descriptionFull job description
isExecutiveExecutive-role flag
scrapedAtCollection time
{
"url": "https://www.infojobs.net/madrid/analista-desarrollador-appian-teletrabajo/of-i523269c6884e328cfe72c53966c8ae",
"code": "523269c6884e328cfe72c53966c8ae",
"title": "Analista Desarrollador/a Appian (Teletrabajo)",
"companyName": "Factum IT",
"companyUrl": "https://www.infojobs.net/factum-it/em-i98565355555555709799111009035642114043",
"companyLogo": "https://multimedia-logos.infojobs.net/image/upload/0c/0cc264e9-0d27-4bef-a905-a34105e43889",
"city": "Madrid",
"teleworking": "Solo teletrabajo",
"contractType": "Contrato indefinido",
"workday": "Jornada completa",
"salaryMin": 54000,
"salaryMax": 56000,
"salaryPeriod": "YEAR",
"salaryCurrency": "EUR",
"salaryType": "GROSS",
"salaryText": "54.000–56.000 EUR/year",
"publishedAt": "2026-09-28T09:19:32Z",
"description": "Sobre nosotros\nEn Factum llevamos más de 15 años prestando servicios tecnológicos, de ciberseguridad, ciberinteligencia y servicios gestionados...",
"isExecutive": false,
"scrapedAt": "2026-10-01T13:10:51.201Z"
}

Pricing

This Actor uses Pay per event with Apify platform usage included in the event price. The events are Actor Start (once per run) and Job scraped (one per job row). For example, a search capped at maxResults 1,000 that fills the cap is one start event plus 1,000 job events; a daily _24_HOURS check that finds 40 new postings is one start event plus 40 job events. The live Pricing tab on this page shows the current price of each event.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~infojobs-jobs-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword": "enfermera", "province": "barcelona", "maxResults": 50}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/infojobs-jobs-scraper").call(run_input={
"keyword": "desarrollador",
"sortBy": "PUBLICATION_DATE",
"publishedSince": "_24_HOURS",
"maxResults": 100,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["companyName"], job["salaryText"])

Use with AI agents (MCP)

The Actor is available through Apify MCP for Claude, ChatGPT, Cursor and other MCP clients. Example prompt:

Find developer jobs posted on InfoJobs in Madrid in the last 7 days, then give me the median published salary and the five companies with the most openings.

The agent sends keyword, province and publishedSince, reads rows with get-dataset-items, keeps rows with salaryMin, and groups by companyName. Keep url and publishedAt with each job for provenance. For cost and scope, set maxResults before starting and narrow with category when the keyword is broad.

Best results

Starting situationHelpful actionExpected outcome
Daily new-job monitoringsortBy: "PUBLICATION_DATE" with publishedSince: "_24_HOURS" on a scheduleOnly fresh postings each day
Salary researchFilter rows where salaryMin is presentClean ranges by period and currency
A filtered search you built on InfoJobsPaste the search URL into searchUrlsThe exact same result set
A quick sampleLower maxResultsA fast preview before a full export
Regional comparisonRepeat the input with different province slugsSide-by-side regional hiring data

Works with InfoJobs search results and search URLs, which already carry the full job description. Keep the default Spanish residential proxy for steady access.

Builder's note

I found that InfoJobs search results already contain everything a job row needs, including the full description and the structured salary, so the Actor reads search pages rather than visiting every job page. That design keeps it HTTP-only and quick, and it is why salary arrives as separate numeric fields instead of free text you would have to parse.

FAQ

Does it collect candidate data?

No. It collects public job-listing data only.

Why are some salary fields empty?

Many employers on InfoJobs leave salary unpublished. Rows carry salary fields whenever the posting includes them.

Which locations are covered?

All of Spain. Use province slugs to focus on a region.

Responsible use

This Actor collects publicly available job-listing data. Use it in line with InfoJobs' Terms of Service and applicable law, including the GDPR. InfoJobs is a trademark of its owner; this independent Actor is not affiliated with or endorsed by InfoJobs. For questions or new field requests, open a ticket in the Issues tab.