{
  "openapi": "3.0.1",
  "info": {
    "title": "iCIMS API | Live Jobs from iCIMS Career Sites",
    "description": "iCIMS API for live job postings. Pull every open role from any iCIMS career site as structured JSON: title, employer, locations, requisition ID, salary, posted date, full description, and apply URL. Return only the jobs that changed since a date you pick. Works without a login. MCP-ready.",
    "version": "0.0",
    "x-build-id": "dBITs7bI2wUtlqOxk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/johnvc~icims-careers-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-johnvc-icims-careers-api",
        "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/johnvc~icims-careers-api/runs": {
      "post": {
        "operationId": "runs-sync-johnvc-icims-careers-api",
        "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/johnvc~icims-careers-api/run-sync": {
      "post": {
        "operationId": "run-sync-johnvc-icims-careers-api",
        "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": {
          "startUrls": {
            "title": "iCIMS career site URLs",
            "type": "array",
            "description": "Career sites to collect. Every common form works and is detected automatically: a career-site root such as https://careers-rambus.icims.com, a sitemap such as https://careers-rambus.icims.com/sitemap.xml, a search page such as https://careers-rambus.icims.com/jobs/search, a single job page such as https://careers-rambus.icims.com/jobs/23020/job, or a modern iCIMS career site on the employer's own domain such as https://careers.icims.com. Provide this, or companies, or both.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "companies": {
            "title": "Company names",
            "type": "array",
            "description": "A shortcut for classic iCIMS tenants. The name rambus is expanded to https://careers-rambus.icims.com. Use this when you know the employer but not the URL. Full URLs are also accepted here and are treated the same as startUrls.",
            "items": {
              "type": "string"
            }
          },
          "newerThan": {
            "title": "Only jobs changed since",
            "type": "string",
            "description": "Return only jobs posted or updated since this moment, which is how you monitor a career site instead of re-collecting it. Accepts a relative window (24h, 7d, 2w) or an ISO timestamp (2026-08-01, or 2026-08-01T12:00:00Z). On classic iCIMS portals the filter is applied to the sitemap's change timestamps before any job page is fetched, so unchanged jobs cost nothing at all: a weekly window on a 500 job career site fetches only the jobs that actually moved. Modern career sites carry dates in the job list, so unchanged jobs are filtered out before any extra request too. Leave empty to collect every live job."
          },
          "cutoffField": {
            "title": "Apply the cutoff to",
            "enum": [
              "updated",
              "posted"
            ],
            "type": "string",
            "description": "Which date the cutoff above compares against. Choose 'Posted or updated' to catch edits to older postings, which is what you want when monitoring for any change. Choose 'Posted date only' when you want genuinely new roles and not edits: on modern iCIMS career sites that also lets the run ask for newest-first and stop as soon as it reaches older jobs, so a weekly window on a large career site reads one or two pages instead of all of them. Ignored when no cutoff is set.",
            "default": "updated"
          },
          "includeDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "On by default, giving the full record: description, employment type, locations, category, dates, and apply URL. Turn it off for list-only mode, which returns just the job URL, id, and change timestamp for every live job. List-only is the cheap way to poll a career site on a schedule and detect what changed, then re-run with details on only the jobs you care about.",
            "default": true
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "both",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "How to render the job description. Choose both for plain text plus the original HTML, text for plain text only, html for the original markup only, or markdown for plain text plus a Markdown rendering that keeps headings and bullet lists. Markdown is the friendliest option for feeding descriptions to an AI model.",
            "default": "both"
          },
          "keywords": {
            "title": "Keyword filter",
            "type": "array",
            "description": "Keep only jobs matching at least one of these keywords. On modern iCIMS career sites the terms are sent to the site's own search. On classic portals the match is applied here, against the job title, category, and description. Leave empty to keep every job.",
            "items": {
              "type": "string"
            }
          },
          "maxJobsPerSite": {
            "title": "Maximum jobs per career site",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many jobs from each career site. Set 0 to collect every live job. When a change-detection window is set, the newest jobs are collected first, so a small limit still returns the most recent activity.",
            "default": 0
          },
          "maxJobs": {
            "title": "Maximum jobs in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the whole run after this many jobs across every career site. Set 0 for no overall limit. Useful as a single cost ceiling when collecting many employers at once.",
            "default": 0
          },
          "detailConcurrency": {
            "title": "Parallel detail requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many job pages to fetch at once from a classic iCIMS portal. The default of 5 is a good balance of speed and politeness. Lower it if a career site is slow or starts refusing requests.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy settings. Some employers restrict their iCIMS career site to trusted networks and refuse ordinary requests; those runs report the ip_gated error code. Enabling residential proxies resolves most of them. A few employers allow only their own corporate network, and those sites cannot be collected from anywhere else.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}