# Job Posting Leads for Recruiters & Agencies (`mediocre_interest/job-posting-leads`) Actor

Find companies hiring for the roles you place. Searches Indeed in the US, UK, Canada and Australia, removes staffing agencies, and returns one row per hiring company: website, size, revenue band, open roles, salaries and job links. Schedule it to get only companies you have not seen.

- **URL**: https://apify.com/mediocre_interest/job-posting-leads.md
- **Developed by:** [Mediocre_Interest](https://apify.com/mediocre_interest) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 company leads

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

## Job Posting Leads for Recruiters & Agencies

**Turn Indeed job postings into job posting leads: one row per hiring company, with staffing agencies removed, ready for recruiting and staffing agencies to prospect.** Enter the roles you place and where, and get every company hiring for them on Indeed in the US, UK, Canada or Australia, with its website, size band, revenue band, open roles and job links. Leave the roles empty and press Start to see a free sample first. Schedule it with **Only companies not returned before** and each run brings just the companies that started hiring since the last one.

- **One row per company, not per job.** Thirty postings from one hospital network are one lead with 30 open roles, not 30 rows to deduplicate.
- **Staffing agencies are removed.** Agencies re-posting their clients' vacancies are your competitors, not your prospects.
- **Website, employee count and revenue band** from each employer's Indeed profile, with a filter by company size.
- **You pay per company delivered.** Companies that are skipped, and searches that find nothing, cost nothing.

### What does Job Posting Leads for Recruiters & Agencies do?

Recruiting and staffing agencies win new clients by calling companies that are hiring right now. A job board lists jobs, not companies. A health system advertising thirty nursing jobs fills thirty rows. Staffing agencies post the same vacancies again for their own clients. And the board says nothing about the employer's website or size. Turning that into a prospect list is hours of copying, deduplicating and checking.

This Actor searches Indeed's job listings for the roles you place, up to ten per run. It searches around a city, region or postcode, or across a whole country, for postings from the last 24 hours up to the last 30 days. It groups the postings by employer, using the company's website domain so that different spellings of one employer become one row, and removes staffing agencies and job boards. It then returns **one row per hiring company**, busiest first.

Each row carries what Indeed knows about the employer next to the jobs themselves:

- **About the company:** website, employee count band, annual revenue band, industry, headquarters and Indeed's company description.
- **About its jobs:** how many matching postings it has open, their titles and locations, and the newest posting with its link and its apply link.
- **Pay**, where the employer states it.
- **Contact emails** printed in the postings, limited to the company's own domain and role inboxes such as `jobs@`.

#### Which companies does it leave out?

A company that is left out is never written to your dataset and never charged. The run's summary counts each one under the first reason that applies.

| Reason                                  | When it applies                                               | What to know                                                                              |
| --------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Staffing agency, recruiter or job board | **Skip staffing agencies and recruiters** is on (the default) | Turn it off to keep them, flagged in `isStaffingAgency` with the reason in `agencyReason` |
| Larger than your size limit             | **Maximum company size** is set                               | Companies with no size on Indeed are kept, with `employeeCount` empty                     |
| On your exclusion list                  | You listed it in **Companies to leave out**                   | Matched by website domain, or by name whatever its case, punctuation or Inc / LLC / Ltd   |
| Returned by an earlier run              | **Only companies not returned before** is on                  | Remembered per search: the same roles, location and country                               |

#### How does it recognise a staffing agency?

It looks first at what the company says about itself, and only then at the posting:

| Signal                                         | Examples                                                                                       |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| A known staffing firm or job board             | Robert Half, Randstad, Adecco, Hays, Maxim Healthcare, American Traveler, Employment Hero      |
| An agency word in the company name             | Staffing, Recruitment, Personnel, Workforce Solutions, Locum, Labour Hire, Resourcing          |
| Indeed's industry for the employer             | Human Resources & Staffing                                                                     |
| The company's own description                  | "recruitment agency", "specialists in temporary and permanent recruitment", "travel nurse"     |
| Wording only an intermediary uses in a posting | "on behalf of our client", "our partnering hospital is seeking", "we are a recruitment agency" |

Words that employers use about their own work are not signals: "our clients", "placement", "13-week assignment". A hospital hiring its own travel nurses, or an insurer talking about its clients, stays in your list.

### Why use Job Posting Leads for Recruiters & Agencies?

- **A prospect list instead of a job list.** Every row is a company you can call today, ranked by how many matching roles it has open, with the jobs that prove it is hiring.
- **No staffing agencies in your leads.** The filter removes recruiters and job boards before anything is written, so you neither see nor pay for them.
- **Firmographics to qualify fast.** Website, employee count band, revenue band, industry and headquarters come straight from the employer's Indeed profile. Use **Maximum company size** to keep only the company sizes you sell to.
- **Only the new hiring companies, every week.** Switch on **Only companies not returned before** and schedule the run: each run returns only companies the same search has not returned before.
- **Free to try, fair to run.** The sample costs nothing. A live run charges per company delivered, never for a company it skipped or a search that found nothing.
- **Everything Apify adds.** Run it on a schedule, call it from the API, connect it to Make, n8n or Zapier, and export the companies as CSV, Excel or JSON.

### How to find companies hiring on Indeed

1. Open the Actor in Apify Console and press **Start** with **Roles you place** empty. You get the free sample: 21 companies hiring registered nurses around Dallas, TX, from a saved Indeed search. Nothing is charged.
2. Enter the job titles you recruit for in **Roles you place**, one per line, such as `registered nurse` and `licensed practical nurse`.
3. Set **Location** to a city, region or postcode (postings within 50 miles count) or leave it empty for the whole country, and pick the **Country**.
4. Choose **Posted within** and **Maximum companies**.
5. Optionally set **Maximum company size**, add your current clients to **Companies to leave out**, and switch on **Only companies not returned before**.
6. Press **Start**. When the run finishes, open the **Hiring companies** tab, or export the rows as CSV, Excel or JSON.

To get new hiring companies every week, save the input as a task with **Only companies not returned before** switched on, and add a schedule in Apify Console.

### Input

| Field                                     | What it does                                                                                                          |
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **Roles you place**                       | Job titles or keywords, one per line, up to 10. Each is searched on Indeed separately. Empty returns the free sample. |
| **Location**                              | City, region or postcode. Postings within 50 miles are included. Empty searches the whole country.                    |
| **Country**                               | United States, United Kingdom, Canada or Australia.                                                                   |
| **Posted within**                         | The last 24 hours, 3, 7, 14 or 30 days. Default 7.                                                                    |
| **Maximum companies**                     | Stop after this many companies, busiest first. Default 100; at most 1,000.                                            |
| **Skip staffing agencies and recruiters** | On by default. Off keeps them, flagged with the reason.                                                               |
| **Maximum company size**                  | Up to 50, 200, 500, 1,000, 5,000 or 10,000 employees, or any size (the default).                                      |
| **Companies to leave out**                | Company names or websites, one per line, such as your current clients.                                                |
| **Only companies not returned before**    | Return only companies that earlier runs with the same roles, location and country did not return.                     |
| **Proxy configuration**                   | On by default; keep it on. Switch to the RESIDENTIAL group if Indeed refuses the default one.                         |

Get the free sample, with no roles at all:

```json
{}
```

Find up to 50 companies with up to 1,000 employees hiring nurses around Houston in the last 7 days, leaving out two current clients, and only those that earlier runs of this search did not return:

```json
{
    "roles": ["registered nurse", "licensed practical nurse"],
    "location": "Houston, TX",
    "country": "us",
    "postedWithinDays": "7",
    "maxCompanies": 50,
    "maxCompanySize": "1000",
    "excludeCompanies": ["acmehealth.com", "Example Medical Group"],
    "onlyNewCompanies": true
}
```

### Output

Each run writes one row per hiring company to its default dataset, shown in the **Hiring companies** view. You can export it as JSON, CSV, Excel, XML or HTML, or read it through the API. The run's totals go to its key-value store as `summary-run`.

The free sample input above produces 21 rows. This is the second:

```json
{
    "companyName": "Cook Children's Health Care System",
    "website": "http://www.cookchildrens.org",
    "domain": "cookchildrens.org",
    "employeeCount": "5,001 to 10,000",
    "revenue": "$1B to $5B (USD)",
    "industry": null,
    "headquarters": "Fort Worth, TX",
    "companyDescription": "Cook Children’s is more than a health care system: we strive to be an extension of your family, growing with your child from their first steps to adulthood.",
    "indeedCompanyUrl": "https://www.indeed.com/cmp/Cook-Children's-Health-Care-System",
    "logoUrl": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/78935a6502b10fd14c426a13bf890d97",
    "openRoles": 2,
    "roleTitles": "RN Staff, Endocrinology Clinic | RN, Cardiac Stepdown",
    "matchedRoles": "registered nurse",
    "jobLocations": "Fort Worth, TX",
    "remoteRoles": 0,
    "latestJobTitle": "RN Staff, Endocrinology Clinic",
    "latestJobUrl": "https://www.indeed.com/viewjob?jk=59e7ad4aad4c3622",
    "applyUrl": "https://cookchildrens.wd1.myworkdayjobs.com/en-US/Cook_Childrens_Careers/job/Fort-Worth-TX/RN-Staff--Endocrinology-Clinic_JR-119490",
    "latestPostedAt": "2026-10-09T03:36:21.661Z",
    "earliestPostedAt": "2026-10-09T03:36:06.477Z",
    "salaryMin": null,
    "salaryMax": null,
    "salaryCurrency": null,
    "salaryInterval": null,
    "contactEmails": null,
    "isStaffingAgency": false,
    "agencyReason": null,
    "isNewCompany": null,
    "searchLocation": "Dallas, TX",
    "country": "us",
    "source": "Indeed sample",
    "collectedAt": "2026-10-09T06:00:51.888Z"
}
```

A live search returns rows of the same shape, with `source` set to `Indeed` and `isNewCompany` set to `true` or `false`.

#### What does each hiring company row contain?

| Columns                                                                            | Meaning                                                                                                                                |
| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `companyName`, `website`, `domain`                                                 | The employer, its website from Indeed, and that website's domain without careers or jobs subdomains                                    |
| `employeeCount`, `revenue`, `industry`, `headquarters`, `companyDescription`       | The employer's Indeed profile. Revenue bands are in US dollars in every country. Empty when Indeed has nothing                         |
| `indeedCompanyUrl`, `logoUrl`                                                      | The company's Indeed page and logo                                                                                                     |
| `openRoles`, `roleTitles`, `matchedRoles`, `jobLocations`, `remoteRoles`           | How many matching postings it has, up to 10 of their titles, which of your roles found it, where the jobs are, and how many are remote |
| `latestJobTitle`, `latestJobUrl`, `applyUrl`, `latestPostedAt`, `earliestPostedAt` | The newest posting, its Indeed link and apply link, and when the newest and oldest postings went up on Indeed                          |
| `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryInterval`                       | Posted pay across the postings, in the pay period most of them use. Usually filled for US postings only                                |
| `contactEmails`                                                                    | Emails printed in the postings on the company's own domain, or role inboxes such as `jobs@` and `hr@`. Never free-mail addresses       |
| `isStaffingAgency`, `agencyReason`                                                 | Whether the company looks like an agency, recruiter or job board, and why. `true` appears only when the agency filter is off           |
| `isNewCompany`                                                                     | Whether earlier runs of the same search had not returned it. Empty on the free sample                                                  |
| `searchLocation`, `country`, `source`, `collectedAt`                               | What was searched, where the rows came from, and when                                                                                  |

Lists inside a cell are separated by `|`, so every column exports cleanly to CSV.

#### What is in the run summary?

The `summary-run` record in the key-value store says what the run did:

- how many postings Indeed returned and how many companies they came from;
- how many companies were skipped, and why: agencies, size, your exclusion list, or returned before;
- how many companies were delivered;
- whether the run stopped early, at your spending cap or before its timeout;
- the Indeed requests it made.

#### How are companies counted and ranked?

`openRoles` is the number of postings this search found for the company, not every vacancy the company has. Postings are grouped by the employer's website domain, ignoring subdomains like `careers.` and `jobs.`. Companies without a usable website are grouped by name within the country. Two subsidiaries that share a parent's careers website therefore count as one company. Rows are ranked by `openRoles`, then by the newest posting, so a run that stops at your spending cap still delivers the busiest companies first.

### How much does it cost to find hiring companies?

The Actor is **pay per event**, at the prices shown on this page, and there is one event:

| Event          | Charged                           | When                                              |
| -------------- | --------------------------------- | ------------------------------------------------- |
| `company-lead` | Once per hiring company delivered | After that company's row is saved to your dataset |

The price depends on your Apify plan: **$0.025 per company on the Free plan, falling to $0.02 on higher plans**. A run of 100 companies costs $2.00 to $2.50.

Nothing else is charged:

- **The free sample** costs nothing.
- **Skipped companies cost nothing**, whether agencies, too large, on your exclusion list or returned before.
- **A search that finds nothing costs nothing**, and neither does a run that cannot reach Indeed.

Platform usage for a typical run is a fraction of a cent.

To set a budget, set **Maximum total charge** in the run options. The Actor stops when it reaches it, never delivers a company it cannot charge for, and its status message says how many it delivered. A cap below the price of one company stops the run before it searches.

### How to run Job Posting Leads from the API or from Make, n8n and Zapier

A search for a few dozen companies usually finishes in under a minute, so the Actor can run synchronously: one request in, hiring companies out.

```bash
curl -X POST "https://api.apify.com/v2/acts/mediocre_interest~job-posting-leads/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
        "roles": ["registered nurse"],
        "location": "Dallas, TX",
        "maxCompanies": 20
      }'
```

The response is a JSON array of up to 20 hiring company rows like the one above, busiest first. Add `&format=csv` for a spreadsheet, or `&fields=companyName,website,employeeCount,openRoles,latestJobUrl` to keep only the columns you need.

To feed a CRM or an outreach tool, use Apify's integrations for [Make, n8n, Zapier and others](https://docs.apify.com/platform/integrations). Run the Actor, then read its dataset into the next step. For a weekly list of new hiring companies, schedule the run in Apify Console with **Only companies not returned before** switched on.

### Tips for better results

- **Search the titles employers write.** "Registered nurse" and "RN" find different postings. Add the variants you place, up to 10 roles in one run.
- **Pick the window for the job.** The last 7 days suits a weekly list, the last 24 hours a daily one, and the last 30 days a first, wider sweep.
- **Match the location to the country.** The location is searched on the chosen country's Indeed, so "Dallas, TX" on Indeed Australia finds nothing. Leave the location empty to search the whole country.
- **Use the size filter if you serve smaller firms.** "Up to 500 employees" keeps the small and mid-sized employers and drops the large ones. Companies without a size on Indeed are kept.
- **Keep your clients out.** Put their websites or names in **Companies to leave out**, so every row is a new conversation.

### FAQ

#### Is it legal to collect job postings from Indeed?

The Actor reads job postings and company profiles that Indeed shows to anyone, without logging in. It returns business information only: no person's name, and only email addresses that postings print for the company itself or for a role inbox. Whether a particular use is lawful depends on where you are and what you do with the data, so if you are unsure, ask a lawyer.

#### How does it decide that a company is a staffing agency?

From the company's name, its Indeed industry, its own description, and wording only intermediaries use in postings. The table under *How does it recognise a staffing agency?* above lists each signal. Turn **Skip staffing agencies and recruiters** off to see every company, with `agencyReason` saying why one was flagged. If an agency slips through, add it to **Companies to leave out**.

#### Why do some companies have no website or size?

Indeed's profile for that employer has none, which is more common for small employers and outside the US. Those companies still appear, grouped by name, with the empty fields left blank. A company without a size is never removed by the size filter.

#### Why did my run return no companies?

The run's status message gives the reason:

- **No postings matched.** Indeed had none for those roles in that place and window. The message names the role, location and country searched.
- **Your filters left nothing.** Every company found was an agency, too large, on your exclusion list or returned before, and the message counts each.
- **Nothing new.** With **Only companies not returned before** on, a run that finds only companies it has already returned succeeds with "No new hiring companies".

None of these is charged.

#### Does it give me the hiring manager's name?

No. It returns companies, not people, and never a person's name. Contact emails appear only when a posting prints one on the company's own domain or a role inbox such as `careers@`. To reach a decision-maker, pass the company websites to a contact-enrichment tool.

#### How many companies can one run find?

Up to 1,000, set by **Maximum companies**. Indeed returns up to about 500 postings for each role, and a role usually spans fewer companies than postings. To find more companies, add more roles, widen the location, or allow older postings.

#### How is it different from an Indeed job scraper?

A job scraper returns one row per posting, agencies included, and leaves the grouping and qualifying to you. This Actor returns one row per hiring company, removes staffing agencies, adds the employer's website, size and revenue band, filters by company size, and can return only companies you have not seen before. You pay per company, not per posting.

#### Which countries does it cover?

The United States, the United Kingdom, Canada and Australia, each through that country's Indeed.

### What other Actors work with this one?

- [Multi-Platform Job Scraper](https://apify.com/mediocre_interest/multi-platform-jobs-scraper): every job posting from several job boards as its own row. Use it when you need the postings themselves, and this Actor when you need the companies behind them.
- [Ad Library Scraper — Google, Meta & LinkedIn](https://apify.com/mediocre_interest/ads-library-scraper): the ads a company is running, another sign of a business that is growing.
- [Airtable Data Quality Scan - Find Duplicates](https://apify.com/mediocre_interest/airtable-data-quality-scan): duplicate records and broken values in an Airtable base, such as the CRM your leads end up in.
- [Make.com Scenario Auditor - Linter & Cost Review](https://apify.com/mediocre_interest/make-scenario-auditor): a review of the Make scenarios that move your leads around.
- [n8n Workflow Auditor - Linter & Security Review](https://apify.com/mediocre_interest/n8n-workflow-auditor): the same review for n8n workflows.

### Support

Found a staffing agency the filter missed, an employer it removed by mistake, or a search that returned nothing it should have? Open an issue on the **Issues** tab, with the run ID and the company name or input that shows it. Custom work, such as CRM-ready exports or a scheduled lead list built for your agency, is available on request.

# Actor input Schema

## `roles` (type: `array`):

Job titles or keywords you place, one per line, up to 10. Each is searched on Indeed separately. Leave empty to get a free sample instead: hiring companies from a saved search for registered nurses around Dallas, TX, which searches nothing and costs nothing.

## `location` (type: `string`):

City, region or postcode. Postings within 50 miles are included. Leave empty to search the whole country.

## `country` (type: `string`):

Which country's Indeed to search.

## `postedWithinDays` (type: `string`):

Only postings Indeed lists as posted within this period.

## `maxCompanies` (type: `integer`):

Stop after this many hiring companies, busiest first. You are charged once per company returned. Indeed lists up to about 500 postings per role, so more roles find more companies.

## `skipStaffingAgencies` (type: `boolean`):

Leave out staffing agencies, recruiters and job boards posting other employers' vacancies. Turn it off to keep them, marked in isStaffingAgency with the reason in agencyReason.

## `maxCompanySize` (type: `string`):

Leave out companies Indeed lists as larger than this. Companies with no size on Indeed are kept, with employeeCount empty.

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

Company names or websites to leave out, one per line, such as your current clients. A website matches the company's domain; a name matches whatever its case, punctuation or Inc / LLC / Ltd.

## `onlyNewCompanies` (type: `boolean`):

Return only companies that earlier runs with the same roles, location and country did not return. Schedule the Actor with this on to get just the new ones each time.

## `proxyConfiguration` (type: `object`):

Proxy for the requests to Indeed. Keep it on: the Apify platform cannot reach Indeed without one. If Indeed refuses the default group, pick RESIDENTIAL.

## Actor input object example

```json
{
  "location": "Dallas, TX",
  "country": "us",
  "postedWithinDays": "7",
  "maxCompanies": 100,
  "skipStaffingAgencies": true,
  "maxCompanySize": "any",
  "excludeCompanies": [],
  "onlyNewCompanies": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `companies` (type: `string`):

Every hiring company found, busiest first, with its website, size, open roles and newest posting.

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

What the run did: postings read, companies found and skipped, companies delivered, and the budget it worked to.

# 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 = {
    "location": "Dallas, TX",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mediocre_interest/job-posting-leads").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 = {
    "location": "Dallas, TX",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("mediocre_interest/job-posting-leads").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 '{
  "location": "Dallas, TX",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call mediocre_interest/job-posting-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mediocre_interest/job-posting-leads"
        }
    }
}
```

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/VaOXg3gNBCt9Qbvxe/builds/Dr6HZBwmi7T8t3sqb/openapi.json
