# Account Hiring Watch (`mambalabs/account-hiring-watch`) Actor

Watch company domains and get only what changed since the last run: new, closed, and reposted job postings read live from 17 job boards, Greenhouse, Lever, Ashby, and Workday among them. Each row has the full job description, a stable posting key, and 30 day hiring velocity. Flat rows or a webhook.

- **URL**: https://apify.com/mambalabs/account-hiring-watch.md
- **Developed by:** [Mamba Labs](https://apify.com/mambalabs) (community)
- **Categories:** Lead generation, Automation, Jobs
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.50 / 1,000 posting changes

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

### 🔑 What can Account Hiring Watch do?

Account Hiring Watch reads the job boards of the companies you care about and tells you only what changed since your last run: postings that opened, closed, or were reposted. Every run also returns one summary row per company with 30 day hiring velocity, direction, and a surge flag.

- **Only changes.** The watch keeps its own state between runs, so run two returns new, closed, and reposted postings, not the whole board again.
- **Read live from the company's own board.** Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Personio, and Recruitee, through their public job board endpoints. No job aggregator, no login.
- **A stable posting key.** `posting_key` names one role at one company and city across boards and across runs. A title edit keeps its key.
- **Full job descriptions** on new and reposted rows, up to the length you set.
- **Hiring velocity on every run**, including the first: new postings in the last 30 days against the 30 days before, direction, and a surge flag.
- **A signed webhook** in the Standard Webhooks format. With a webhook set, you pay for a change only when your endpoint accepts it.
- **First run postings are free.** The first run sets the baseline and returns postings opened in the last 7 days, marked `is_backfill`, at no charge.

### 💡 Why use Account Hiring Watch?

- Catch a target account the week it starts hiring for sales, engineering, or any role category.
- Spot a role that closed (someone was hired: time to find them) or a role that came back (the hire did not stick).
- Feed velocity and surge into account scoring without storing job boards yourself.
- Load flat rows into Clay, a CRM, or a warehouse, or receive them on a webhook.

### 🛠️ How to watch accounts for hiring changes

1. Paste company domains into **Company domains to watch**, one per line.
2. Pick **Role categories**, or leave **All roles**.
3. Run it. The first run sets the baseline and returns recent postings at no per posting charge.
4. Schedule it daily or weekly with the same **Watch name**. Each run returns only what changed.

Use one **Watch name** per list or client. Two watch names never share state.

### 📋 What data does Account Hiring Watch return?

Two row types in one dataset. Every field is on every row, null where it does not apply.

**posting_change**, one per change:

| Field | Example |
|---|---|
| `change_type` | `new`, `closed`, or `reposted` |
| `company_domain`, `company_name` | `vercel.com`, `Vercel` |
| `posting_key`, `event_id` | `pk_e6c13ac023e8022984a3`, `ev_5d604061cc6829034a8c` |
| `job_title`, `job_location`, `job_department`, `is_remote` | `IT Systems Engineer`, `San Francisco` |
| `job_url`, `source_board`, `board_native_ids`, `opening_count` | Greenhouse link, `greenhouse`, `6218743004`, `1` |
| `matched_categories`, `matched_keyword`, `keyword_tier` | `GTM`, `account executive`, `2` |
| `posted_at`, `first_seen_at`, `last_seen_at`, `closed_at`, `days_open` | `2026-10-07` |
| `reposted_from_closed_at` | when the earlier posting closed |
| `job_description`, `job_description_chars`, `job_description_truncated` | full text, `4333`, `false` |
| `is_backfill`, `delivery_status` | `true`, `dataset_only` |

**account_summary**, one per company per run:

| Field | Example |
|---|---|
| `open_postings`, `open_postings_matched` | `89`, `54` |
| `new_postings_30d`, `prior_postings_30d` (and `_matched`) | `20`, `12` |
| `closed_postings_30d`, `reposted_postings_30d` (and `_matched`) | `0`, `0` |
| `velocity_change_pct`, `hiring_direction`, `surge_flag` | `67`, `up`, `false` |
| `velocity_basis`, `history_days`, `undated_postings` | `board_dates`, `0`, `0` |
| `changes_new`, `changes_closed`, `changes_reposted` | this run's counts |
| `board_provider`, `board_slug`, `board_match_confidence` | `greenhouse`, `vercel`, `confirmed` |
| `board_total`, `board_truncated`, `is_baseline` | `89`, `false`, `true` |

Every row also carries `row_status`, `error_reason`, `degraded`, `degradation_reason`, `billable_events_json` (what this row was charged for), `source`, `source_date`, and `read_at`.

### 💵 How much does it cost?

You pay per posting change delivered.

| Plan | Per change | Per 1,000 changes |
|---|---|---|
| Free | $0.010 | $10.00 |
| Bronze | $0.0095 | $9.50 |
| Silver | $0.009 | $9.00 |
| Gold | $0.0085 | $8.50 |

- There is also an Actor start event at $0.002, charged once per run per GB of memory. The actor runs at 256 MB, so that is one start event per run.
- Summary rows are free. First run backfill rows are free. A change already charged is never charged again.
- With a webhook set, a change is charged only after your endpoint answers 2xx.
- Free Apify plans get **150 changes per calendar month**, resetting on the 1st. Changes past the allowance wait in the watch and are delivered first on a later run.

🛑 **Your spending limit is respected.** Set a maximum cost per run in Apify, or `max_charge_usd` on the Input tab. When the next change would go over, the remaining changes are held and delivered first on the next run. Nothing is lost and nothing is charged twice.

### ⌨️ Input

| Field | Default | What it does |
|---|---|---|
| `domains` | required | Company domains to watch, up to 2,000 per run |
| `watch_name` | `default` | Keeps watch lists apart. A new name starts a new watch |
| `keyword_categories` | `All` | Only matching changes are returned and charged: GTM, Engineering, Finance, Operations, Executive, Marketing, HR, CustomerSuccess, Data, Product, Legal, Design, Custom |
| `custom_keywords` | none | Whole word title keywords, `T1:` or `T3:` prefix for tier |
| `board_hints` | none | `domain=provider:slug`, for example `acme.com=greenhouse:acmeinc` |
| `first_run_mode` | `recent` | `recent`, `baseline_only`, or `all_open`. First run rows are always free |
| `first_run_recent_days` | `7` | Window for `recent` |
| `closed_after_misses` | `2` | Complete reads without a posting before it closes |
| `repost_window_days` | `30` | A closed posting back inside this window is `reposted` |
| `include_job_description` | `true` | Full description on new and reposted rows |
| `description_max_chars` | `20000` | Length cap per description |
| `webhook_url`, `webhook_secret` | none | Signed delivery. HTTPS only; the secret is required |
| `webhook_batch_mode` | `batch` | `batch` (up to 50 per request) or `per_change` |
| `state_store` | none | Your own key value store for the watch state |
| `max_domains` | `500` | Domains past this number are skipped |
| `max_charge_usd` | none | Cost cap for one run |

Clay sends every field as text, and the actor reads numbers and true/false values from text.

### 📡 Webhook format

Requests follow the [Standard Webhooks](https://www.standardwebhooks.com) specification, so any of its libraries verifies them.

- Headers: `webhook-id` (the same id on a retry), `webhook-timestamp`, `webhook-signature` (`v1,` plus base64 HMAC SHA256 of `id.timestamp.body`).
- Body: `{ "type": "hiring.changes", "api_version": "1", "watch_name", "run_id", "sent_at", "changes": [...], "accounts": [...] }`. Each change has the same fields as its dataset row.
- Dedupe on `event_id`.
- Retries: 3 attempts in a run (2 s, 8 s, 30 s) on network errors, 408, 429, and 5xx. A change still not accepted waits and goes first on the next run. After 7 days it is dropped, never charged, and counted in `webhook_expired_changes`.

### 🧮 How changes are decided

- **new**: a posting key the watch has not seen, or one closed longer ago than the repost window.
- **closed**: missing from `closed_after_misses` complete reads in a row. On Greenhouse, Lever, SmartRecruiters, Workable, and Recruitee, a 404 from the posting itself closes it on the first miss.
- **reposted**: a key that closed inside the repost window comes back, or every board id under an open key is replaced in one read.
- A partial or failed board read never closes a posting.
- Reposts do not count as new hiring in velocity.

### 🧩 Use with Clay, the API, and agents

- **Clay**: run the actor from a Clay table with domains in one column, or point `webhook_url` at a Clay table webhook with `webhook_batch_mode` set to `per_change`.
- **API**: `POST https://api.apify.com/v2/acts/mambalabs~account-hiring-watch/runs` with the input above, then read the default dataset.
- **Schedules**: create an Apify schedule with a fixed `watch_name`.

### ⚠️ Error handling

| Situation | What you get |
|---|---|
| No job board found | Summary row with `degraded` true and the boards checked. Add a `board_hints` entry |
| Board names a different employer | Summary row says which employer; no rows from that board |
| Board unreachable or slow | Summary row with the reason; no posting is counted as closed |
| Board read cut short (Workday reads stop at 400) | `board_truncated` true; no posting outside the read is counted as closed |
| Description read fails | Change row still delivered, `degraded` true |
| Webhook refuses | Rows written as `pending` without description and URL, sent first next run |
| State store unavailable | Every domain runs as a first run (free) and the summary row says so |

### ⚠️ Known limits

- Some company sites refuse requests from cloud servers, so the watch cannot find their board link. A `board_hints` entry fixes it.
- Workday boards are read up to 400 postings per run.
- `velocity_basis` reads `board_dates` until the watch holds 60 days of history. Until then, postings that closed before the watch started are not in `prior_postings_30d`, so `up` and surge read high.
- `also_seen_on` is reserved and null in this version.
- Rippling has a reader that has not been confirmed on a live board yet.

### ❓ FAQ

**Why did my first run return so few changes?** The first run returns postings opened in the last 7 days, free. Set `first_run_mode` to `all_open` to get every open posting, also free.

**Does changing the role categories reset the watch?** No. Every posting is tracked; categories only decide which changes are returned and charged.

**Can I keep the state in my own storage?** Yes, choose a key value store in `state_store`.

### 🧩 Want other GTM data?

Mamba Labs builds custom actors for B2B go-to-market teams. The public versions
of that work live here on the Store, so our users get the same tooling we build
under contract.

| | |
|---|---|
| 🕵️ [Agent Accessibility Auditor](https://apify.com/mambalabs/agent-accessibility-auditor?fpr=mamba) | 🤖 [AI Tooling Detector](https://apify.com/mambalabs/ai-tooling-detector?fpr=mamba) |
| 📡 [GTM Signals Aggregator](https://apify.com/mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay?fpr=mamba) | 🚀 [Prospect Engine](https://apify.com/mambalabs/b2b-prospect-engine?fpr=mamba) |
| 📝 [Publishing Frequency Tracker](https://apify.com/mambalabs/blog-publishing-frequency?fpr=mamba) | 🦋 [Bluesky Brand Presence Mapper](https://apify.com/mambalabs/bluesky-brand-presence-mapper?fpr=mamba) |
| ⏩ [Sequencer Lead Push](https://apify.com/mambalabs/clay-to-instantly-smartlead-push?fpr=mamba) | 🔄 [Company Change Event Feed](https://apify.com/mambalabs/company-change-event-feed?fpr=mamba) |
| 📇 [Company Contact Details Extractor](https://apify.com/mambalabs/company-contact-details-extractor?fpr=mamba) | 🧭 [Company Discovery List Builder](https://apify.com/mambalabs/company-discovery-list-builder?fpr=mamba) |
| 🏢 [Company Firmographic Enricher](https://apify.com/mambalabs/company-firmographic-enricher?fpr=mamba) | 🪪 [Company Identity Resolver](https://apify.com/mambalabs/company-identity-resolver?fpr=mamba) |
| 🌐 [Company Social Presence Mapper](https://apify.com/mambalabs/company-social-presence-mapper?fpr=mamba) | 🏷️ [Contact Classifier](https://apify.com/mambalabs/contact-classifier?fpr=mamba) |
| 📈 [Influencer Change Monitor](https://apify.com/mambalabs/creator-change-monitor?fpr=mamba) | 🔎 [Influencer Finder](https://apify.com/mambalabs/creator-finder?fpr=mamba) |
| 🧾 [Influencer Lead List Builder](https://apify.com/mambalabs/creator-lead-list-all-in-one?fpr=mamba) | 👤 [Influencer Profile Scraper](https://apify.com/mambalabs/creator-profile-reader?fpr=mamba) |
| 📬 [Domain Deliverability Checker](https://apify.com/mambalabs/domain-deliverability-checker?fpr=mamba) | 🔗 [Domain to LinkedIn URL Resolver](https://apify.com/mambalabs/domain-to-linkedin-url-resolver?fpr=mamba) |
| 🛒 [Ecommerce Platform Profiler](https://apify.com/mambalabs/ecommerce-platform-profiler?fpr=mamba) | ✉️ [Work Email Waterfall](https://apify.com/mambalabs/email-waterfall-orchestrator?fpr=mamba) |
| 🎪 [Event Presence Index](https://apify.com/mambalabs/event-presence-index?fpr=mamba) | ⚖️ [Expert Witness Directory](https://apify.com/mambalabs/expert-witness-directory?fpr=mamba) |
| 💵 [Company Funding Record](https://apify.com/mambalabs/funding-investor-record?fpr=mamba) | 💰 [Funding and Press Signal Scanner](https://apify.com/mambalabs/funding-press-signal-scanner?fpr=mamba) |
| 🐙 [GitHub Organization Signal Scanner](https://apify.com/mambalabs/github-organization-signal-scanner?fpr=mamba) | 🧑‍💼 [GTM Hiring Signal Scraper](https://apify.com/mambalabs/gtm-hiring-signal-scraper?fpr=mamba) |
| 📋 [Job Posting Monitor](https://apify.com/mambalabs/gtm-job-discovery?fpr=mamba) | 🧱 [Tech Stack Signal Detector](https://apify.com/mambalabs/gtm-tech-stack-signal-scraper?fpr=mamba) |
| 🎯 [ICP Fit Scorer](https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay?fpr=mamba) | 🏛️ [Legal Entity Resolver](https://apify.com/mambalabs/legal-entity-resolver?fpr=mamba) |
| 📰 [Link in Bio Scraper and Newsletter Detector](https://apify.com/mambalabs/link-in-bio-newsletter-checker?fpr=mamba) | 💼 [LinkedIn Company Page Mapper](https://apify.com/mambalabs/linkedin-company-presence-mapper?fpr=mamba) |
| 💬 [LinkedIn Post Tracker](https://apify.com/mambalabs/linkedin-post-engager-capture?fpr=mamba) | 📢 [Meta Ad Library Monitor](https://apify.com/mambalabs/meta-ad-library-monitor?fpr=mamba) |
| 📸 [Meta Brand Presence Mapper](https://apify.com/mambalabs/meta-brand-presence-mapper?fpr=mamba) | 📮 [Outbound Stack Detector](https://apify.com/mambalabs/outbound-infrastructure-fingerprint?fpr=mamba) |
| 📄 [Page Finder and Extractor](https://apify.com/mambalabs/page-finder-extractor?fpr=mamba) | 🧑 [People Finder & Email Verifier](https://apify.com/mambalabs/people-finder?fpr=mamba) |
| 📌 [Pinterest Brand Presence Mapper](https://apify.com/mambalabs/pinterest-brand-presence-mapper?fpr=mamba) | 🏆 [Government Contract Award Monitor](https://apify.com/mambalabs/public-award-monitor?fpr=mamba) |
| 📅 [Reporting Window Finder](https://apify.com/mambalabs/public-company-reporting-window-finder?fpr=mamba) | 👽 [Reddit Brand Presence Mapper](https://apify.com/mambalabs/reddit-brand-presence-mapper?fpr=mamba) |
| ⭐ [Trustpilot Reputation Enricher](https://apify.com/mambalabs/review-platform-reputation-enricher?fpr=mamba) | 🤝 [Influencer Talent Agency Lookup](https://apify.com/mambalabs/talent-agency-lookup?fpr=mamba) |
| 👥 [Team Page People Extractor](https://apify.com/mambalabs/team-page-people-extractor?fpr=mamba) | 🎵 [TikTok Brand Presence Mapper](https://apify.com/mambalabs/tiktok-brand-presence-mapper?fpr=mamba) |
| 📊 [Website Traffic Rank Estimator](https://apify.com/mambalabs/website-traffic-rank-estimator?fpr=mamba) | 🏅 [Workplace Program Detector](https://apify.com/mambalabs/workplace-program-detector?fpr=mamba) |
| ✖️ [X Brand Presence Mapper](https://apify.com/mambalabs/x-brand-presence-mapper?fpr=mamba) | ▶️ [YouTube Channel Stats Extractor](https://apify.com/mambalabs/youtube-channel-transcript-extractor?fpr=mamba) |

> Every actor in the suite takes a domain or a company and returns one flat row,
> so they stack in the same Clay table without reshaping anything.

> 🛠️ **Need something custom built for you or your team?** Tell us what you are
> trying to find and we will build it. [Talk to Mamba Labs](https://mambabuilt.com/contact).

Shared code: [@mambalabsdev/gtm-core](https://www.npmjs.com/package/@mambalabsdev/gtm-core) (job board readers, posting key, keyword categories).

### 🆘 Support

Found a bug or need a board added? Open an issue on the **Issues** tab. Response time is typically within 48 hours.

> ℹ️ **Sourcing and legal.** Postings come from the public job board endpoints of Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Personio, Recruitee, and Workday, and from the company's own careers page. No authenticated portal is accessed. The actor returns companies and job postings, not people. You are responsible for how you use the output.

Built by [Mamba Labs](https://apify.com/mambalabs?fpr=mamba).

# Actor input Schema

## `domains` (type: `array`):

Company website domains, one per line (for example stripe.com). The watch reads each company's own job board and returns only what changed since the last run with the same watch name. Up to 2,000 per run.

## `watch_name` (type: `string`):

Keeps separate watch lists apart. Use one name per list or client. Changing the name starts a new watch, and its first run sets the baseline.

## `keyword_categories` (type: `array`):

Only changes to postings whose title matches these categories are returned and charged. All returns every posting change. Every posting still counts toward hiring velocity.

## `custom_keywords` (type: `array`):

Extra title keywords, matched on whole words. Prefix with T1: for the strongest tier or T3: for the weakest; no prefix is tier 2. Adding any keyword also adds the Custom category.

## `board_hints` (type: `array`):

Optional. Point a domain at its job board when the watch cannot find it, as domain=provider:slug. Examples: acme.com=greenhouse:acmeinc, acme.com=workday:acme.wd5/External. Providers: greenhouse, lever, ashby, workable, smartrecruiters, personio, recruitee, workday, rippling.

## `first_run_mode` (type: `string`):

What a domain's first run returns. Recent returns postings the board dates inside the last N days. Baseline only returns the summary row. All open returns every open posting. First run changes are marked is_backfill and are never charged.

## `first_run_recent_days` (type: `string`):

With First run set to Recent: how many days back counts as recent. 1 to 30.

## `closed_after_misses` (type: `string`):

A posting closes after this many complete board reads without it. On Greenhouse, Lever, SmartRecruiters, Workable, and Recruitee a 404 from the posting itself closes it on the first miss. A partial read never counts. 1 to 5.

## `repost_window_days` (type: `string`):

A closed posting that comes back inside this many days is reported as reposted, not new. 7 to 60.

## `include_job_description` (type: `string`):

Adds the full description text to new and reposted rows. Closed rows carry no description.

## `description_max_chars` (type: `string`):

Longest description kept per row. job_description_chars always reports the full length. 500 to 100000.

## `webhook_url` (type: `string`):

Optional HTTPS endpoint. Changes are sent as signed Standard Webhooks requests. With a webhook set, a change is charged only after your endpoint answers 2xx; until then its dataset row is pending, without the description and URL, and it is retried first on the next run.

## `webhook_secret` (type: `string`):

Required with a webhook URL. Used to sign each request (HMAC SHA256). A whsec\_ prefixed secret is base64 decoded per the Standard Webhooks spec.

## `webhook_batch_mode` (type: `string`):

Batch sends up to 50 changes per request, grouped by company. Per change sends one request per change, for tools where one request is one row (Clay table webhooks, Zapier).

## `state_store` (type: `string`):

Optional key value store that holds the watch state. Leave empty to use the store account-hiring-watch-state in your own account.

## `max_domains` (type: `string`):

Domains past this number are skipped. 1 to 2000.

## `max_charge_usd` (type: `string`):

Optional. When the next change would take this run's charges over this amount, the remaining changes are held and delivered first on the next run. Leave empty to rely only on the maximum cost per run you set in Apify.

## `source_tag` (type: `string`):

Internal attribution tag set by Mamba Labs on published task examples. Not required, and nothing depends on it. Leave it empty.

## Actor input object example

```json
{
  "domains": [
    "stripe.com",
    "ramp.com",
    "vercel.com"
  ],
  "watch_name": "default",
  "keyword_categories": [
    "All"
  ],
  "custom_keywords": [],
  "board_hints": [],
  "first_run_mode": "recent",
  "first_run_recent_days": "7",
  "closed_after_misses": "2",
  "repost_window_days": "30",
  "include_job_description": "true",
  "description_max_chars": "20000",
  "webhook_batch_mode": "batch",
  "max_domains": "500"
}
```

# Actor output Schema

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

No description

## `runSummary` (type: `string`):

No description

# 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 = {
    "domains": [
        "stripe.com",
        "ramp.com",
        "vercel.com"
    ],
    "watch_name": "default",
    "keyword_categories": [
        "All"
    ],
    "first_run_mode": "recent",
    "first_run_recent_days": "7"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/account-hiring-watch").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 = {
    "domains": [
        "stripe.com",
        "ramp.com",
        "vercel.com",
    ],
    "watch_name": "default",
    "keyword_categories": ["All"],
    "first_run_mode": "recent",
    "first_run_recent_days": "7",
}

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/account-hiring-watch").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 '{
  "domains": [
    "stripe.com",
    "ramp.com",
    "vercel.com"
  ],
  "watch_name": "default",
  "keyword_categories": [
    "All"
  ],
  "first_run_mode": "recent",
  "first_run_recent_days": "7"
}' |
apify call mambalabs/account-hiring-watch --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mambalabs/account-hiring-watch"
        }
    }
}
```

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/gRAZA5WBi1r6L0gy7/builds/bl7HHZHbMbW5yWkOM/openapi.json
