# New Hire Finder (`mambalabs/new-hire-finder`) Actor

Find people who started a role at a company in the last few months. Give a company domain, target titles, and a lookback window. Get one flat row per new hire: name, profile URL, title, start month, prior role, move type, and source. Runs on your own Prospeo or search keys. No LinkedIn scraping.

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

## Pricing

from $72.25 / 1,000 new hire founds

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

## New Hire Finder

Find the people who started a role at a company in the last few months. Give a company domain, the titles you sell to, and a lookback window. Get one flat row per person: name, profile URL, title, start month, prior role, move type (new hire or internal promotion), and the source that found them.

Use it for "welcome to your new role" outreach, to catch a new decision maker at a target account, or to tell a real new hire from an internal promotion before you write the first line. This actor never fetches linkedin.com. It runs free routes on every company and goes deeper on your own Prospeo, Serper, SerpApi, or Exa key.

### Features

- **Move type on every row.** `new_hire` when the person came from another employer, `promotion` when the previous role was at the same employer and still open or ended within 3 months, `unknown` when only a hire announcement is known. By default only new hires are returned and charged; add `promotion` or `unknown` to `move_types` to get them too.
- **Start month, not a guess.** `start_month` comes from the work history of the role at your target company, at month precision. `start_basis` says whether the date is a role start or an announcement date.
- **Charged per new hire found, never per profile read.** Summary rows and people outside your window, titles, or move types cost nothing.
- **Your keys, your data.** Prospeo, Serper, SerpApi, and Exa run on keys you pass as secret inputs and are billed to you by those vendors. You can also pass people you already hold, with role histories, and the same rules run on them with no provider call.
- **Free routes first.** Google News hire headlines, the company newsroom, and the company team pages run on every company with no key.
- **One summary row per company** that says what was searched, how many candidates were read, why they were dropped, and how many provider credits were used, so an empty result is labeled.
- **Batch input**, flat snake_case rows, ready for Clay, a CRM, or a sequencer.

### How it finds people

1. **Your own people** (`people`): the window, title, company, and move rules run on the role histories you pass.
2. **Prospeo** (your key): people at the company domain whose current role started inside your window and whose title matches, each with a full work history. One Prospeo credit per page of up to 25 people.
3. **Web search** (your Serper, SerpApi, or Exa key). With Serper or SerpApi, the first query finds public "joining Acme as Content Manager" announcement posts, which Google dates, so recent starters show up even before data providers index them. A second query (set `max_search_queries_per_company` to 2) finds profile results that name the company and a title; those carry no date and are dated with your Prospeo key only when Prospeo search could not run. Exa results carry work histories and need no enrichment. The actor reads the search results only and never opens the post or profile.
4. **Google News and the company newsroom** (free): hire headlines where the company is the subject ("Acme appoints Jane Doe as VP Marketing"). With a Prospeo key the person is dated from their work history; without one the row keeps the announcement month and move type `unknown`.
5. **Team pages** (free): names and titles from the company's own team or leadership page, dated with your Prospeo key.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `company_domain` | string | | One company domain, for example `zapier.com` |
| `company_domains` | array | `[]` | A list of company domains; merged with `company_domain` |
| `company_name` | string | | Optional, single company runs only |
| `target_titles` | array | | Title phrases, for example `marketing`, `head of content`. A title matches when it contains every word of a phrase as a whole word |
| `seniority` | array | `[]` | Optional: founder, c_level, vp, director, head, manager, other |
| `departments` | array | `[]` | Optional: sales, marketing, engineering, finance, legal, people, operations, product, general |
| `exclude_titles` | array | `[]` | Drop titles containing any of these phrases |
| `expand_title_synonyms` | boolean | `false` | Also match a short synonym list |
| `lookback_months` | string | `"6"` | 1 to 24 calendar months including this month |
| `move_types` | array | `["new_hire"]` | Any of `new_hire`, `promotion`, `unknown` |
| `include_year_only` | boolean | `false` | Also return starts known only to the year that could fall in the window |
| `people` | array | `[]` | Your own people: `person_name`, `company_domain`, optional `profile_url`, and `roles` (`title`, `company_name`, `start` YYYY-MM, `end` YYYY-MM or null) |
| `sources` | array | all | `buyer_data`, `prospeo`, `web_search`, `news`, `newsroom`, `team_pages` |
| `prospeo_api_key` | secret string | | Your Prospeo key |
| `web_search_provider` | string | `auto` | `auto`, `serper`, `serpapi`, or `exa` |
| `serper_api_key` | secret string | | Your Serper key |
| `serpapi_api_key` | secret string | | Your SerpApi key |
| `exa_api_key` | secret string | | Your Exa key |
| `max_people_per_company` | string | `"25"` | 1 to 100 person rows per company, newest starts first |
| `max_search_queries_per_company` | string | `"1"` | 1 to 4 web searches per company: announcement posts first, then profiles |
| `max_enrich_per_company` | string | `"5"` | 0 to 25 Prospeo enrichments per company |
| `max_prospeo_pages_per_company` | string | `"1"` | 1 to 4 Prospeo search pages per company |
| `max_charge_usd` | number | | Stop before any charge that would pass this amount |
| `skip_cache` | boolean | `false` | Search again within the 7 day cache |

Numbers are typed as text so Clay can send them.

### Output

One row per person, plus one summary row per company. Every field is present on every row and null when absent.

| Field | Type | Example | Notes |
|---|---|---|---|
| `row_type` | string | `person` | `person` or `summary` |
| `row_status` | string | `ok` | `ok`, `no_match`, `error`, or `capped` |
| `company_domain` | string | `zapier.com` | |
| `company_name` | string | `Zapier` | |
| `person_name` | string | `Jane Doe` | |
| `first_name`, `last_name` | string | `Jane`, `Doe` | |
| `profile_url` | string | `https://www.linkedin.com/in/jane-doe` | As a search index or provider returned it; never fetched |
| `current_title` | string | `AI Marketing Manager` | The role that started inside the window |
| `current_company_name` | string | `Zapier` | |
| `company_match` | string | `exact` | `exact`, `variant`, or `subsidiary_name` |
| `start_month` | string | `2026-07` | YYYY-MM |
| `start_year` | integer | `2026` | |
| `start_precision` | string | `month` | `month` or `year` |
| `start_basis` | string | `role_start` | `role_start` or `announcement_date` |
| `months_in_role` | integer | `3` | |
| `window_start_month`, `window_end_month` | string | `2026-05`, `2026-10` | |
| `window_match` | string | `inside` | `inside` or `possible` |
| `move_type` | string | `new_hire` | `new_hire`, `promotion`, or `unknown` |
| `move_type_reason` | string | `different_company_name` | The rule that fired |
| `seniority_change` | string | `up` | `up`, `down`, `same`, `unknown` |
| `prior_title`, `prior_company_name`, `prior_end_month` | string | `Content Engineer`, `Quo`, `2026-04` | The role before |
| `seniority`, `department` | string | `manager`, `marketing` | |
| `matched_target_title` | string | `marketing` | |
| `location` | string | `Austin, Texas, United States` | |
| `source` | string | `prospeo_search` | Route that found the person |
| `history_source` | string | `prospeo` | Where the work history came from |
| `source_url`, `source_date` | string | | Profile or article URL; article date |
| `person_key` | string | `nh_3f1c0d6c2a9b8e7f6a5b` | Stable across runs |
| `summary_status` | string | `ok` | Summary rows: `ok`, `no_match`, `no_provider_keys`, `key_rejected`, `credit_exhausted`, `provider_error`, `invalid_domain`, `free_tier_cap`, `max_charge_reached` |
| `people_found`, `candidates_read`, `namesake_dropped`, `out_of_window_dropped`, `title_dropped`, `undated_dropped`, `move_type_dropped` | integer | | Summary rows |
| `prospeo_credits_used`, `search_queries_used`, `enrich_calls_used` | integer | | Summary rows: what ran on your keys |
| `sources_tried`, `sources_unreadable`, `provider_errors` | string | | Summary rows |
| `cache_hit` | boolean | `false` | A cached company is served free |
| `billable_events_json` | string | `[{"event":"new_hire_found","count":1}]` | What this row charged |

No email or phone is returned. Add contact data downstream on your own keys.

### Pricing

Pay per event. You pay for each person returned, and a small start fee per run.

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| `new_hire_found`, per person returned | $0.085 | $0.08075 | $0.0765 | $0.07225 |
| Per 1,000 people | $85.00 | $80.75 | $76.50 | $72.25 |
| `apify-actor-start`, per run | $0.001 | $0.001 | $0.001 | $0.001 |

- Summary rows, cache hits, and people dropped by your filters are never charged.
- Promotions and announcement only rows are charged only when you add them to `move_types`.
- Free plan: up to 17 people a month.
- The run stops at your maximum cost per run, and before any charge that would pass `max_charge_usd`. Every row already charged stays in the dataset.
- Prospeo, Serper, SerpApi, and Exa bill you directly for calls on your keys. The summary row counts them.

### Usage examples

#### Apify Console or API

```json
{
  "company_domains": ["zapier.com", "gusto.com"],
  "target_titles": ["marketing", "head of content"],
  "lookback_months": "6",
  "move_types": ["new_hire"],
  "prospeo_api_key": "YOUR_PROSPEO_KEY",
  "serper_api_key": "YOUR_SERPER_KEY"
}
```

#### Clay

Add an "Apify: Run Actor" column with the actor ID `cKuc38p4nYHNF3IW8`, map your domain column to `company_domain`, and set `target_titles` and `lookback_months`. Each row returns the people found for that domain.

#### Your own data, no provider key

```json
{
  "people": [
    {
      "person_name": "Ann Lee",
      "company_domain": "acme.com",
      "roles": [
        { "title": "Head of Marketing", "company_name": "Acme", "start": "2026-08", "end": null },
        { "title": "Marketing Lead", "company_name": "Globex", "start": "2020-01", "end": "2026-07" }
      ]
    }
  ],
  "target_titles": ["marketing"],
  "move_types": ["new_hire", "promotion"]
}
```

#### MCP

An MCP server for this actor is planned under the `@mambalabsdev` npm scope after the Store listing goes live.

### Error handling

| Failure | What happens | Where you see it |
|---|---|---|
| No provider key | Free routes and your own people only | `summary_status: no_provider_keys` |
| Key rejected | That provider stops for the rest of the run | `summary_status: key_rejected`, `provider_errors` |
| Credits spent | That provider stops for the rest of the run | `summary_status: credit_exhausted` |
| Provider error or rate limit | The company continues on the other routes | `provider_errors`, `sources_unreadable` |
| Newsroom or team page blocked | Skipped | `sources_unreadable` |
| Not a domain | One summary row | `summary_status: invalid_domain` |
| Nobody matched | One summary row with the drop counts | `summary_status: no_match` |

### Limitations

- Without a Prospeo or Exa key, depth is limited to hire headlines, which name few people below the executive level, and headline rows carry the announcement month with move type `unknown`.
- Work histories come from provider indexes, which can lag a real start by months. In a 20 company test on 2026-10-14 the newest start month in Prospeo's data was 2026-05, so announcement rows (`start_basis: announcement_date`) fill the recent months.
- A provider record can still list a role the person has left. In the same test, 3 of 11 rows that could be checked against a public profile showed the person had already moved on.
- Provider data can hold a stale open role. A promotion is still detected when a role at the same employer ended within 3 months of the new start.
- Title matching uses whole words, so `marketing` does not match "Head of Growth" unless you add `growth` or switch on synonyms.
- This actor keeps no state between runs. Run it on a schedule and diff by `person_key` to track new starters.
- No email or phone is returned.

### More from Mamba Labs

| Actor | Actor ID |
|---|---|
| Agent Accessibility Auditor | `anxbRv0lKrpQ1pnua` |
| AI Tooling Detector | `EwkHhmqiuJgRoVEbE` |
| Bluesky Brand Presence Mapper | `eLpxzP4IuXznlFVND` |
| Company Change Event Feed | `oX44rS0fkEJ3rXLWe` |
| Company Contact Details Extractor | `4mMncKaJykiq94grz` |
| Company Discovery List Builder | `jch0HdaZnpbMqlcGS` |
| Company Firmographic Enricher | `YlUtLWjfPpqykmB8g` |
| Company Funding Record | `OFS4Mt1gyYNtGfUbE` |
| Company Identity Resolver | `lr8fTRAmZCBZmuwwh` |
| Company Social Presence Mapper | `4k6CCemkgBDz18m2h` |
| Contact Classifier | `0lGSeYJmniXhGANnO` |
| Domain Deliverability Checker | `0tVgxI7A6o9jMlxmc` |
| Domain to LinkedIn URL Resolver | `3HtnSaqPHOg1Qg5gx` |
| Ecommerce Platform Profiler | `5G2NeYjBbQTjaTn9L` |
| Event Presence Index | `WLhMy8fMDgsxdYxv5` |
| Expert Witness Directory | `LIpwlgfE3LaQBaXd4` |
| Funding and Press Signal Scanner | `FS13X6dhQVgX3XOM6` |
| GitHub Organization Signal Scanner | `ahF8RRpv5mzPao5CN` |
| Government Contract Award Monitor | `zhEtllASykOcx9hJ8` |
| GTM Hiring Signal Scraper | `D7O1SA2EqwHGsGr1P` |
| GTM Signals Aggregator | `xKdRfnfFNkdMpFuNs` |
| ICP Fit Scorer | `W161DT8W4kW55dMFh` |
| Influencer Change Monitor | `d2VVgahNL6UmcLkhg` |
| Influencer Finder | `tpkedmloIIWtXx6sg` |
| Influencer Lead List Builder | `KnmByszcv135yM30G` |
| Influencer Profile Scraper | `EqEnklDVMIcB1V499` |
| Influencer Talent Agency Lookup | `zCuX4Mgyg6JvXgGzd` |
| Job Board Keyword Signal Scanner | `4DvqpvhMR74NLcDDY` |
| Job Posting Monitor | `QCfICD9kOPiOdj5iI` |
| Legal Entity Resolver | `KHFyPCDIx7CyqULYm` |
| Link in Bio Scraper and Newsletter Detector | `OorucdheTIgu7RFzK` |
| LinkedIn Company Page Mapper | `zOPm6A9JEhUGcIdFW` |
| LinkedIn Post Tracker | `oiGLNPuaf5BRaz9K5` |
| Meta Ad Library Monitor | `J1GWlSXfSGU3u8Wng` |
| Meta Brand Presence Mapper | `HXh65I0JBjPsunbY8` |
| New Hire Finder | `cKuc38p4nYHNF3IW8` |
| Outbound Stack Detector | `v43UJC8r7qW7cBSTG` |
| Page Finder and Extractor | `TpurgcOZbVnknlaiC` |
| People Finder and Email Verifier | `LEgloG7tWgQl4o6TD` |
| Pinterest Brand Presence Mapper | `d1HvjZfKhgvWsoEwn` |
| Prospect Engine | `q9rT6v64nUJdPexOQ` |
| Publishing Frequency Tracker | `TbLwaUUATdYb6wp4N` |
| Reddit Brand Presence Mapper | `pKQZmDaT70SEb54bZ` |
| Reporting Window Finder | `uINxR7a1IW8qUTRUX` |
| Sequencer Lead Push | `0Jv27VeWM5tSZQs9x` |
| Team Page People Extractor | `j8a9zX0k4mNbvDbWK` |
| Tech Stack Signal Detector | `qyd7nNyqFPelQViBx` |
| TikTok Brand Presence Mapper | `fco8FvoJcSafbeyd1` |
| Trustpilot Reputation Enricher | `3lIqfCt61j4hqE1xz` |
| Website Traffic Rank Estimator | `GnOFUzlNVIoXgeJjH` |
| Work Email Waterfall | `OT6xqTFThC0Rjf7Zj` |
| Workplace Program Detector | `Li6pPDhqbdzFz3h7G` |
| X Brand Presence Mapper | `oLOgadhHUkNAyDA3w` |
| YouTube Channel Stats Extractor | `6hSpD3kd2s2IQ4VSs` |

Shared package: [@mambalabsdev/gtm-core](https://www.npmjs.com/package/@mambalabsdev/gtm-core).

Built by [Mamba Labs](https://apify.com/mambalabs)

# Actor input Schema

## `company_domain` (type: `string`):

One company domain, for example zapier.com. Use this or Company domains (batch); both are merged.

## `company_domains` (type: `array`):

A list of company domains. Each company gets its own summary row.

## `company_name` (type: `string`):

Optional, single company runs only. Leave empty and the name is read from the homepage.

## `target_titles` (type: `array`):

Title phrases to match, for example marketing, head of content, editor. A title matches when it contains every word of a phrase as a whole word. Also sent to Prospeo and web search as the title filter.

## `seniority` (type: `array`):

Optional. Keep only these seniority levels.

## `departments` (type: `array`):

Optional. Keep only these departments.

## `exclude_titles` (type: `array`):

Optional. Drop any title that contains one of these phrases, for example intern.

## `expand_title_synonyms` (type: `boolean`):

Also match a short synonym list (marketing also matches growth, brand, demand generation). Off by default, because every row is charged.

## `lookback_months` (type: `string`):

How many calendar months back to look, including this month. 1 to 24, default 6. 6 in October means May to October. Typed as text so Clay can send it.

## `move_types` (type: `array`):

Which moves to return and charge. new_hire is a person who came from another employer. promotion is a new role at the same employer. unknown is a hire announcement with no work history. Default new_hire only.

## `include_year_only` (type: `boolean`):

Also return people whose start is known only to the year and could fall inside the window. They are charged like any row. Off by default.

## `people` (type: `array`):

People you already hold, with role histories. Each item: person_name, company_domain, profile_url (optional), and roles, a list of {title, company_name, start (YYYY-MM), end (YYYY-MM or null)}. The same window, title, and move rules run on them, with no provider call.

## `sources` (type: `array`):

Routes to run. Default all. buyer_data is your people list; prospeo and web_search run only with your key; news, newsroom, and team_pages are free.

## `prospeo_api_key` (type: `string`):

Your own Prospeo key. Gives the work history behind start month and move type. One Prospeo credit per search page of 25 people and one per person enrichment, billed by Prospeo to you. Never stored.

## `web_search_provider` (type: `string`):

Which of your search keys to use. auto takes the first key present: Serper, then SerpApi, then Exa.

## `serper_api_key` (type: `string`):

Your own Serper.dev key for web search. One search per company by default. Search results carry no start date, so they are dated with your Prospeo key or counted as undated.

## `serpapi_api_key` (type: `string`):

Your own SerpApi key for web search. A different vendor from Serper.

## `exa_api_key` (type: `string`):

Your own Exa key. Exa people search returns work histories with start months, so its results need no enrichment.

## `max_people_per_company` (type: `string`):

Most person rows to return per company, newest starts first. 1 to 100, default 25.

## `max_search_queries_per_company` (type: `string`):

Web search queries per company on your key. 1 to 4, default 1.

## `max_enrich_per_company` (type: `string`):

Prospeo enrichment calls per company to date people found by web search, headlines, and team pages. 0 to 25, default 5.

## `max_prospeo_pages_per_company` (type: `string`):

Prospeo search pages of 25 people per company. 1 to 4, default 1.

## `max_charge_usd` (type: `number`):

Optional. The run stops before any charge that would take this run past this amount, and keeps every row already paid for. Leave empty to rely only on the maximum cost per run set in Apify, which the run also honors.

## `skip_cache` (type: `boolean`):

Search again even when the same company and filters ran in the last 7 days. A cached result is returned free.

## `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
{
  "company_domain": "zapier.com",
  "company_domains": [],
  "target_titles": [
    "marketing"
  ],
  "seniority": [],
  "departments": [],
  "exclude_titles": [],
  "expand_title_synonyms": false,
  "lookback_months": "6",
  "move_types": [
    "new_hire"
  ],
  "include_year_only": false,
  "people": [],
  "sources": [
    "buyer_data",
    "prospeo",
    "web_search",
    "news",
    "newsroom",
    "team_pages"
  ],
  "web_search_provider": "auto",
  "max_people_per_company": "25",
  "max_search_queries_per_company": "1",
  "max_enrich_per_company": "5",
  "max_prospeo_pages_per_company": "1",
  "skip_cache": false
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "company_domain": "zapier.com",
    "company_domains": [],
    "target_titles": [
        "marketing"
    ],
    "lookback_months": "6",
    "move_types": [
        "new_hire"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/new-hire-finder").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 = {
    "company_domain": "zapier.com",
    "company_domains": [],
    "target_titles": ["marketing"],
    "lookback_months": "6",
    "move_types": ["new_hire"],
}

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/new-hire-finder").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 '{
  "company_domain": "zapier.com",
  "company_domains": [],
  "target_titles": [
    "marketing"
  ],
  "lookback_months": "6",
  "move_types": [
    "new_hire"
  ]
}' |
apify call mambalabs/new-hire-finder --silent --output-dataset

```

## MCP server setup

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

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/cKuc38p4nYHNF3IW8/builds/xCI0AVibi0KG5sCEM/openapi.json
