# Security Clearance Jobs & Cybersecurity Jobs Feed (`clearsignaldata/cleared-cyber-jobs-feed`) Actor

Security-clearance and cybersecurity jobs from 82 defense-tech, space and cyber employers' public Greenhouse, Lever and Ashby job boards, with rule-based clearance level, certifications, salary and change detection.

- **URL**: https://apify.com/clearsignaldata/cleared-cyber-jobs-feed.md
- **Developed by:** [Tanner Conaway](https://apify.com/clearsignaldata) (community)
- **Categories:** Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.80 / 1,000 job results

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

## Cleared & Cyber Jobs Feed

Security-clearance and cybersecurity jobs from **82 defense-tech, space and cyber employers on Greenhouse, Lever and
Ashby, not the major primes (Workday)**. Each job comes with a rule-based clearance level and status, the exact
sentence that clearance came from, certifications, salary, remote status and change tracking between runs.

### What it does

1. Reads each employer's **public job-board API**: Greenhouse Job Board API, Lever Postings API and Ashby Posting API.
   These are the endpoints the employers publish for their own careers pages. No logins, no proxies, no browser and no
   scraping of anything behind bot protection.
2. Classifies every posting with **plain rules, no AI-generated fields**:
   - **Clearance level**: Public Trust, Secret, Top Secret, TS/SCI, TS/SCI + polygraph.
   - **Clearance status**: does the job need an *active* clearance, the *ability to obtain* one, or only *prefer* one?
   - **Evidence and confidence**: the clause the decision came from, plus `high`, `medium` or `low`.
   - Certifications (Security+, CISSP, CySA+, CEH, OSCP, GIAC, AWS Certified and more), DoD 8570/8140 categories,
     salary, remote/hybrid, US state.
3. Filters by clearance tier, minimum level, location (state names, "Remote" or free text), keywords and remote-only.
4. Remembers what it has seen, so a scheduled run can return **only jobs that are new since the last run**, and it
   reports updated and removed postings per company.
5. Writes a **run summary** with per-company counts, per-tier counts, Florida and remote counts, and every board that failed.

#### Coverage, plainly

- **Covered:** 82 employers that post on Greenhouse (60), Ashby (16) or Lever (6): 28 defense tech, 13 space and 41
  cybersecurity or security-heavy tech companies. About 14,600 open jobs in total, about 740 of which ask for an
  active clearance (October 2026).
- **Not covered: the major primes and large government-services firms** (Lockheed Martin, Northrop Grumman, RTX,
  General Dynamics/GDIT, L3Harris, Leidos, Booz Allen, SAIC, CACI, Peraton, BAE). They use Workday or other systems
  that have no public jobs API, and Workday's site terms prohibit scraping. This feed does not reach them.
- **Concentration:** Anduril alone is about 40% of active-clearance jobs. Use `excludeCompanies: ["Anduril"]` if it
  crowds your results.
- You can add any other Greenhouse, Lever or Ashby employer yourself (see below).

<details>
<summary>The 82 built-in companies</summary>

- **Defense tech (28):** Anduril, Babel Street, Chaos Industries, Defense Unicorns, Epirus, Hermeus, Mach Industries, Merlin Labs, Nava PBC, Oddball, Onebrief, Palantir, Picogrid, Raft, Red 6, Rhombus Power, Rune Technologies, Saronic, Scale AI, Seekr, Shield AI, Shift5, Silvus, Skydio, Skylight, Two Six Technologies, Vannevar Labs, Virtualitics
- **Space (13):** Albedo, Astranis, BlackSky, HawkEye 360, Muon Space, Planet, Relativity Space, Rocket Lab, SpaceX, Spire Global, Ursa Major, Varda, Vast
- **Cybersecurity and security-heavy tech (41):** 1Password, Abnormal Security, Anthropic, Axonius, Bitwarden, Bugcrowd, Censys, Chainguard, Cloudflare, Coalition, Coinbase, Cribl, Datadog, Dragos, Elastic, Expel, HackerOne, Horizon3.ai, Huntress, Island, Keeper Security, KnowBe4, Material Security, Netskope, Nozomi Networks, Okta, Orca Security, Recorded Future, Semgrep, SentinelOne, Snyk, Socket, Sophos, Synack, Tanium, Tines, Torq, Vanta, Wiz, Zimperium, Zscaler

The list, with ATS and board slug, is in `data/companies.json`.

</details>

### Use cases

- **Cleared job seekers:** "Every job in Florida or remote that wants an active Secret or higher," refreshed daily
  with only the new ones, and the exact sentence showing why each job matched.
- **Cleared recruiters:** track which employers are hiring at which clearance level, spot new requisitions the day
  they post, and see salary ranges and required certifications (Security+, CISSP, DoD 8140) in one table.
- **Job boards and aggregators:** a clean, structured feed with stable job keys, posted and updated dates, apply URLs
  and change types (`new`, `updated`, `unchanged`) for incremental ingestion.

### Sample output

Real run on 2026-10-24 with `{"clearanceFilter": "active", "locations": ["Florida", "Remote"], "includeCyberRoles": false}`.
It scanned 82 of 82 boards (14,620 jobs) and output 51 jobs: 6 in Florida and 46 remote.

| Title | Company | Location | Remote | Cyber role | Clearance | Certs | Salary | Posted |
|---|---|---|---|---|---|---|---|---|
| Senior Engineer | Raft | Tampa, FL | No | No | Secret | Security+ | $120k–$210k | 2026-10-19 |
| Deployment Strategist - US Government | Palantir | Miami, FL | No | No | Top Secret | — | — | 2026-09-02 |
| Engagement Manager, Public Sector (Miami, FL) | Scale AI | Miami, FL | No | No | TS/SCI | — | $138k–$208k | 2026-10-12 |
| Mission Lead - Tampa (Clearance Required) | Vannevar Labs | Tampa, Florida | No | No | Top Secret | — | — | 2026-09-10 |
| Technical Cyber Threat Investigator | Anthropic | San Francisco, CA; New York, NY; Washington, DC | Yes (office tag) | Yes | Top Secret | — | $230k–$290k | 2026-01-13 |
| Mission Director - Cyber | Defense Unicorns | United States - Remote | Yes | Yes | Secret | — | — | 2026-02-04 |
| Platform Engineer - FedD180/FedD181 | Defense Unicorns | United States - Remote | Yes | No | Secret | Security+, AWS Certified | $123k–$167k | 2026-08-04 |
| Senior Site Reliability Engineer (Arlington, VA) - Relocation Provided | Onebrief | United States | Remote | Yes | No | Top Secret | Security+, CKA, CKAD | $180k–$220k | 2026-09-14 |
| Principal Mission Architect | Muon Space | Remote | Yes | No | TS/SCI | — | $174k–$250k | 2026-01-23 |
| Sr. Staff Site Reliability Engineer-Federal, Security Clearance | Zscaler | Crystal City, Virginia | Yes (office tag) | No | Secret | — | $140k–$200k | 2026-05-07 |

The sample input leaves out cyber roles that don't require a clearance (`includeCyberRoles: false`), so only two
cyber-titled jobs appear here. With the default input, about 750 cyber-titled jobs (security engineer, SOC, threat
intel, GRC, ISSO and more) are included alongside the cleared ones.

"Yes (office tag)" means the posting's main location is an office, but the employer also tagged it with a Remote
office or location (`remoteConfidence: "low"`).

#### One full record

```json
{
  "recordType": "job",
  "jobKey": "greenhouse:raft:6224365004",
  "title": "Senior Engineer",
  "company": "Raft",
  "companySlug": "raft",
  "sector": "defense_tech",
  "ats": "greenhouse",
  "location": "Tampa, FL",
  "locations": ["Tampa, FL"],
  "states": ["FL"],
  "isRemote": false,
  "workplaceType": "unknown",
  "remoteSource": "location_text",
  "remoteConfidence": "low",
  "clearanceLevel": "secret",
  "clearanceStatus": "active_required",
  "clearanceCountry": "US",
  "clearanceLevelsMentioned": ["secret", "ts_sci"],
  "clearanceEvidence": "Active Secret clearance required",
  "clearanceConfidence": "high",
  "isCyberRole": false,
  "certifications": ["Security+"],
  "dod8140Mentioned": false,
  "dod8140Levels": [],
  "salaryMin": 120000,
  "salaryMax": 210000,
  "salaryCurrency": "USD",
  "salaryInterval": "year",
  "salarySource": "description_text",
  "salaryConfidence": "high",
  "salaryText": "$120,000.00 - $210,000.00",
  "department": "Engineering",
  "postedAt": "2026-10-19T12:39:54-04:00",
  "updatedAt": "2026-10-20T12:35:20-04:00",
  "applyUrl": "https://job-boards.greenhouse.io/raft/jobs/6224365004",
  "atsSource": "greenhouse",
  "scrapedAt": "2026-10-24T18:50:30+00:00",
  "isNew": true,
  "changeType": "new",
  "changedFields": [],
  "firstSeenAt": "2026-10-24T18:50:30+00:00"
}
```

`clearanceLevelsMentioned` lists every level named anywhere in the posting. Here the posting requires Secret and
also mentions TS/SCI elsewhere.

### Input

| Field | Default | What it does |
|---|---|---|
| `clearanceFilter` | `active` | `active`: the posting asks for an active/current clearance. `required`: active, or "clearance required" without saying active. `any`: any clearance mention, including "ability to obtain", "preferred" and "may be required". `none`: no clearance filter. |
| `minClearanceLevel` | `any` | Keep jobs at or above `public_trust`, `secret`, `ts`, `ts_sci` or `poly`. |
| `includeCyberRoles` | `true` | Also keep cybersecurity-titled jobs (security engineer, SOC, threat intel, GRC, ISSO, pentest…) that do not mention a clearance. Ignored when `minClearanceLevel` is set. |
| `locations` | `[]` | Keep jobs matching any term: a US state (`"Florida"`, `"FL"`), `"Remote"`, or free text (`"Huntsville"`). |
| `remoteOnly` | `false` | Fully remote jobs only (hybrid is not remote). |
| `keywords` | `[]` | Keep jobs whose title or description contains any of these (whole word). |
| `newSinceLastRun` | `false` | Output only jobs not seen before. |
| `useDefaultCompanies` | `true` | Include the 82 built-in employers. |
| `additionalCompanies` | `[]` | Your own boards, e.g. `[{"ats": "greenhouse", "slug": "examplecorp", "name": "Example Corp"}]`. |
| `excludeCompanies` | `[]` | Names or slugs to skip, e.g. `["Anduril"]`. |
| `usClearancesOnly` | `true` | Drop non-US clearance requirements (Australian NV1, UK SC/DV). |
| `includeDescription` | `false` | Add the plain-text description to each record. |
| `maxResults` | none | Stop after this many jobs. |
| `summaryInDataset` | `false` | Also append the run summary as the last dataset record (`recordType: "run_summary"`). It is always saved to the key-value store as `SUMMARY` and shown in the run's Output tab. |
| `stateStoreName` | `cleared-cyber-jobs-state` | Named store used for change detection. Use a different name to keep a separate history. |

Example: active TS/SCI or higher, Florida or remote, new jobs only, without Anduril:

```json
{
  "clearanceFilter": "active",
  "minClearanceLevel": "ts_sci",
  "locations": ["Florida", "Remote"],
  "newSinceLastRun": true,
  "excludeCompanies": ["Anduril"]
}
```

#### Adding your own companies

Find the board slug in the employer's careers URL:

| ATS | Careers URL | Input |
|---|---|---|
| Greenhouse | `boards.greenhouse.io/<slug>` or `job-boards.greenhouse.io/<slug>` | `{"ats": "greenhouse", "slug": "<slug>"}` |
| Lever | `jobs.lever.co/<slug>` | `{"ats": "lever", "slug": "<slug>"}` |
| Ashby | `jobs.ashbyhq.com/<slug>` | `{"ats": "ashby", "slug": "<slug>"}` |

Invalid entries are skipped and listed in the summary under `invalidCompanies` (for example `invalid_slug`, or
`unsupported_ats` for Workday). Boards that do not exist are listed under `failures` as `board_not_found`. Neither one
stops the rest of the run.

### How clearances are classified

Rules only. Each job reports the strongest requirement it found:

| `clearanceStatus` | Example wording |
|---|---|
| `active_required` | "Active TS/SCI with Polygraph", "Must hold an active Secret clearance" |
| `required` | "TS/SCI clearance required", or a bare "Secret security clearance" bullet under a *Required qualifications* heading |
| `eligibility_required` | "Ability to obtain and maintain a Secret clearance", "Active clearance, **or** eligibility to obtain one", "active or previously held" |
| `preferred` | "Active Secret clearance is a plus", anything under a *Preferred / Nice to have* heading |
| `may_be_required` | "may be required depending on program", "an active clearance may provide the opportunity…" |
| `mentioned` | A clearance is named with no requirement wording |
| `not_required` | "No clearance required" |
| `none` | No clearance language |

Details that matter:

- **Alternatives resolve to the lowest level that qualifies.** "Active Secret or TS" is reported as `secret`.
  "Active TS/SCI with Polygraph" is `poly`.
- **Up-level wording is not the requirement.** In "Active Secret clearance with TS/SCI eligibility" the requirement
  is `secret`. TS/SCI appears in `clearanceLevelsMentioned`.
- **Known false positives are excluded:** the "Employee Polygraph Protection Act" legal poster, "Top Secret data
  centers", mechanical or customs "clearance", and "national security" mission statements.
- **`clearanceConfidence`:** `high` means explicit requirement wording plus an explicit level. `medium` means the
  level is not stated or several levels compete. `low` means hedged, mentioned only, or title only.
- DOE Q maps to `ts` and DOE L to `secret`. SSBI maps to `ts`.

Other inferred fields carry their source:

- `remoteSource`: `ats_field` (the ATS's own remote/hybrid/onsite field) → `remoteConfidence: high`;
  `location_text` → `medium`; `secondary_location` (a Remote office tag next to a physical location) → `low`.
  Ashby marks hybrid roles `isRemote: true`. This Actor reports them as hybrid, not remote.
- `salarySource`: `ats_field` (Lever and Ashby structured pay) → `high`; `description_text` → `high` when the range sits
  next to words like salary, pay or compensation, otherwise `medium`. Greenhouse has no structured pay, so its salary
  always comes from the text.
- `certifications` are exact mentions. "AWS" alone is not a certification ("AWS Certified …" is), and "CISA" counts
  only when the sentence is about certifications, because CISA is also a federal agency.

### Run summary

Saved as `SUMMARY` in the key-value store and shown in the run's **Output** tab next to the results table. It is never
charged. Set `summaryInDataset: true` to also append it to the dataset.

```json
{
  "recordType": "run_summary",
  "durationSec": 55.5,
  "companiesRequested": 82,
  "companiesSucceeded": 82,
  "companiesFailed": 0,
  "jobsOutput": 51,
  "fetched": {
    "jobs": 14620,
    "activeClearanceRequired": 736,
    "clearanceRequired": 912,
    "clearanceAnyMention": 3801,
    "cyberRoles": 757,
    "florida": 269,
    "remote": 2263,
    "byClearanceStatus": { "active_required": 736, "required": 176, "eligibility_required": 2132, "preferred": 580,
                           "may_be_required": 156, "mentioned": 18, "not_required": 3, "none": 10819 },
    "byClearanceLevel": { "public_trust": 9, "secret": 1397, "ts": 791, "ts_sci": 323, "poly": 59, "unspecified": 1219, "none": 10822 }
  },
  "output": { "jobs": 51, "florida": 6, "remote": 46, "byClearanceLevel": { "secret": 18, "ts": 12, "ts_sci": 10, "unspecified": 11 } },
  "failures": [],
  "invalidCompanies": [],
  "excludedCompanies": [],
  "perCompany": [
    { "company": "Raft", "status": "ok", "jobs": 30, "activeClearanceRequired": 18, "florida": 5, "remote": 2,
      "matched": 1, "output": 1, "newSinceLastRun": null, "removedSinceLastRun": null, "firstRunForCompany": true }
  ]
}
```

`perCompany[*].status` is `ok`, `failed` (with `error` set to `board_not_found`, `fetch_error` or `parse_error`) or
`skipped` (the run stopped early because of `maxResults` or your spending limit).

### Change detection

For every board, the Actor stores a snapshot of each job (title, location, clearance, salary, remote) in a named
key-value store. On the next run each job gets `changeType` `new`, `updated` (with `changedFields`) or `unchanged`,
plus `firstSeenAt`. Removed jobs are counted per company in the summary. State is built from **every job fetched**,
not only the filtered ones, so changing filters does not make old jobs look new. On the first run every job is new.

### Pricing

Pay per event: **$0.003 per job board scanned** (failed boards are free) plus **$0.004 per job** returned. A run over
all 82 boards that finds nothing costs $0.25, the Florida + Remote sample above costs $0.45, and a daily "new jobs
only" feed costs about $8 a month. See `docs/PRICING.md` for the cost math.

A full 82-board run takes about 5 minutes at the default 1 GB memory. More memory gives the run more CPU, so it
finishes faster at about the same platform cost.

### Disclaimer

Job data comes from each employer's public job board and is provided for information only. Clearance level, status,
remote status, certifications and salary are extracted by rules from the posting text and can be wrong or out of
date. **Always verify the requirements on the employer's posting before applying or making hiring decisions.** This
Actor is not affiliated with, or endorsed by, any employer listed, Greenhouse, Lever, Ashby or any government agency.

### Development

```bash
python3 -m venv .venv && .venv/bin/pip install -r requirements-dev.txt
.venv/bin/pytest -q                       # 141 tests: parsers on saved API fixtures, extractors, filters, state, pipeline
PATH="$PWD/.venv/bin:$PATH" npx apify-cli@1.10.0 run --purge --input-file=docs/sample_run/input.json
```

- `tests/fixtures/{greenhouse,lever,ashby}_sample.json`: real postings that cover specific cases, built by
  `tests/make_fixtures.py`.
- `tests/fixtures/step0_raw/`: the full Step 0 API responses for all boards (gzipped). They are used for the
  regression test.
- `docs/step0/`: the coverage check that produced the company list.

# Actor input Schema

## `clearanceFilter` (type: `string`):

Which clearance wording a job must have. 'active' = the posting asks for an active/current clearance (default). 'required' = active, or a clearance is stated as required without saying active. 'any' = any clearance mention, including 'ability to obtain', 'preferred' and hedged wording. 'none' = no clearance filter (every job from the selected companies).

## `minClearanceLevel` (type: `string`):

Only keep jobs whose detected level is at least this. Order: public_trust < secret < ts < ts_sci < poly. When set, cyber-only jobs without a clearance are excluded.

## `includeCyberRoles` (type: `boolean`):

Let cybersecurity-titled jobs (security engineer, SOC, threat intel, GRC, ISSO, pentest...) through even when they do not mention a clearance.

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

Keep jobs matching ANY of these. A US state name or code ("Florida", "FL") matches by detected state; "Remote" matches remote jobs; anything else is a case-insensitive match on the location text. Example: \["Florida", "Remote"]. Empty = all locations.

## `remoteOnly` (type: `boolean`):

Keep only fully remote jobs (hybrid is not counted as remote).

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

Keep jobs whose title or description contains ANY of these (case-insensitive, whole word). Empty = no keyword filter.

## `newSinceLastRun` (type: `boolean`):

Output only jobs not seen in a previous run (tracked per company in a named key-value store). On the very first run every job is new.

## `useDefaultCompanies` (type: `boolean`):

Scan the built-in list of 82 defense-tech, space and cyber employers. Turn off to scan only your own companies.

## `additionalCompanies` (type: `array`):

Extra boards to scan, as {"ats": "greenhouse" | "lever" | "ashby", "slug": "...", "name": "optional"}. The slug is the token in the public board URL (boards.greenhouse.io/<slug>, jobs.lever.co/<slug>, jobs.ashbyhq.com/<slug>). Invalid or unknown boards are skipped and reported in the run summary.

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

Company names or slugs to skip, e.g. \["Anduril"].

## `usClearancesOnly` (type: `boolean`):

Drop jobs whose clearance requirement is non-US (e.g. Australian NV1, UK SC/DV). Does not affect cyber-only jobs.

## `includeDescription` (type: `boolean`):

Add the plain-text job description to each record (larger output).

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

Stop after this many jobs are output. Empty = no limit.

## `summaryInDataset` (type: `boolean`):

Also push the run summary as an extra dataset record (recordType 'run_summary'). Off by default so the dataset holds only jobs; the summary is always saved to the key-value store as SUMMARY (shown in the Output tab) and is never charged.

## `stateStoreName` (type: `string`):

Named key-value store used for change detection. Use a different name to keep separate 'new since last run' histories.

## Actor input object example

```json
{
  "clearanceFilter": "active",
  "minClearanceLevel": "any",
  "includeCyberRoles": true,
  "locations": [],
  "remoteOnly": false,
  "keywords": [],
  "newSinceLastRun": false,
  "useDefaultCompanies": true,
  "additionalCompanies": [],
  "excludeCompanies": [],
  "usClearancesOnly": true,
  "includeDescription": false,
  "summaryInDataset": false,
  "stateStoreName": "cleared-cyber-jobs-state"
}
```

# Actor output Schema

## `results` (type: `string`):

Matching jobs (overview table). Full records are available from the dataset API without the view parameter.

## `summary` (type: `string`):

Per-company counts, clearance tiers, Florida and remote counts, and any boards that failed.

# 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 = {
    "additionalCompanies": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearsignaldata/cleared-cyber-jobs-feed").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 = { "additionalCompanies": [] }

# Run the Actor and wait for it to finish
run = client.actor("clearsignaldata/cleared-cyber-jobs-feed").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 '{
  "additionalCompanies": []
}' |
apify call clearsignaldata/cleared-cyber-jobs-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearsignaldata/cleared-cyber-jobs-feed"
        }
    }
}
```

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/tJjCBspdaKbtNdQY1/builds/EtBVqdTSNGMOPctH1/openapi.json
