# Ofertas de Emprego Jobs Scraper: Empregos em Portugal e Filtros (`getascraper/ofertas-de-emprego-jobs-scraper`) Actor

Extract public Portugal job listings from Ofertas de Emprego (ofertasdeemprego.pt) with filters for area, contract, work model, city, experience and languages. Get exact dates, requirements, benefits and company profiles, plus a monitor for new, changed and removed jobs. No login or key.

- **URL**: https://apify.com/getascraper/ofertas-de-emprego-jobs-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 job results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 💼 Ofertas de Emprego Jobs Scraper: Empregos em Portugal e Filtros

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#F5F3E8;border:1px solid #D6D1B0;border-top:4px solid #2C2902;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Turn Ofertas de Emprego into a filtered, scheduled feed of Portuguese jobs.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pick the area, contract, work model, city, experience, and languages you want. Get each job with its exact dates, requirements, benefits, and company profile. Run it on a schedule and receive only what is new, changed, or removed.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D6D1B0;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#2C2902">🎯 15 filters</span><br>
<span style="font-size:12px;color:#57534E">Area, contract, work model, city, experience, languages, words, companies, age, pay, and caps per company.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D6D1B0;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#2C2902">🧾 Full job facts</span><br>
<span style="font-size:12px;color:#57534E">Exact posted and expiry dates, requirements, benefits, weekly hours, education, languages, and skills.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D6D1B0;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#2C2902">🏢 Company profile</span><br>
<span style="font-size:12px;color:#57534E">About text, website, address, and number of open jobs, read once per company.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D6D1B0;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#2C2902">🔔 Job monitor</span><br>
<span style="font-size:12px;color:#57534E">New, changed, and removed jobs since your last run. No login or key needed.</span>
</td>
</tr>
</table>

Ofertas de Emprego (ofertasdeemprego.pt) is a Portuguese job board with about 1,800 open jobs in every district and sector. This Actor reads the public listings and saves each job as one clean row. You choose the filters, and the run keeps only the jobs that match. Portuguese accents are kept as written.

### 🔍 What does this Actor do?

- **Searches live jobs:** every run reads the current listings, so results match what the site shows today.
- **Filters before it saves:** narrow by area of work, contract type, work model, city, experience level, required languages, words to include or avoid, companies to keep or skip, and posting age.
- **Splits each ad into parts:** requirements, responsibilities, nice-to-haves, and what the employer offers are saved as separate lists next to the full description.
- **Keeps your list clean:** cap the jobs per company, drop look-alike postings from the same branch, and sort by newest, oldest, or company.
- **Watches the board for you:** monitor mode returns only new and changed jobs, and marks a job as removed once its page is confirmed gone.
- **Stays honest:** a field the ad does not state is left out. Nothing is guessed or filled with a placeholder.

### 🎯 What can I use it for?

- **Recruiters and staffing agencies:** see which companies are hiring in a city or sector, and skip competing agencies.
- **Job boards and alert apps:** a daily feed of fresh jobs with stable IDs, exact dates, and a link to each ad.
- **HR and market analysts:** track remote, hybrid, and on-site demand by area, or compare which benefits employers advertise.
- **Candidates and career coaches:** list recent junior jobs that need English or French, or jobs that show a pay range.

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F5F3E8;border:1px solid #D6D1B0;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2C2902;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Choose your jobs</span><br>
<span style="font-size:12px;color:#57534E">Type search words and pick areas, contracts, work models, and cities. Leave everything empty for the newest jobs.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F3E8;border:1px solid #D6D1B0;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2C2902;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run once or on a schedule</span><br>
<span style="font-size:12px;color:#57534E">The default saves 10 jobs in seconds. Turn on the monitor and schedule it to get only what changed.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F3E8;border:1px solid #D6D1B0;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2C2902;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Download or connect</span><br>
<span style="font-size:12px;color:#57534E">Export CSV, Excel, or JSON, or send each run to Slack, email, Google Sheets, or a webhook with Apify integrations.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Search words | list | No | Job titles or words to search, such as "enfermeiro" or "python". Each word is its own search and results are merged without duplicates. Empty means the newest jobs. |
| Pages to read | list of URLs | No | Optional ofertasdeemprego.pt pages: a search, area, city, contract type, work model, tag, company, or single job page. Replaces the search words and the page-choosing filters. |
| Areas | multi-select | No | Any of the site's 35 areas of work, such as Informática or Hotelaria / Turismo. Empty means all areas. |
| Contract types | multi-select | No | Full time, part time, internship, freelance, or temporary. Empty means all. |
| Work models | multi-select | No | On-site, hybrid, remote in Portugal, or remote worldwide. The job page is read when this cannot be checked from the search. |
| Locations | list | No | Cities, municipalities, or regions as the site writes them, such as "Porto" or "Madeira". Each one is a separate search. |
| Experience levels | multi-select | No | No experience, junior, intermediate, or senior. Reads the job page automatically. |
| Required languages | list | No | Keep jobs that list all of these languages, such as "Inglês". Reads the job page automatically. |
| Must mention (any) | list | No | Keep jobs whose title, company, or description contains at least one of these words. Accents and capitals are ignored. |
| Must not mention | list | No | Drop jobs that contain any of these words, such as "estágio". |
| Only these companies | list | No | Keep jobs from companies whose name contains one of these names. |
| Skip these companies | list | No | Drop jobs from companies whose name contains one of these names, for example staffing agencies. |
| Posted within (days) | integer | No | Only jobs from the last N days. Empty means no limit. The site shows ages rounded down. |
| Only jobs that show pay | true or false | No | Keep jobs that state a pay range or mention an amount in euros. Reads the job page automatically. |
| Maximum jobs per company | integer | No | Stops one employer with many branches from filling the result. Empty means no cap. |
| Remove look-alike postings | true or false | No | Drops repeats with the same title, company, and location. |
| Maximum jobs | integer | No | How many jobs to save. Default 10, maximum 5,000. Free-plan runs are capped at 25. |
| Maximum pages per search | integer | No | Result pages read per search. The site shows 8 jobs per page. Default 5. |
| Sort results | enum | No | Site order (default), newest first, oldest first, or company A-Z. Applies to the jobs collected in the run. |
| Read each job page | true or false | No | Adds exact dates, work model, experience, education, languages, benefits, weekly hours, skills, and the company link. One extra request per job. Default off. |
| Add company profile | true or false | No | Adds the company's public profile when the job links to one. Default off. |
| Keep description HTML | true or false | No | Saves the ad description as HTML next to the plain text. Default off. |
| Monitor mode | enum | No | Off (default), new, changed, and removed only, or all jobs with change labels. |
| Monitor name | text | No | Name of the saved job list. Use one name per scheduled search. |
| Proxy configuration | object | No | Network settings. The default works for most runs. |

Filters that need facts from the job page (experience, languages, pay, and some work models) read that page for you, so those runs take a little longer.

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| jobId | text | The job number on Ofertas de Emprego. Stable, so it works as a unique key. |
| title | text | Job title with accents kept as written. |
| company | text | Employer name as shown on the job. |
| companyLogo, companyUrl, companyWebsite | text | Logo, the company page on the site, and the company's own website when the ad links to them. |
| location, regions, country | text, list | Places shown on the job, as one line and as a list. |
| postedAt, validThrough | date and time | Exact publish and expiry time. With job pages on, or for the newest jobs. |
| postedAgo | text | Age as the site words it, such as "há 2 dias". |
| contractTypes, employmentType | list, text | Full Time, Part Time, Estágio, Freelance, or Temporário, plus the standard employment label. |
| categories | list | Areas of work the job is listed under. |
| workModel | text | Presencial, Híbrido, Remoto (Portugal), or Remoto (Global). |
| salaryText, salaryMin, salaryMax, salaryCurrency | text, number | The pay range chip as shown, and its amounts in euros. Rounded to thousands by the site. |
| salaryMentions | list | Sentences of the ad that mention an amount in euros, kept word for word. |
| weeklyHours | integer | Hours per week, when the job states them. |
| experienceLevel, education | text | Experience and education level chips from the job page. |
| languages, benefits, skills | list | Languages asked for, benefits offered, and skill tags. |
| responsibilities, requirements, niceToHave, offer | list | The ad split by its own headings. |
| contactEmails, externalLinks | list | Email addresses and outside links written in the ad text. |
| reference | text | The employer's own reference code, when the ad shows one. |
| description, descriptionHtml | text | Full ad text, and the HTML version when you turn it on. |
| companyProfile | object | About text, website, address, and open jobs. Only when you turn it on. |
| jobUrl, sourceUrl | text | Link to the job and the page it was found on. |
| detailFetched, scrapedAt | true or false, date and time | Whether the job page was read, and when the row was collected. |
| changeType, changedFields, firstSeenAt, lastSeenAt | text, list, date and time | Monitor labels: NEW, CHANGED, UNCHANGED, or REMOVED. Only in monitor mode. |

Fields that a job does not publish are left out of its row. Applying on the site requires an account, so there is no application link.

Example row with job pages on:

```json
{
    "jobId": "401424",
    "title": "Guest Relations | Lisboa",
    "company": "Bomporto Hotels",
    "location": "Lisboa",
    "postedAt": "2026-10-14T16:14:27.000Z",
    "validThrough": "2026-12-13T00:00:00.000Z",
    "contractTypes": ["Full Time"],
    "categories": ["Hotelaria / Turismo"],
    "workModel": "Presencial",
    "experienceLevel": "Intermédio (2-5 anos)",
    "languages": ["Português", "Inglês", "Francês"],
    "benefits": ["Dia de aniversário", "Subsídio de alimentação"],
    "requirements": ["Fluência em inglês;", "Excelente capacidade de comunicação;"],
    "jobUrl": "https://www.ofertasdeemprego.pt/guest-relations-bomporto-lisboa-401424/",
    "detailFetched": true,
    "scrapedAt": "2026-10-14T18:00:00.000Z"
}
```

### 💰 Pricing

You pay per job saved. A run that finds no jobs costs nothing. There is no fee to start a run and there are no subscriptions. In the changes-only monitor mode you pay only for the new, changed, and removed jobs a run returns.

### ⭐ Enjoying Ofertas de Emprego Jobs Scraper: Empregos em Portugal e Filtros?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#F5F3E8;border:1px solid #D6D1B0;border-left:5px solid #2C2902;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Skip hours of copying Portuguese job ads by hand and get a clean, filtered list every day.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other recruiters, analysts, and job seekers find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#2C2902;border:1px solid #D6D1B0;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/ofertas-de-emprego-jobs-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

**Como extrair ofertas de emprego de Portugal para uma folha de cálculo?**
Run the Actor with your filters, open the Output tab, and export CSV, Excel, or JSON. Each job is one row, with the title, company, place, dates, and link.

**Como receber só as vagas novas do Ofertas de Emprego?**
Set Monitor mode to "New, changed and removed only", give the search a monitor name, and schedule the run. The first run saves the starting list. Later runs return only what changed.

**Do I need a login, API key, or cookie?**
No. The Actor reads only pages that anyone can open without an account.

**Why is the pay missing on most jobs?**
Most Portuguese ads do not state a salary. When one does, you get the pay range shown by the site and the sentences of the ad that mention an amount. The site rounds the range to thousands and does not say if it is yearly or monthly, so check the ad text.

**Can I get the application link?**
Applying on Ofertas de Emprego requires an account, so the Actor does not return one. Each row has the link to the job page.

**How does the monitor know a job was removed?**
It opens the page of a job it saw before and only marks the job as removed when the site confirms that the page is gone. A job that is simply outside your filters is never reported as removed.

**Can I search for one company only?**
Yes. Paste the company page into "Pages to read", or type the name into "Only these companies".

### 🔗 Other actors

- [Net-Empregos Portugal Jobs Scraper: Vagas de Emprego, No Login](https://apify.com/getascraper/net-empregos-jobs-scraper) ↗ - Portuguese job offers from Net-Empregos with a new-offers feed and market snapshot.
- [Ireland Jobs Scraper: jobs.ie & IrishJobs.ie Combined + Salary](https://apify.com/getascraper/ireland-jobs-feed) ↗ - Irish job listings from two boards in one run.
- [AMS Austria Jobs Scraper: Vacancies, Salaries & Employer Data](https://apify.com/getascraper/jobs-ams-at-scraper) ↗ - Austrian public employment service vacancies with salary and employer data.
- [NoFluffJobs Scraper: Tech Jobs, Salaries and Skills, No Login](https://apify.com/getascraper/nofluffjobs-scraper) ↗ - European tech jobs with salary ranges and required skills.
- [EURAXESS Jobs Scraper: PhD and Postdoc Positions Across Europe](https://apify.com/getascraper/euraxess-jobs-scraper) ↗ - Research jobs and fellowships across Europe.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/ofertas-de-emprego-jobs-scraper/changelog.md

# Actor input Schema

## `searchQueries` (type: `array`):

Job titles or words to search on the site, for example "enfermeiro" or "python". Each word is a separate search and the results are merged without duplicates. Leave empty to read the newest jobs.

## `startUrls` (type: `array`):

Optional ofertasdeemprego.pt pages: a search, area, zone, contract type, work model, tag or company page, or a single job page. When set, these replace the search words and the filters below that choose the page.

## `categories` (type: `array`):

Only jobs in these areas of work. Leave empty for all areas.

## `contractTypes` (type: `array`):

Only jobs of these types: full time, part time, internship, freelance or temporary. Leave empty for all.

## `workModels` (type: `array`):

Only jobs with this work model: on-site, hybrid, remote in Portugal or remote worldwide. Reading the job page is used to check this when it cannot be done from the search.

## `locations` (type: `array`):

Cities, municipalities or regions as written on the site, for example "Porto", "Vila Nova de Gaia" or "Madeira". Each location is a separate search. A name the site does not know returns no jobs.

## `experienceLevels` (type: `array`):

Only jobs asking for this level of experience. Needs the job page, so it is read automatically.

## `languages` (type: `array`):

Only jobs that list all of these languages, for example "Inglês" or "Francês". Needs the job page, so it is read automatically.

## `includeKeywords` (type: `array`):

Keep jobs whose title, company or description contains at least one of these words. Accents and capital letters are ignored.

## `excludeKeywords` (type: `array`):

Drop jobs whose title, company or description contains any of these words, for example "estágio" or "call center".

## `companies` (type: `array`):

Keep jobs from companies whose name contains one of these names.

## `excludeCompanies` (type: `array`):

Drop jobs from companies whose name contains one of these names, for example recruitment agencies.

## `postedWithinDays` (type: `integer`):

Only jobs published in the last N days. Leave empty for no limit. The site shows ages rounded down, such as "há 2 semanas".

## `onlyWithSalary` (type: `boolean`):

Keep jobs that state a salary range or mention an amount in euros in the ad. Needs the job page, so it is read automatically.

## `maxPerCompany` (type: `integer`):

Cap how many jobs one company can add, so large employers with many branches do not fill the result. Leave empty for no cap.

## `dedupeSimilar` (type: `boolean`):

Drop repeated postings with the same title, company and location, which the site often lists once per store or branch.

## `maxItems` (type: `integer`):

Total jobs to save. Free-plan runs are capped at 25 jobs.

## `maxPages` (type: `integer`):

Result pages read for each search or page. The site shows 8 jobs per page. Reading stops earlier once the maximum jobs is reached.

## `sortBy` (type: `string`):

Order of the saved jobs. Sorting applies to the jobs collected in this run: when you sort, the run reads up to three times the maximum before keeping the best.

## `includeDetails` (type: `boolean`):

Open every job page for the exact publish and expiry dates, work model, experience, education, languages, benefits, weekly hours, skills and the company link. One extra request per job.

## `includeCompanyProfile` (type: `boolean`):

Add the company's public profile (about text, website, address, open jobs) when the job links to one. Reads each company page once.

## `includeHtml` (type: `boolean`):

Also save the ad description as HTML next to the plain text.

## `monitorMode` (type: `string`):

Off returns every match. Changes returns only new, changed and removed jobs since the last run with the same monitor name. All returns every match labelled new, changed or unchanged, plus removed jobs.

## `monitorName` (type: `string`):

Name of the saved list of jobs. Use a different name for each search you schedule.

## `proxyConfiguration` (type: `object`):

Direct requests are used first. If the site starts refusing them, the Actor switches to Apify datacenter proxy by itself. Set a proxy here only to force one.

## Actor input object example

```json
{
  "searchQueries": [],
  "startUrls": [],
  "categories": [],
  "contractTypes": [],
  "workModels": [],
  "locations": [],
  "experienceLevels": [],
  "languages": [],
  "includeKeywords": [],
  "excludeKeywords": [],
  "companies": [],
  "excludeCompanies": [],
  "onlyWithSalary": false,
  "dedupeSimilar": false,
  "maxItems": 10,
  "maxPages": 5,
  "sortBy": "site",
  "includeDetails": false,
  "includeCompanyProfile": false,
  "includeHtml": false,
  "monitorMode": "off",
  "monitorName": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [],
    "startUrls": [],
    "categories": [],
    "contractTypes": [],
    "workModels": [],
    "locations": [],
    "experienceLevels": [],
    "languages": [],
    "includeKeywords": [],
    "excludeKeywords": [],
    "companies": [],
    "excludeCompanies": [],
    "onlyWithSalary": false,
    "dedupeSimilar": false,
    "maxItems": 10,
    "maxPages": 5,
    "sortBy": "site",
    "includeDetails": false,
    "includeCompanyProfile": false,
    "includeHtml": false,
    "monitorMode": "off",
    "monitorName": "default",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/ofertas-de-emprego-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": [],
    "startUrls": [],
    "categories": [],
    "contractTypes": [],
    "workModels": [],
    "locations": [],
    "experienceLevels": [],
    "languages": [],
    "includeKeywords": [],
    "excludeKeywords": [],
    "companies": [],
    "excludeCompanies": [],
    "onlyWithSalary": False,
    "dedupeSimilar": False,
    "maxItems": 10,
    "maxPages": 5,
    "sortBy": "site",
    "includeDetails": False,
    "includeCompanyProfile": False,
    "includeHtml": False,
    "monitorMode": "off",
    "monitorName": "default",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/ofertas-de-emprego-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [],
  "startUrls": [],
  "categories": [],
  "contractTypes": [],
  "workModels": [],
  "locations": [],
  "experienceLevels": [],
  "languages": [],
  "includeKeywords": [],
  "excludeKeywords": [],
  "companies": [],
  "excludeCompanies": [],
  "onlyWithSalary": false,
  "dedupeSimilar": false,
  "maxItems": 10,
  "maxPages": 5,
  "sortBy": "site",
  "includeDetails": false,
  "includeCompanyProfile": false,
  "includeHtml": false,
  "monitorMode": "off",
  "monitorName": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call getascraper/ofertas-de-emprego-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/ofertas-de-emprego-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/oxUgegTyoaQEUSaJR/builds/fNSbLIluvAl9I6dH2/openapi.json
