{
  "openapi": "3.0.1",
  "info": {
    "title": "France Travail Jobs Scraper: Offres d'emploi, Pôle Emploi",
    "description": "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.",
    "version": "0.1",
    "x-build-id": "sc4sVt5Vg2nNoXxRc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~francetravail-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-francetravail-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/getascraper~francetravail-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-francetravail-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/getascraper~francetravail-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-francetravail-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",
            "type": "array",
            "description": "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.",
            "default": [
              "développeur"
            ],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Offers whose title or summary contains any of these words are skipped (for example stage, alternance, freelance). Matching ignores accents and capitals.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Search page URLs",
            "type": "array",
            "description": "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.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "locations": {
            "title": "Places",
            "type": "array",
            "description": "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.",
            "default": [
              "Lyon"
            ],
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "Search radius",
            "enum": [
              "0",
              "5",
              "10",
              "20",
              "30",
              "40",
              "50",
              "60",
              "70",
              "80",
              "90",
              "100"
            ],
            "type": "string",
            "description": "Distance around a commune or postal code that is included in the search. It does not apply to départements, régions or France.",
            "default": "10"
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "31"
            ],
            "type": "string",
            "description": "Only offers published in this period. Combine with a monitor scope to follow new offers day after day.",
            "default": "any"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "date",
              "relevance",
              "distance"
            ],
            "type": "string",
            "description": "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.",
            "default": "date"
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "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.",
            "items": {
              "type": "string",
              "enum": [
                "CDI",
                "CDD",
                "MIS",
                "SAI",
                "DIN",
                "E2",
                "FS",
                "FV",
                "CC",
                "CI",
                "CU",
                "FRA",
                "PS",
                "CCE",
                "LIB",
                "REP",
                "I1",
                "FT",
                "FU",
                "ER",
                "EE"
              ],
              "enumTitles": [
                "CDI",
                "CDD",
                "Intérim (temporary agency)",
                "Saisonnier (seasonal)",
                "CDI intérimaire",
                "Contrat d'apprentissage",
                "Contrat de professionnalisation",
                "Préparation opérationnelle à l'emploi",
                "CDI de chantier ou d'opération",
                "Contrat intermittent",
                "Contrat d'usage",
                "Franchise",
                "Portage salarial",
                "Profession commerciale",
                "Profession libérale",
                "Reprise d'entreprise",
                "Insertion par l'activité économique",
                "CUI - CAE",
                "CUI - CIE",
                "Engagement à servir dans la réserve",
                "Contrat d'engagement éducatif"
              ]
            },
            "default": []
          },
          "workTime": {
            "title": "Working time",
            "enum": [
              "any",
              "fullTime",
              "partTime",
              "unspecified"
            ],
            "type": "string",
            "description": "Full-time or part-time offers. \"Not stated\" keeps only offers that do not say.",
            "default": "any"
          },
          "minContractMonths": {
            "title": "Minimum contract length",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "For fixed-term contracts: shortest duration accepted. Leave empty for no minimum."
          },
          "maxContractMonths": {
            "title": "Maximum contract length",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "For fixed-term contracts: longest duration accepted. Leave empty for no maximum."
          },
          "minWeeklyHours": {
            "title": "Minimum weekly hours",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Offers with at least this many working hours per week."
          },
          "maxWeeklyHours": {
            "title": "Maximum weekly hours",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Offers with at most this many working hours per week, useful for part-time searches."
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "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": {
            "title": "Salary period",
            "enum": [
              "monthly",
              "yearly",
              "hourly"
            ],
            "type": "string",
            "description": "Whether the minimum salary is per month, per year or per hour (gross).",
            "default": "monthly"
          },
          "qualificationLevel": {
            "title": "Executive status",
            "enum": [
              "any",
              "executive",
              "nonExecutive"
            ],
            "type": "string",
            "description": "Cadre (executive) or non-cadre offers only.",
            "default": "any"
          },
          "sectors": {
            "title": "Professional fields",
            "type": "array",
            "description": "Keep only offers from these professional fields, as classified by France Travail. Leave empty for all fields.",
            "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": [
                "Achats / Comptabilité / Gestion",
                "Arts / Artisanat d'art",
                "Banque / Assurance",
                "Bâtiment / Travaux Publics",
                "Commerce / Vente",
                "Communication / Multimédia",
                "Conseil / Etudes",
                "Direction d'entreprise",
                "Espaces verts et naturels / Agriculture / Pêche",
                "Hôtellerie - Restauration / Tourisme / Animation",
                "Immobilier",
                "Industrie",
                "Informatique / Télécommunication",
                "Installation / Maintenance",
                "Marketing / Stratégie commerciale",
                "Ressources Humaines",
                "Santé",
                "Secrétariat / Assistanat",
                "Services à la personne / à la collectivité",
                "Spectacle",
                "Sport",
                "Transport / Logistique"
              ]
            },
            "default": []
          },
          "includePartnerOffers": {
            "title": "Include partner offers",
            "type": "boolean",
            "description": "France Travail also lists offers from partner job boards. Turn off to keep only offers published directly on France Travail.",
            "default": true
          },
          "includeCompanies": {
            "title": "Only these employers",
            "type": "array",
            "description": "Keep only offers whose employer name contains one of these names (for example Carrefour). Matching ignores accents and capitals.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Skip these employers",
            "type": "array",
            "description": "Drop offers whose employer name contains one of these names, for example the staffing agencies you do not want.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxPerCompany": {
            "title": "Maximum offers per employer",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "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": {
            "title": "Staffing agencies",
            "enum": [
              "any",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "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.",
            "default": "any"
          },
          "handiEngageOnly": {
            "title": "Disability-committed employers only",
            "type": "boolean",
            "description": "Only offers from employers recognised by France Travail as engaged in hiring people with disabilities (employeur handi-engagé).",
            "default": false
          },
          "adaptedCompaniesOnly": {
            "title": "Adapted companies only",
            "type": "boolean",
            "description": "Only offers from entreprises adaptées, companies that employ a majority of workers with disabilities.",
            "default": false
          },
          "fewApplicantsOnly": {
            "title": "Few applicants only",
            "type": "boolean",
            "description": "Only offers France Travail flags as \"be among the first to apply\", meaning few candidates so far.",
            "default": false
          },
          "includeDetails": {
            "title": "Fetch full details",
            "type": "boolean",
            "description": "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.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "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.",
            "default": 25
          },
          "monitorScope": {
            "title": "Monitor scope name",
            "type": "string",
            "description": "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.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "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.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}