Portugal Jobs Feed Empregos: Net-Empregos, SAPO, IEFP, ITJobs
Pricing
from $1.70 / 1,000 job postings
Portugal Jobs Feed Empregos: Net-Empregos, SAPO, IEFP, ITJobs
Nine Portuguese job boards (vagas de emprego) in one run: Net-Empregos, Emprego SAPO, IEFP, ITJobs.pt, Eurofirms, Ofertas de Emprego, Expresso Emprego, Alerta Emprego, Landing.jobs. One job format with districts, EUR pay and 14-salary yearly figure, duplicate groups, new, updated or closed jobs.
Pricing
from $1.70 / 1,000 job postings
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Features
Share
🇵🇹 Portugal Jobs Feed Empregos: Net-Empregos, SAPO, IEFP, ITJobs
|
Search Portugal's job boards in one run and get every job in one clean format Pull jobs from Net-Empregos, Emprego SAPO, IEFP, ITJobs.pt and five more Portuguese boards with pay in euros as published, gross or net when the ad says so, and every job placed in its district and municipality. |
| 💶 Pay you can compare Monthly pay as published, plus the yearly figure on Portugal's 14-salary year. | 📍 Every district 18 districts, Açores and Madeira in Portuguese and English. Setubal finds Setúbal. | 🧬 Same job, one group A job posted on two boards shares one group id, or collapses to one row. | 🔔 What changed New, updated and closed jobs between scheduled runs. |
Recruiters, staffing agencies and job-market analysts who follow hiring in Portugal usually open one board at a time and then match up pay, places and titles by hand. This feed reads the ofertas de emprego and vagas de emprego of up to nine boards in a single run, from Net-Empregos and Emprego SAPO to the public IEFP service and ITJobs.pt. It applies the same filters to all of them and returns one table you can sort, export or schedule. Todas as vagas num só sítio, no mesmo formato.
🔎 What does Portugal Jobs Feed do?
You give it keywords, districts and filters. It searches every board you select, turns what each one publishes into the same fields, and marks which rows are new since your last run. Portuguese and English keywords both work, with or without accents. Nothing is guessed: if a board does not publish a value, the field is left out.
| Board | Strongest for | Good to know |
|---|---|---|
| Net-Empregos | The largest general board: every sector and every district, many small employers | Pay, experience, education and languages are read from the ad text when you ask for full details, and only when the ad states them. The site has no search by municipality, so a municipality search keeps the district's jobs whose title names that place. |
| Eurofirms Portugal | Offers from a recruitment and temporary-work agency, with vacancies, applicant counts and schedules | The client company is not published, so rows name the client's sector instead of a company. Most offers say the salary is still to be defined. The site has no Vila Real area, so a Vila Real search skips this board and says so. |
| Ofertas de Emprego | Office, retail, hospitality and tech jobs with work model, languages and experience level | The salary label is rounded and does not say whether it is monthly or yearly, so it is kept as published and never converted. Exact posting dates come with full details or for the newest jobs. |
| Emprego SAPO | A large general board with employers in every district | Pay, experience and languages come from the ad text when the ad states them. Some employers post anonymously, so those rows have no company. The site limits how many searches one run can make, so a large run can stop early here and keeps the rows already found. |
| IEFP | Offers from the public employment service, many in hospitality, retail, industry and care | Gross monthly pay on most offers when full details are on. IEFP publishes no employer name and no posting date, so those fields stay empty and the posted-within filter keeps no IEFP rows. |
| ITJobs.pt | IT and software jobs | A yearly salary on a few offers, kept yearly. Every job is an IT job: an IT category such as Informática reads the whole board, and any other category skips it with a message. Districts the board does not list are skipped the same way. |
| Expresso Emprego (opt-in) | A general board with many company postings | Jobs abroad are left out unless you add them in the board options. There is no remote search on this board, so a Remote search skips it. |
| Alerta Emprego (opt-in) | An aggregator that collects offers from other boards | The same job often also comes from another board: those rows share one group id, and "One row per job across boards" keeps one of them. Posting dates need full details. |
| Landing.jobs (opt-in) | A small tech board, often with a yearly gross salary range | Jobs whose offices are all outside Portugal are left out unless you add them in the board options. |
Six boards are selected by default. Expresso Emprego, Alerta Emprego and Landing.jobs are opt-in: add them under Job boards when you need them.
🎯 Who uses it
- I am a recruiter in Lisboa and Porto and want every new opening from six boards in one table each morning.
- I run a staffing agency and track which roles are being advertised, with vacancies and applicant counts where the board shows them.
- I am a pay analyst comparing published monthly pay by district, including the gross pay IEFP prints on its offers.
- I hire developers and follow ITJobs.pt and Landing.jobs next to the general boards, with skills and yearly pay where published.
- I build a job site and need a clean Portugal feed where one posting never shows up twice, even from an aggregator.
🚀 How it works
| STEP 1 Pick boards and a search Choose boards, keywords, districts and filters, or paste a board link. | STEP 2 Get one table Every row has the same fields, whichever board it came from. | STEP 3 Schedule it Give the search a monitor name and each run flags new, updated and closed jobs. |
The default run reads the newest jobs in Lisboa from the six default boards, 25 rows in total, and usually finishes in under 10 seconds.
💶 How pay is handled
- Pay is kept exactly as the ad prints it, in
salaryRaw, next to the numbers read from it. - A period (monthly, yearly, hourly) is set only when the ad says so. "1.000€ - 1.200€ bruto/mensal" is monthly; "€17k - €17k" has no period and stays that way.
- Monthly pay also gets a yearly figure on the Portuguese 14-salary year (12 months plus the holiday and Christmas subsidies). Rows with a calculated yearly figure say so with
salaryDerivedandsalaryMonthsPerYear: 14. - A yearly figure is kept as published and is never split into a monthly one, because the ad does not say whether it already counts 12 or 14 payments.
- Gross or net is set only when the ad says bruto, ilíquido (both gross) or líquido (net).
- "Salário a definir", "a combinar" and "competitivo" are not turned into numbers. Those rows show
salaryDisclosed: false.
The monthly salary filter compares monthly pay directly and divides a yearly figure by 14 for the comparison only. Pay printed without a period cannot be compared, so it is kept unless you also tick "Only jobs with a published salary". About 95% of Portuguese ads hide pay, so expect few rows when you filter on it.
⌨️ Input
| Field | Type | Required | Description |
|---|---|---|---|
sources | array of enum | No | Boards to read: net-empregos, emprego-sapo, eurofirms, ofertas-de-emprego, iefp, itjobs-pt (default), plus the opt-in expresso-emprego, alerta-emprego, landing-jobs. |
startUrls | array of URLs | No | Search or job links copied from a supported board. Empty the board list to read only these links. The run's filters, including employment types, also apply to these rows. |
keywords | array of strings | No | Titles or skills, for example enfermeiro, programador or motorista. Leave empty to browse the newest jobs. |
expandKeywords | boolean | No | Also search Portuguese titles for common English ones (nurse also searches enfermeiro). |
districts | array of strings | No | Districts (Lisboa, Porto, Setúbal ...), Açores, Madeira, municipalities (Matosinhos, Oeiras, Funchal), Remote, or Portugal for the whole country. Default Lisboa. |
categories | array of strings | No | Job areas such as Informática, Hotelaria or Saúde, matched to each board's own categories. |
employmentTypes | array of enum | No | Full-time, part-time, internship, temporary, freelance, fixed-term or permanent. |
remoteOnly | boolean | No | Keep only remote or hybrid jobs. |
experience | enum | No | Experience band the job must overlap. |
education | enum | No | Minimum education the job asks for, from 9th grade to doctorate. |
minMonthlySalaryEur | integer | No | Minimum monthly pay in euros (yearly pay divided by 14 for the check). |
maxMonthlySalaryEur | integer | No | Maximum monthly pay in euros. |
onlyDisclosedSalary | boolean | No | Drop jobs with no published pay. |
postedWithinDays | integer | No | Keep jobs posted within this many days. |
companyNames | array of strings | No | Keep only these employers. Lda, S.A. and accents do not matter. |
excludeKeywords | array of strings | No | Drop jobs that mention any of these words. |
includeDescription | boolean | No | Add the description and the job-page facts: requirements, education, languages, vacancies, applicants, schedule. |
includeCompanyProfile | boolean | No | Add the employer profile where the board has one (Ofertas de Emprego). |
includeSourceFields | boolean | No | Attach the untouched board record. |
extractContacts | boolean | No | Pull emails and Portuguese phone numbers printed in the job text into extractedEmails and extractedPhones. Works best with the full description on. |
convertToUsd | boolean | No | Add monthly and yearly pay in US dollars. |
monitorScope | string | No | Name a search to track it over time (NEW, UPDATED, UNCHANGED, REOPENED, CLOSED). |
outputMode | enum | No | All rows, only new and changed rows, or compact rows. |
uniqueOnly | boolean | No | Keep one row per job when it is listed on several boards. |
includeClosed | boolean | No | Report jobs that disappeared on two complete scans. |
maxTotalRows | integer | No | Most rows for the whole run (default 25), shared fairly between boards. |
maxItemsPerSource | integer | No | Most rows from one board (default 25). |
maxPagesPerSource | integer | No | Most result pages per search (default 5). |
proxyConfiguration | object | No | Optional proxy for every board. Most runs never need it. |
boardOptions | object | No | Settings only one board has, for example Eurofirms offer type, Net-Empregos category ids, or jobs abroad on Expresso Emprego and Landing.jobs. |
📦 Output
Every row has the same shape, whichever board it came from. A real row from a run:
{"listingKey": "eurofirms:089-009420","sourcePlatform": "eurofirms","sourceRecordId": "089-009420","title": "Bate-Chapas (M/F) - Almada","companyIndustry": "Automóvel","postedByType": "agency","locationRaw": "Sintra, Lisboa","district": "Lisboa","districtEn": "Lisbon","districtCode": "PT-11","city": "Sintra","country": "PT","salaryRaw": "de 1.000€ - 1.200€ Bruto/mensal","salaryCurrency": "EUR","salaryGrossOrNet": "gross","salaryPeriod": "month","salaryMonthlyMinEur": 1000,"salaryMonthlyMaxEur": 1200,"salaryAnnualMinEur": 14000,"salaryAnnualMaxEur": 16800,"salaryDerived": true,"salaryMonthsPerYear": 14,"educationEn": "Basic education (9th grade)","languages": ["Portuguese"],"employmentTypeEn": "Full-time","jobCategory": "Bate-chapas","openings": 1,"weeklyHours": 40,"postedAt": "2026-10-26T00:00:00.000Z","expiresAt": "2026-11-10T00:00:00.000Z","listingUrl": "https://jobs.eurofirms.com/pt/pt/sintra/bate-chapas---almada-089-009420","signals": { "applicants": 7 },"lifecycleStatus": "NEW","platformData": { "reference": "089-009420", "directHire": true, "clientSector": "Automóvel" }}
The Output tab has four views: 💼 Jobs, 💶 Pay, 🎓 Requirements and 🔔 Changes. Every run also saves a run summary and a per-board health report in the run's storage.
🗂️ Data table
| Field | Type | Description |
|---|---|---|
title, company | string | Job title and employer as published. Agency rows have no company and set postedByType to agency. |
sourcePlatform, sourceRecordId, listingUrl | string | Board, the board's own job id, and the job page. |
district, districtEn, districtCode, city | string | District in Portuguese and English, its official code (PT-11 for Lisboa), and the municipality or town. |
country, isAbroad | string, boolean | PT for jobs in Portugal; another code for jobs abroad listed on Portuguese boards. |
workModel, isRemote | string, boolean | Remote, hybrid or on-site, only when the board or ad says so. |
salaryRaw | string | Pay exactly as published. |
salaryMin, salaryMax, salaryPeriod | number, string | Published figures and their period (month, year, hour), only from an explicit word. |
salaryGrossOrNet | string | Gross or net, only when stated. |
salaryMonthlyMinEur, salaryMonthlyMaxEur | number | Monthly pay from a monthly figure. |
salaryAnnualMinEur, salaryAnnualMaxEur | number | Yearly pay as published, or monthly pay x14. |
salaryDerived, salaryMonthsPerYear | boolean, integer | Marks yearly figures calculated from monthly pay (14 payments). |
employmentType, employmentTypeEn, employmentCategories | string, array | Contract type as published, in English, and as filter values. |
experienceRaw, experienceMinYears, experienceMaxYears | string, number | Experience asked for. |
educationRaw, educationEn, educationRank | string, integer | Education asked for (0 none to 6 doctorate). |
languages, languagesRaw | array | Languages asked for, in English and as published. |
jobCategory, companyIndustry | string | Category or job function, and the sector. |
openings, weeklyHours, workHours, signals | integer, number, string, object | Vacancies, weekly hours, schedule text and applicant counts. |
description, requirementsText, skills, benefits | string, array | Full text and tags (description with full details). |
extractedEmails, extractedPhones | array | Contact emails and Portuguese phone numbers found in the job text, only when extractContacts is on and the ad publishes them. |
postedAt, expiresAt | string | Posting and closing dates. |
clusterId, clusterSize, isCanonical | string, integer, boolean | Group id shared by the same job on several boards. |
lifecycleStatus, changedFields, firstSeenAt, lastSeenAt, closedAt | string, array | Change tracking for named monitors. |
platformData | object | Every other value the board publishes, under its own name. |
💰 Pricing
This Actor uses pay per event: you pay for the job rows delivered, and a run that finds nothing costs nothing. There is no subscription. A small default run of 25 rows is a good way to check a search before scheduling it.
Free plan runs are limited to 25 rows per run, 3 runs per day and a 30-minute wait between runs. Paid plans have no such limits.
⭐ Enjoying Portugal Jobs Feed?
|
⭐ ⭐ ⭐ ⭐ ⭐ Did one run replace a morning of board searches for you? A 5-star rating takes 10 seconds and helps other recruiters and job-market analysts find it. Your feedback also tells us which board to add next. |
| ★ Rate this Actor on Apify |
💡 Tips
- Start with the default 25 rows, check the result, then raise
maxTotalRowsandmaxItemsPerSource. - For a daily feed, set a monitor name and choose "Only new and changed rows". Keep the same settings on every scheduled run.
- Full details add job-page facts but read one extra page per job, so runs take longer. Leave them off for a quick scan.
- Pay, experience and education filters need the job page on several boards, so they make those boards slower.
- Pasted links follow the run's filters too: clear the employment types if a pasted search returns fewer rows than expected.
❓ FAQ
Como obter as ofertas de emprego do Net-Empregos, Emprego SAPO, IEFP e ITJobs de uma só vez? Keep the default boards selected, add keywords and districts, and run. All jobs come back in one table with the same fields. Add Expresso Emprego, Alerta Emprego or Landing.jobs under Job boards when you want them too.
Why do IEFP rows have no company or posting date? IEFP publishes its offers without the employer's name and without a publication date. The feed leaves those fields empty instead of guessing, so the posted-within filter keeps no IEFP rows.
Does it need a login or an account on the job boards? No. It reads public job listings only. No login, password or account is used.
Why do so few rows have a salary? Most Portuguese ads do not publish pay, or say it is to be defined. The feed never invents a figure: rows without pay simply have no salary fields.
Why is the yearly salary 14 times the monthly one? Employees in Portugal receive 14 payments a year: 12 monthly salaries plus the holiday and Christmas subsidies. Rows with a calculated yearly figure are marked, and a yearly figure the ad publishes is never changed.
Quais distritos são suportados? All 18 districts plus Açores and Madeira, in Portuguese or English, with or without accents, and the main municipalities such as Matosinhos, Oeiras, Almada or Funchal.
I already use one of the single-board scrapers. Can I keep my monitor? The saved history of the single-board scrapers does not carry over, so the first feed run with a monitor name reports every job as NEW. The Net-Empregos market snapshot (open-offer counts per district and category) stays in the Net-Empregos Portugal Jobs Scraper.
🔗 Other actors
- Net-Empregos Portugal Jobs Scraper ↗ - Net-Empregos offers with a new-offers feed and a market snapshot of open jobs.
- Eurofirms Portugal Jobs Scraper ↗ - Eurofirms offers by function, district and town, with a change feed.
- Ofertas de Emprego Jobs Scraper ↗ - Ofertas de Emprego jobs with area, contract, work model and language filters.
- Japan Jobs Feed ↗ - the same one-feed format for Japanese job boards.
- Israel Jobs Feed ↗ - the same one-feed format for Israeli job boards.