{
  "openapi": "3.0.1",
  "info": {
    "title": "Cadremploi Jobs Scraper",
    "description": "[💰 $1.25 / 1K] Extract French executive & management jobs from Cadremploi — title, company, location, salary, contract type, job function, posted date, full description, contacts, and apply link. Search by keyword, location, function, and date, or paste Cadremploi URLs.",
    "version": "1.0",
    "x-build-id": "kSTxX80ywA4b9lvi7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~cadremploi-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-cadremploi-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/solidcode~cadremploi-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-cadremploi-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/solidcode~cadremploi-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-cadremploi-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": {
          "searchQueries": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Job titles, roles, or skills to search for, such as 'responsable marketing', 'directeur financier', or 'chef de projet'. Each keyword runs its own search. Leave empty to scan the latest jobs, or if you only want to use the URLs further down.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, or département to search around, such as 'Paris', 'Lyon', or 'Île-de-France'. Matches what you would type into Cadremploi's location box. Applied to every keyword search above."
          },
          "radius": {
            "title": "Search Radius (km)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How far around the chosen location to search, in kilometres. Only used when a location is set. Leave at 20 (Cadremploi's default) unless you want a wider or tighter area.",
            "default": 20
          },
          "contractType": {
            "title": "Contract Type",
            "enum": [
              "",
              "CDI",
              "CDD",
              "STATUTAIRE",
              "FREELANCE",
              "STAGE",
              "ALTERNANCE",
              "FRANCHISE"
            ],
            "type": "string",
            "description": "Limit the search to a single contract type. Leave on 'Any' to include all contract types.",
            "default": ""
          },
          "jobFunction": {
            "title": "Job Function",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only jobs in these job functions (business areas), such as Marketing, IT, Finance, or Sales. Pick one or more. Leave empty to include every function.",
            "items": {
              "type": "string",
              "enum": [
                "DIRECTION",
                "COMMERCIAL",
                "MARKETING",
                "COMMUNICATION",
                "FINANCE",
                "AUDIT",
                "RH",
                "JURIDIQUE",
                "INFORMATIQUE",
                "INTERNET_ECOMMERCE",
                "ETUDES_RECHERCHE",
                "PRODUCTION",
                "LOGISTIQUE_ACHATS",
                "EXPORT",
                "CONSEIL",
                "ADMINISTRATION",
                "SANTE_MEDICAL",
                "SANTE_INDUSTRIE"
              ],
              "enumTitles": [
                "General Management",
                "Sales & Business Development",
                "Marketing",
                "Communication & Creative",
                "Accounting & Finance",
                "Audit",
                "Human Resources",
                "Legal & Tax",
                "IT & Telecom",
                "Internet & e-Commerce",
                "Studies & Research",
                "Production, Maintenance & Quality",
                "Logistics, Purchasing & Supply Chain",
                "Export",
                "Consulting",
                "Administration & General Services",
                "Healthcare (Medical) & Social",
                "Healthcare (Industry)"
              ]
            },
            "default": []
          },
          "postedSince": {
            "title": "Date Posted",
            "enum": [
              "",
              "1",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only keep jobs posted within this time window. Cadremploi has no server-side date filter, so this is applied to the jobs we collect: a filtered search stops early once it runs past the window (results are roughly newest-first). Leave on 'Any time' to include all jobs.",
            "default": ""
          },
          "remoteOnly": {
            "title": "Remote Jobs Only",
            "type": "boolean",
            "description": "Keep only jobs that mention remote work or télétravail. Applied to the jobs we collect (Cadremploi has no remote checkbox). Works best with 'Fetch Full Job Details' on, so the full description is searched — with details off, only the job title and preview are checked.",
            "default": false
          },
          "startUrls": {
            "title": "Cadremploi URLs",
            "type": "array",
            "description": "Optional. Paste full Cadremploi search or individual job URLs directly from your browser. Useful for advanced searches the fields above don't cover. You can mix URLs with the keyword search.",
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Fetch Full Job Details",
            "type": "boolean",
            "description": "On by default. Each job card already includes the title, company, location, salary, contract type, and posted date. Keep this on to also fetch the full job description, exact posted date, structured salary, apply link, and any contact details from each job's own page. Turn it off for faster runs that return list fields only — each job needs an extra page visit, so large searches run longer with this on.",
            "default": true
          },
          "maxResults": {
            "title": "Maximum Results",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on the total number of jobs returned across all searches and URLs. Leave blank or use the default (50) for a quick first run; raise it for larger pulls. Set it to 0 only if you want EVERY matching job with no limit — the run then keeps paging until Cadremploi runs out of jobs, up to a 100,000-result safety ceiling (billed per result), so use 0 deliberately. Results are fetched a page at a time, so a small cap can return up to a full page more than you asked for.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}