# France Travail Jobs Scraper: Offres d'emploi, Pôle Emploi (`getascraper/francetravail-jobs-scraper`) Actor

Scrape France Travail (ex Pôle emploi) offres d'emploi by mots-clés, lieu, contrat (CDI, CDD, intérim, alternance), salaire, secteur and date. Add full descriptions, skills and apply links, or monitor nouvelles offres on a schedule. Export JSON, CSV or Excel. No login or API key.

- **URL**: https://apify.com/getascraper/francetravail-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 $0.83 / 1,000 job offers

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

## 🇫🇷 France Travail Jobs Scraper: Offres d'emploi, Pôle Emploi

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#EEF2FA;border:1px solid #CAD6EE;border-top:4px solid #2B4EA2;border-radius:12px 12px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Every France Travail job offer, filtered the way you recruit</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pick the place, contract, salary, sector and employer you care about. Get clean, spreadsheet-ready offers, or only the ones you have not seen before.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #CAD6EE;border-radius:0 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1F3A7A">🎯 30+ filters</span><br>
<span style="font-size:12px;color:#57534E">Place and radius, contract, hours, salary, sector, employer and more.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #CAD6EE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1F3A7A">🔁 New offers only</span><br>
<span style="font-size:12px;color:#57534E">Name a search, schedule it, and skip what you already have.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #CAD6EE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1F3A7A">📈 Beyond 1,150 offers</span><br>
<span style="font-size:12px;color:#57534E">Broad searches are split automatically so nothing is cut off.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #CAD6EE;border-left:none;border-radius:0 0 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1F3A7A">📄 Full details on demand</span><br>
<span style="font-size:12px;color:#57534E">Description, structured salary, skills, employer profile and apply link.</span>
</td>
</tr>
</table>

**Collect France Travail (ex Pôle emploi) job offers by keyword, place, contract type, salary and professional field, and download them as JSON, CSV or Excel in minutes.** Each offer comes with the title, employer, location, contract, working time and posting date. Switch on full details to add the complete description, occupation code, salary, skills and the way to apply.

***

### 🔍 What can you do with it?

- **I am a recruiter or sourcer** building a daily list of new CDI openings in Lyon or Paris, so I can contact employers before the offer is crowded.
- **I run a staffing agency** and want to follow which employers keep posting in my sectors, with direct employers split from other agencies.
- **I run a job board or newsletter** and need a steady feed of fresh French offers with clean dates, places and apply links.
- **I am an HR or labour-market analyst** measuring salaries, contract mix and hiring volume by région, département and professional field.

***

<table width="100%"><tr>
<td style="padding:12px 18px;background:#EEF2FA;border-left:4px solid #2B4EA2">
<span style="font-size:15px;color:#1C1917">&#9889; <b>No login, no account.</b> Ready for the Apify scheduler: set it once and receive only new offers on every run.</span>
</td>
</tr></table>

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EEF2FA;border:1px solid #CAD6EE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2B4EA2;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Describe the roles</span><br>
<span style="font-size:12px;color:#57534E">Enter job titles, skills or occupation codes, or paste a search page from France Travail.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF2FA;border:1px solid #CAD6EE;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2B4EA2;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Narrow it down</span><br>
<span style="font-size:12px;color:#57534E">Choose places, contracts, hours, salary, field, employers and how recent.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF2FA;border:1px solid #CAD6EE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2B4EA2;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run and download</span><br>
<span style="font-size:12px;color:#57534E">Click Start, then export JSON, CSV or Excel.</span>
</td>
</tr>
</table>

### ⚙️ Input

All fields are optional. With no changes, the Actor returns 25 recent offers for développeur around Lyon.

| Field | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| Keywords | array of text | No | Job titles, skills, ROME occupation codes such as M1805, or offer numbers. Each one runs as its own search and results are merged without duplicates. |
| Exclude keywords | array of text | No | Skip offers whose title or summary contains these words, such as stage or alternance. |
| Search page URLs | array of URLs | No | Paste search pages from France Travail. They are used exactly as pasted and the form filters are ignored. |
| Places | array of text | No | Communes, postal codes, département numbers or names, région names, or France. Empty means all of France. |
| Search radius | enum | No | 0 to 100 km around a commune or postal code. |
| Posted within | enum | No | Last 24 hours, 3, 7, 14 or 31 days, or any time. |
| Sort by | enum | No | Newest first, relevance or distance. |
| Contract types | array of enums | No | CDI, CDD, intérim, seasonal, apprenticeship, professionalisation, freelance and more. |
| Working time | enum | No | Full time, part time or not stated. |
| Minimum / maximum contract length | integer | No | Contract duration in months, for fixed-term offers. |
| Minimum / maximum weekly hours | integer | No | Working hours per week. |
| Minimum salary | integer | No | Only offers stating at least this gross amount. |
| Salary period | enum | No | Per month, per year or per hour. |
| Executive status | enum | No | Cadre or non-cadre offers only. |
| Professional fields | array of enums | No | The 22 France Travail fields, such as Commerce, Santé or Informatique. |
| Include partner offers | boolean | No | Turn off to keep only offers published directly on France Travail. |
| Only these employers | array of text | No | Keep offers from employers whose name contains one of these. |
| Skip these employers | array of text | No | Drop offers from employers whose name contains one of these. |
| Maximum offers per employer | integer | No | Stop one large recruiter from filling the dataset. |
| Staffing agencies | enum | No | Keep direct employers only, or agencies only. Needs full details. |
| Disability-committed employers only | boolean | No | Employers recognised as handi-engagés. |
| Adapted companies only | boolean | No | Entreprises adaptées. |
| Few applicants only | boolean | No | Offers flagged as having few candidates so far. |
| Fetch full details | boolean | No | Adds description, salary, skills and apply link. Slower. Off by default. |
| Maximum results | integer | No | Total offers to return. Default 25. |
| Monitor scope name | text | No | Name a search to return only offers you have not received before. |
| Proxy configuration | object | No | Network settings. The default works for most runs. |

***

### 📦 Output

Each row is one job offer. Fields the site does not publish are left out instead of being filled with placeholders.

```json
{
  "id": "0000000",
  "url": "https://candidat.francetravail.fr/offres/recherche/detail/0000000",
  "title": "Développeur web (H/F)",
  "companyName": "Exemple SAS",
  "location": "69 - LYON 03",
  "city": "LYON 03",
  "departmentCode": "69",
  "contractType": "CDI",
  "workTime": "Temps plein",
  "postedDate": "2026-10-22",
  "source": "France Travail",
  "detailFetched": true,
  "romeCode": "M1805",
  "salaryMin": 3200,
  "salaryMax": 3800,
  "salaryPeriod": "month",
  "salaryMinYearly": 38400,
  "salaryMaxYearly": 45600,
  "experienceMonths": 24,
  "applyChannel": "France Travail online application",
  "scrapedAt": "2026-10-24T08:30:00.000Z"
}
```

#### Field reference

| Field | Type | Description |
| :--- | :--- | :--- |
| `id`, `url` | string | France Travail offer number and link. |
| `title`, `summary` | string | Offer title and the short text shown in the list. |
| `companyName` | string | Employer name when the offer shows one. |
| `location`, `city`, `departmentCode` | string | Where the job is based. |
| `contractType`, `workTime` | string | Contract and working time as published. |
| `postedLabel`, `postedDate` | string | The site's relative age and the posting date when it can be stated exactly. |
| `source`, `isPartnerOffer` | string, boolean | Where the offer was originally published. |
| `handiEngageEmployer` | boolean | Employer committed to hiring people with disabilities. |
| `matchedQuery` | string | The keyword and place that found the offer. |
| `detailFetched` | boolean | Only with full details on: whether the detail data was added. |
| `description` | string | Full offer text. |
| `romeCode`, `romeLabel` | string | Occupation code and name. |
| `contractLabel`, `workSchedule` | string, array | Contract wording and schedule. |
| `salaryText`, `salaryMin`, `salaryMax`, `salaryPeriod`, `salaryCurrency` | string, number | Salary as stated, in numbers. |
| `salaryMinYearly`, `salaryMaxYearly` | number | Yearly equivalent, only for monthly or yearly figures. |
| `benefits` | array | Benefits listed by the offer. |
| `qualification`, `targetAudience`, `sector` | string | Level, audience and employer sector. |
| `isStaffingAgency` | boolean | Employer is a staffing or recruitment agency. |
| `experience`, `experienceMonths`, `experienceRequired`, `beginnerAccepted` | string, number, boolean | Experience asked for. |
| `education`, `requiredEducation`, `skills`, `requiredSkills`, `softSkills` | array | Candidate requirements. |
| `languages`, `drivingLicenses`, `travel` | array, string | Further requirements when stated. |
| `employerName`, `employerDescription`, `employerSize`, `employerWebsite`, `employerPageUrl` | string | Employer profile. |
| `adaptedCompany`, `disabilityAccessible`, `fewApplicants` | boolean | Offer and employer flags. |
| `programs` | array | Hiring programmes the offer belongs to. |
| `applyUrl`, `applyChannel` | string | Recruiter or partner link and the way to apply. |
| `contactName`, `contactEmail`, `contactPhone`, `contactAddress`, `contactInstructions` | string | Only what the offer itself publishes. |
| `managingAgency`, `managingAgencyAddress` | string | France Travail office handling the offer, when shown. |
| `updatedDate`, `scrapedAt` | string | Last update shown by the site and when the row was collected. |

***

### 💰 Pricing

Pricing is pay per event. You pay for each offer saved to your dataset, and runs with no results cost nothing. With full details turned on, each offer whose details were actually retrieved is also charged one Job details event; offers without details are not. Events follow your Apify plan, so higher plans pay less per event, and the maximum charge you set for a run is always respected. There are no monthly subscriptions or hidden fees. Free-plan runs are limited to 25 offers per run, 3 runs per day, and a short wait between runs. Paid plans have no such limits.

***

### ⭐ Enjoying France Travail Jobs Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#EEF2FA;border:1px solid #EEF2FA;border-left:5px solid #2B4EA2;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">If this saves you hours of searching France Travail by hand, tell us about it.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other recruiters and analysts working with French hiring data find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#2B4EA2;border:1px solid #EEF2FA;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/francetravail-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>

***

### ✨ Tips and best practices

- **Build a daily hiring feed.** Pick a monitor scope name, set Posted within to 1 or 3 days, and schedule the Actor. Every run returns only offers you have not received before. The first run delivers everything up to your result limit.
- **Search several roles at once.** Add several keywords and places. Each combination runs as its own search and duplicates are removed.
- **Go wider than one search.** France Travail shows at most 1,150 offers per search. Leave the place empty and raise the limit: the Actor splits the search by département, contract and field on its own.
- **Add details only when you need them.** The default run is quick. Turn on full details for descriptions, salary, skills and apply links.
- **Copy a search from France Travail.** Set up the filters on the site, paste the page address into Search page URLs, and get exactly that list.

***

### ❓ FAQ

##### Comment exporter les offres France Travail vers Excel ?

Run the Actor with your keywords and filters, open the Output tab, and export the dataset as Excel or CSV. French accents are kept as published.

##### Does it need a France Travail account?

No. It collects publicly visible offers and needs no login, account or key.

##### Comment trouver les offres d'emploi en CDI à Lyon ?

Enter Lyon under Places, choose CDI under Contract types, and set Posted within to see only the newest offers.

##### Does it return employer emails or phone numbers?

Only when an offer publishes them. Most offers show an application link or the way to apply instead, and those fields are left out when absent.

##### Does it return salaries?

Only when an offer states one. The Actor never guesses a missing salary.

***

### 🛡️ Disclaimers and support

- **Disclaimer:** This Actor retrieves publicly available job offers. It is an independent tool and is not affiliated with or endorsed by France Travail. Make sure your use complies with the site's terms and applicable laws.
- **Support:** Open an issue from the Actor page in the Apify Console for bug reports or feature requests.

### 🔗 Other actors

- [AllJobs.co.il Scraper: משרות ודרושים API](https://apify.com/getascraper/alljobs-scraper) ↗ - Israel job listings with clean Hebrew data.
- [Net-Empregos Portugal Jobs Scraper: Vagas de Emprego, No Login](https://apify.com/getascraper/net-empregos-jobs-scraper) ↗ - Portuguese job listings by district, category or keyword.
- [MyCareersFuture Singapore Scraper: Jobs, Salaries, Skills & UEN](https://apify.com/getascraper/mycareersfuture-jobs-scraper) ↗ - Singapore jobs with salary ranges and skills.
- [IIMJobs Scraper: MBA, Finance & CA Jobs India with Recruiters](https://apify.com/getascraper/iimjobs-scraper) ↗ - MBA, finance and consulting roles across India.

# Changelog

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

# Actor input Schema

## `keywords` (type: `array`):

Job titles, skills, ROME occupation codes (for example M1805) or offer reference numbers. Each entry runs as its own search and the results are merged without duplicates, so you can cover several roles in one run. Leave empty to search by place only.

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

Offers whose title or summary contains any of these words are skipped (for example stage, alternance, freelance). Matching ignores accents and capitals.

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

Optional. Paste search result pages copied from candidat.francetravail.fr (the offres/recherche pages). When set, these pages are used exactly as they are and the keyword, place and filter fields below are ignored.

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

Commune names (Lyon), postal codes (69001), département numbers or names (69, Rhône), région names (Bretagne) or France for the whole country. Each place runs as its own search. Leave empty to search all of France.

## `radiusKm` (type: `string`):

Distance around a commune or postal code that is included in the search. It does not apply to départements, régions or France.

## `postedWithin` (type: `string`):

Only offers published in this period. Combine with a monitor scope to follow new offers day after day.

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

Newest first suits monitoring and fresh leads. Relevance puts the best keyword matches first. Distance sorts by closeness to the place and needs a commune or postal code.

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

Keep only these contract types, for example CDI plus CDD. Apprenticeship and professionalisation contracts are listed separately from regular employment. Leave empty for all types.

## `workTime` (type: `string`):

Full-time or part-time offers. "Not stated" keeps only offers that do not say.

## `minContractMonths` (type: `integer`):

For fixed-term contracts: shortest duration accepted. Leave empty for no minimum.

## `maxContractMonths` (type: `integer`):

For fixed-term contracts: longest duration accepted. Leave empty for no maximum.

## `minWeeklyHours` (type: `integer`):

Offers with at least this many working hours per week.

## `maxWeeklyHours` (type: `integer`):

Offers with at most this many working hours per week, useful for part-time searches.

## `minSalary` (type: `integer`):

Only offers that state a gross salary of at least this amount, in the period chosen below. Offers without a stated salary are left out.

## `salaryPeriod` (type: `string`):

Whether the minimum salary is per month, per year or per hour (gross).

## `qualificationLevel` (type: `string`):

Cadre (executive) or non-cadre offers only.

## `sectors` (type: `array`):

Keep only offers from these professional fields, as classified by France Travail. Leave empty for all fields.

## `includePartnerOffers` (type: `boolean`):

France Travail also lists offers from partner job boards. Turn off to keep only offers published directly on France Travail.

## `includeCompanies` (type: `array`):

Keep only offers whose employer name contains one of these names (for example Carrefour). Matching ignores accents and capitals.

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

Drop offers whose employer name contains one of these names, for example the staffing agencies you do not want.

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

Caps how many offers one employer can contribute, so a single large recruiter does not fill the whole dataset. Leave empty for no cap.

## `staffingAgencies` (type: `string`):

Keep direct employers only, or staffing and recruitment agencies only. The employer sector comes from the full offer details, so this filter needs "Fetch full details" turned on and is ignored otherwise.

## `handiEngageOnly` (type: `boolean`):

Only offers from employers recognised by France Travail as engaged in hiring people with disabilities (employeur handi-engagé).

## `adaptedCompaniesOnly` (type: `boolean`):

Only offers from entreprises adaptées, companies that employ a majority of workers with disabilities.

## `fewApplicantsOnly` (type: `boolean`):

Only offers France Travail flags as "be among the first to apply", meaning few candidates so far.

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

Adds the full description, ROME occupation, structured salary with yearly equivalent, benefits, skills, education, languages, driving licences, experience, employer profile, the apply link and any contact the offer publishes. It opens extra pages per offer, so runs are slower and each offer with details is billed as a details event.

## `maxResults` (type: `integer`):

How many offers to return in total. One France Travail search serves at most 1,150 offers; above that the Actor splits the search by département, contract type and field automatically.

## `monitorScope` (type: `string`):

Give this search a name (for example lyon-dev-cdi) to turn on monitoring. The Actor remembers which offers it already delivered under that name and returns only offers you have not seen before. Use one name per saved search. Leave empty to get everything every time.

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

Optional proxy. The public offer pages answer ordinary requests, so runs connect directly by default and only switch to the Apify datacenter proxy by themselves if requests start being refused. Choose a proxy here to force one.

## Actor input object example

```json
{
  "keywords": [
    "développeur"
  ],
  "excludeKeywords": [],
  "locations": [
    "Lyon"
  ],
  "radiusKm": "10",
  "postedWithin": "any",
  "sortBy": "date",
  "contractTypes": [],
  "workTime": "any",
  "salaryPeriod": "monthly",
  "qualificationLevel": "any",
  "sectors": [],
  "includePartnerOffers": true,
  "includeCompanies": [],
  "excludeCompanies": [],
  "staffingAgencies": "any",
  "handiEngageOnly": false,
  "adaptedCompaniesOnly": false,
  "fewApplicantsOnly": false,
  "includeDetails": false,
  "maxResults": 25,
  "monitorScope": "",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "keywords": [
        "développeur"
    ],
    "excludeKeywords": [],
    "locations": [
        "Lyon"
    ],
    "radiusKm": "10",
    "postedWithin": "any",
    "sortBy": "date",
    "contractTypes": [],
    "workTime": "any",
    "salaryPeriod": "monthly",
    "qualificationLevel": "any",
    "sectors": [],
    "includePartnerOffers": true,
    "includeCompanies": [],
    "excludeCompanies": [],
    "staffingAgencies": "any",
    "handiEngageOnly": false,
    "adaptedCompaniesOnly": false,
    "fewApplicantsOnly": false,
    "includeDetails": false,
    "maxResults": 25,
    "monitorScope": "",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/francetravail-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 = {
    "keywords": ["développeur"],
    "excludeKeywords": [],
    "locations": ["Lyon"],
    "radiusKm": "10",
    "postedWithin": "any",
    "sortBy": "date",
    "contractTypes": [],
    "workTime": "any",
    "salaryPeriod": "monthly",
    "qualificationLevel": "any",
    "sectors": [],
    "includePartnerOffers": True,
    "includeCompanies": [],
    "excludeCompanies": [],
    "staffingAgencies": "any",
    "handiEngageOnly": False,
    "adaptedCompaniesOnly": False,
    "fewApplicantsOnly": False,
    "includeDetails": False,
    "maxResults": 25,
    "monitorScope": "",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/francetravail-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 '{
  "keywords": [
    "développeur"
  ],
  "excludeKeywords": [],
  "locations": [
    "Lyon"
  ],
  "radiusKm": "10",
  "postedWithin": "any",
  "sortBy": "date",
  "contractTypes": [],
  "workTime": "any",
  "salaryPeriod": "monthly",
  "qualificationLevel": "any",
  "sectors": [],
  "includePartnerOffers": true,
  "includeCompanies": [],
  "excludeCompanies": [],
  "staffingAgencies": "any",
  "handiEngageOnly": false,
  "adaptedCompaniesOnly": false,
  "fewApplicantsOnly": false,
  "includeDetails": false,
  "maxResults": 25,
  "monitorScope": "",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call getascraper/francetravail-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/francetravail-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/ray1mlNCOi0J61Pug/builds/sc4sVt5Vg2nNoXxRc/openapi.json
