{
  "openapi": "3.0.1",
  "info": {
    "title": "France Travail Jobs Scraper — French Job Offers & Salaries",
    "description": "Scrape job offers from France Travail (ex-Pôle emploi) and the partner job boards it lists, by keyword, ROME code, city, department or region. Filter by contract, date, domain, experience and salary; add the full offer with salary, skills and licences. No login. From US$1.05 per 1,000 jobs.",
    "version": "0.1",
    "x-build-id": "qg0eynMKBVFQwsuve"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fabrikit~france-travail-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fabrikit-france-travail-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/fabrikit~france-travail-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fabrikit-france-travail-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/fabrikit~france-travail-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fabrikit-france-travail-jobs-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "title": "Keywords or ROME codes",
            "type": "array",
            "description": "Job titles, skills or ROME occupation codes, one search per entry (for example: comptable, développeur, aide-soignant, N4101). Each keyword is combined with each place. Leave empty to list every offer in the places below.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Places",
            "type": "array",
            "description": "Cities, departments, regions or France, one search per entry: \"Lyon\", \"Toulouse\", \"Gironde\", \"33\", \"Bretagne\", \"France\". Site place codes also work (75D, 53R, 31555). Leave empty to search all of France.",
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "Radius around a city",
            "enum": [
              "default",
              "0",
              "5",
              "10",
              "20",
              "30",
              "40",
              "50",
              "60",
              "70",
              "80",
              "90",
              "100"
            ],
            "type": "string",
            "description": "Distance around each city. Ignored for departments, regions and France.",
            "default": "default"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Newest offers first, or France Travail's relevance order.",
            "default": "date"
          },
          "postedWithin": {
            "title": "Published within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "31"
            ],
            "type": "string",
            "description": "Only offers published in this period.",
            "default": "any"
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Only these contracts. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "CDI",
                "CDD",
                "MIS",
                "DIN",
                "SAI",
                "E2",
                "FS",
                "FV",
                "CC",
                "EE",
                "CI",
                "FJ",
                "CU",
                "FT",
                "FU",
                "ER",
                "FRA",
                "I1",
                "PS",
                "CCE",
                "LIB",
                "REP"
              ],
              "enumTitles": [
                "CDI - permanent",
                "CDD - fixed-term",
                "Intérim - temporary agency work",
                "CDI intérimaire - permanent temp-agency contract",
                "Saisonnier - seasonal",
                "Apprenticeship (contrat d'apprentissage)",
                "Work-study (contrat de professionnalisation)",
                "Pre-hiring training (POE)",
                "Project-based permanent (CDI de chantier)",
                "Contrat d'engagement éducatif",
                "Contrat intermittent",
                "Contrat PACTE",
                "Contrat d'usage",
                "Subsidised contract CUI-CAE",
                "Subsidised contract CUI-CIE",
                "Engagement à servir dans la réserve",
                "Franchise",
                "Insertion par l'activité économique",
                "Portage salarial",
                "Commercial agent (profession commerciale)",
                "Self-employed (profession libérale)",
                "Business takeover (reprise d'entreprise)"
              ]
            }
          },
          "workingTime": {
            "title": "Working time",
            "type": "array",
            "description": "Full-time, part-time and/or offers that do not say. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "not-specified"
              ],
              "enumTitles": [
                "Full-time (temps plein)",
                "Part-time (temps partiel)",
                "Not specified"
              ]
            }
          },
          "domains": {
            "title": "Professional domains",
            "type": "array",
            "description": "Only offers in these France Travail domains. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "M",
                "B",
                "C",
                "F",
                "D",
                "E",
                "M14",
                "M13",
                "A",
                "G",
                "C15",
                "H",
                "M18",
                "I",
                "M17",
                "M15",
                "J",
                "M16",
                "K",
                "L",
                "L14",
                "N"
              ],
              "enumTitles": [
                "Purchasing / Accounting / Management",
                "Arts / Crafts",
                "Banking / Insurance",
                "Construction / Public works",
                "Retail / Sales",
                "Communication / Multimedia",
                "Consulting / Research",
                "Business management",
                "Agriculture / Fishing / Green spaces / Animal care",
                "Hospitality / Restaurants / Tourism / Leisure",
                "Real estate",
                "Industry / Manufacturing",
                "IT / Telecom",
                "Installation / Maintenance",
                "Marketing / Sales strategy",
                "Human resources",
                "Healthcare",
                "Administrative / Secretarial",
                "Personal and community services",
                "Performing arts / Entertainment",
                "Sport",
                "Transport / Logistics"
              ]
            }
          },
          "experienceLevels": {
            "title": "Experience asked",
            "type": "array",
            "description": "Only offers asking for this much experience. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "under-1-year",
                "1-3-years",
                "over-3-years",
                "not-specified"
              ],
              "enumTitles": [
                "Less than 1 year",
                "1 to 3 years",
                "More than 3 years",
                "Not specified"
              ]
            }
          },
          "qualification": {
            "title": "Qualification",
            "type": "array",
            "description": "Executive (cadre) and/or non-executive positions. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "executive",
                "non-executive",
                "not-specified"
              ],
              "enumTitles": [
                "Executive (cadre)",
                "Non-executive (non cadre)",
                "Not specified"
              ]
            }
          },
          "salaryMin": {
            "title": "Minimum gross salary (EUR)",
            "minimum": 1,
            "type": "integer",
            "description": "Only offers paying at least this gross amount in euros, per the period below (France Travail's own salary filter)."
          },
          "salaryPeriod": {
            "title": "Salary period",
            "enum": [
              "monthly",
              "yearly",
              "hourly",
              "per-performance"
            ],
            "type": "string",
            "description": "Period of the minimum salary above.",
            "default": "monthly"
          },
          "minContractMonths": {
            "title": "Minimum contract length (months)",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "For fixed-term and temporary contracts: shortest duration in months."
          },
          "maxContractMonths": {
            "title": "Maximum contract length (months)",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "For fixed-term and temporary contracts: longest duration in months."
          },
          "fewApplicantsOnly": {
            "title": "Offers with few applicants only",
            "type": "boolean",
            "description": "France Travail's 'Soyez parmi les 1ers à postuler' filter: offers older than 15 days with fewer than 4 applications known to France Travail.",
            "default": false
          },
          "disabilityCommittedEmployersOnly": {
            "title": "Disability-committed employers only",
            "type": "boolean",
            "description": "Only employers recognised as 'handi-engagé' by France Travail, Cap emploi and their partners.",
            "default": false
          },
          "adaptedCompaniesOnly": {
            "title": "Adapted companies only",
            "type": "boolean",
            "description": "Only 'entreprises adaptées', companies employing mainly workers with disabilities.",
            "default": false
          },
          "includePartnerOffers": {
            "title": "Include partner job boards",
            "type": "boolean",
            "description": "France Travail also lists offers from partner job boards (Meteojob, Beetween, Broadbean, Skello, Cookorico and others). Turn off to keep only offers posted directly with France Travail.",
            "default": true
          },
          "searchUrls": {
            "title": "France Travail search URLs",
            "type": "array",
            "description": "Optional: search URLs copied from candidat.francetravail.fr/offres/recherche with your filters already set. Each one is followed slice by slice.",
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Include offer details",
            "type": "boolean",
            "description": "Read each offer's full record: complete description, ROME code and occupation, salary text with parsed min/max/period, contract duration, schedule, benefits, qualification, experience, education, skills, soft skills, languages, driving licences, sector, company size and description, employer page and last update date. One extra request per offer, charged as the 'job-details' event. Off = fastest and cheapest.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum offers",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many unique offers across all searches (exact; duplicates are removed before counting). France Travail shows at most 1,150 offers per search: split big searches by place, contract or domain.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings. The Actor starts on the configured proxy (datacenter by default) and switches to Apify RESIDENTIAL (France) automatically if France Travail starts refusing requests.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}