# Slack App Directory Email Scraper (`leads-scraper/slack-app-directory-email-scraper`) Actor

Slack App Directory Email Scraper SD - Slack App Directory Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from Slack App Directory results by keyword, location and email domain - Slack App Directory email extractor.

- **URL**: https://apify.com/leads-scraper/slack-app-directory-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

### Slack App Directory Email Scraper — vendor support emails from Slack app listings

The **Slack App Directory Email Scraper** builds a contact list of the software vendors who publish integrations for Slack. Every app listing is a small storefront, and a storefront needs a support address.

That is what makes this Actor productive: a Slack app listing exists to convince a workspace admin to install something, so the publisher has a strong incentive to print a way of reaching them. In our measured runs the Slack App Directory Email Scraper recovered account identity on 8 out of 10 rows.

The audience the Slack App Directory Email Scraper reaches is unusually well-qualified. A company shipping a Slack integration is a funded, technical, B2B SaaS vendor — exactly the profile most partner, agency and developer-tool teams are trying to reach.

#### What the Slack App Directory Email Scraper does

The Slack App Directory Email Scraper builds Google searches using the `site:` operator against `slack.com`, fetches result pages through the Apify **GOOGLE_SERP** proxy, and extracts email addresses from the title and snippet text of each result block.

It does **not** log into Slack, use the Slack API, or open the Slack App Directory in a browser. There is no JavaScript rendering, no authentication and no cookies anywhere in the pipeline.

App listings live under `slack.com/apps/<id>`, which is a path-based handle. That is why the Slack App Directory Email Scraper can usually attach a `username` and a working `profileUrl` to the address it finds.

#### Why the Slack app ecosystem is a strong prospecting surface

Integration vendors are buyers of everything an app company buys: analytics, billing, support tooling, security review, localisation, design and marketing services.

They are also partners. If you sell into the same workspaces, a publisher found by the Slack App Directory Email Scraper is a natural candidate for co-marketing, a bundle or a technical integration of your own.

The Slack App Directory Email Scraper gives you that list with a publicly published address attached, keyed to the app name and listing you can open and verify.

### Key features of the Slack App Directory Email Scraper

| Feature | What it means for your Slack app vendor list |
|---|---|
| Google `site:` targeting | Queries are scoped to `slack.com`, focused on app listing pages |
| Path-based handle parsing | `slack.com/apps/<id>` yields a `username` and a matching `profileUrl` |
| Vendor-tuned modifiers | Defaults include `support`, `developer` and `publisher` — the words listings actually use |
| Query expansion | Each keyword × domain pair runs as a base, quoted and `intitle:` query plus one variant per modifier |
| Domain filtering | Only emails ending in your `customDomains` list are kept |
| Global deduplication | An address appears once per run, across every query and page |
| Email normalisation | Handles `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and full-width `＠` |
| Junk filter | Rejects `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` does not match inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Discards a hit that is only the tail of another email in the same block |
| Structural parsing | Finds the `<h3>` title then the smallest surrounding block; no reliance on Google CSS classes |
| Whole-page fallback parser | A Google layout change degrades to "emails without account details", not "no emails" |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Retries with backoff | Up to 3 attempts per page, exponential backoff, fresh proxy session per request |
| Failed-query requeue | Blocked or failed queries are retried once at the end of the run |
| Async concurrency | An `asyncio` worker pool with a shared stop signal on `maxEmails` |
| Resumable state | Key-value store state keyed by an input hash, saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |

### How the Slack App Directory Email Scraper works

1. The Slack App Directory Email Scraper reads your keywords, optional location, email domains and limits.
2. It composes queries such as `site:slack.com slack app support "@gmail.com"`.
3. It fetches Google result pages asynchronously through the Apify GOOGLE_SERP proxy with `aiohttp`.
4. It parses each result block structurally, isolating the listing title and its snippet.
5. It applies a domain-filtered regex, normalises candidates and filters placeholder addresses.
6. It deduplicates globally and pushes each lead to the Apify dataset immediately.

Base queries run first, so the most relevant listings arrive before the expanded long tail. A conservative `maxEmails` still returns the best of the run.

The Slack App Directory Email Scraper halts as soon as your quota is met, so nothing is spent on pages you will not use.

### Input reference for the Slack App Directory Email Scraper

These nine fields are the complete input surface of the Slack App Directory Email Scraper.

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["slack app", "integration"]` | Search terms: app category, vertical, use case |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com","@yahoo.com"]` | Only emails on these domains are kept; `@` optional |
| `maxEmails` | integer 1–10000 | `20` | Stop after this many unique emails |
| `countryCode` | string | `""` | Two-letter country for the search proxy (US, GB, DE…) |
| `expandQueries` | boolean | `true` | Search each keyword × domain in several phrasings |
| `queryModifiers` | array | `["email","contact","support","developer","publisher"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1–50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1–20 | `5` | Parallel queries |

Category-shaped keywords work best here: `crm integration`, `standup bot`, `incident management`, `time tracking`. They mirror how the directory itself is organised.

#### Example input for the Slack App Directory Email Scraper

```json
{
  "keywords": ["standup bot", "crm integration", "incident management"],
  "location": "",
  "customDomains": ["@gmail.com", "@yahoo.com"],
  "maxEmails": 400,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "support", "developer", "publisher"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Point `customDomains` at corporate suffixes when you specifically want company addresses rather than founder Gmail accounts. Both patterns exist in this directory.

### Output reference for the Slack App Directory Email Scraper

Every dataset item the Slack App Directory Email Scraper produces carries all fourteen fields.

| Field | Meaning |
|---|---|
| `network` | Platform name — `Slack App Directory` |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints (app handle or vendor display name) |
| `fullName` | Display name parsed from a profile-style title; empty for plain listing snippets |
| `username` | App listing handle when Slack exposes one; otherwise `null` |
| `profileUrl` | Canonical listing URL when a handle is known; otherwise empty |
| `url` | Direct Slack link when exposed, else the profile URL |
| `description` | Listing snippet, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain, e.g. `@gmail.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output row from the Slack App Directory Email Scraper

```json
{
  "network": "Slack App Directory",
  "keyword": "standup bot",
  "query": "site:slack.com standup bot support \"@gmail.com\"",
  "title": "Standuply — Slack App Directory",
  "accountName": "A0F7XDUAZ",
  "fullName": "Standuply",
  "username": "A0F7XDUAZ",
  "profileUrl": "https://slack.com/apps/A0F7XDUAZ",
  "url": "https://slack.com/apps/A0F7XDUAZ",
  "description": "Async standups and team reports for Slack. Support: standuply.support@gmail.com",
  "email": "standuply.support@gmail.com",
  "emailDomain": "@gmail.com",
  "possiblyTruncated": false,
  "foundAt": "2026-08-31T10:41:19Z"
}
```

The `profileUrl` shape is `https://slack.com/apps/{username}`. Open it before any outreach — a two-second manual check keeps a lead list clean.

### Use cases for the Slack App Directory Email Scraper

| Use case | How the Slack App Directory Email Scraper helps |
|---|---|
| SaaS partner recruitment | Find integration vendors already building for the same workspaces you sell into |
| B2B outbound sales | Reach app companies who buy analytics, billing, support and security tooling |
| Agency prospecting | Identify vendors whose listings need better copy, design or localisation |
| Competitive research | Map who ships in your category and how they present support |
| Marketplace benchmarking | Track which vendors publish contact details and which do not |
| Developer relations | Build an early-access list of teams shipping on a platform |
| Recruiting | Source engineers and PMs at companies working in your problem space |
| CRM enrichment | Attach a public support address to vendors already in your pipeline |

For neighbouring integration marketplaces, run this alongside the [Zapier App Directory Email Scraper](https://apify.com/leads-scraper/zapier-app-directory-email-scraper), the [HubSpot Marketplace Email Scraper](https://apify.com/leads-scraper/hubspot-marketplace-email-scraper) or the [Atlassian Marketplace Email Scraper](https://apify.com/leads-scraper/atlassian-marketplace-email-scraper) — many vendors list on several at once.

### Tuning the Slack App Directory Email Scraper

Feed the Slack App Directory Email Scraper category language, not brand names. `helpdesk integration` finds a whole segment; a single vendor's name finds one listing.

Keep `expandQueries` on. Google caps a single query at roughly 300 results, and expansion is the mechanism designed around that cap.

Raise `maxPagesPerQuery` only when a query is genuinely deep. Most directory queries exhaust well before the 30-page default.

Try `countryCode` when you want vendors positioned for a particular market — Google's regional results differ, and so do the listings the Slack App Directory Email Scraper surfaces.

### Honest limitations of the Slack App Directory Email Scraper

- The Slack App Directory Email Scraper only finds listings whose email is **publicly visible in Google's index**. Vendors who route support through a form instead of an address will not appear.
- Google caps a single query at roughly 300 results, which is why query expansion exists.
- `possiblyTruncated: true` means Google's snippet ellipsis touched the address. Verify those rows before sending.
- The Slack App Directory Email Scraper requires the Apify **GOOGLE_SERP** proxy and cannot run without Apify proxy credentials.
- `username` and `profileUrl` are only populated when a listing handle appears in Google's result. Where Google prints only a vendor display name, you keep `accountName` and `fullName` with an empty handle — a Google limitation, not a bug.
- Free Apify plans are capped at 100 emails per run. Paid plans are uncapped.
- Slack App Directory Email Scraper results vary with keywords, domains and location. No volume is guaranteed.

### Frequently asked questions about the Slack App Directory Email Scraper

#### Does the Slack App Directory Email Scraper use the Slack API?

No. The Slack App Directory Email Scraper never logs in, never calls the Slack API and never opens the directory in a browser. All data comes from publicly indexed Google search results.

#### Where do the emails come from?

The Slack App Directory Email Scraper reads the titles and snippets Google prints for app listing pages on `slack.com` — most often the support address a vendor publishes on their listing.

#### Is the Slack App Directory Email Scraper affiliated with Slack?

No. The Slack App Directory Email Scraper is an independent Actor, not supported, endorsed or affiliated with Slack.

#### Why is `username` sometimes empty?

The Slack App Directory Email Scraper parses a handle only when Google's result exposes one in the URL path or a profile-style title. Where Google prints only a vendor name, the row keeps `accountName` and `fullName` and leaves `username` as `null`.

#### Why does the Slack App Directory Email Scraper recover identity more often than a community scraper?

Because Slack app listings are path-addressed under `slack.com/apps/`, so the handle usually sits right in the indexed URL and maps cleanly onto `username` and `profileUrl`.

#### How is the Slack App Directory Email Scraper different from the Slack Community Email Scraper?

That Actor targets public invite and community landing pages, where volume is modest because workspaces are private. This one targets vendor app listings, which are public by design and yield more.

#### How many emails will one Slack App Directory Email Scraper run return?

It depends on your keywords and domains. Free Apify plans stop at 100 emails per run; paid plans are uncapped up to your `maxEmails`.

#### What does `possiblyTruncated` mean?

Google shortens long snippets with an ellipsis. If it touched the address, the Slack App Directory Email Scraper sets the flag to `true` so you can verify or discard that row.

#### Can I collect corporate domains instead of Gmail?

Yes. `customDomains` accepts any domains, with or without the leading `@`, and only those are kept.

#### Does a Slack App Directory Email Scraper run survive a migration?

Yes. State lives in the key-value store keyed by a hash of your input, and is saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING`.

#### What if Google changes its markup?

The Slack App Directory Email Scraper parses structurally, not by CSS class name, and a whole-page fallback parser takes over. Worst case: emails without account details.

#### Can I export the results?

Yes — the Slack App Directory Email Scraper dataset exports to CSV, JSON, Excel or the Apify API, like any Apify dataset.

### Related Actors

| Actor | What it collects |
|---|---|
| [Slack App Directory Email and Phone Number Scraper](https://apify.com/neuro-scraper/slack-app-directory-email-and-phone-number-scraper) | Emails and phone numbers from Slack App Directory |
| [Slack App Directory Phone Number Scraper](https://apify.com/neuro-scraper/slack-app-directory-phone-number-scraper) | Public phone numbers from Slack App Directory |
| [App Store Email Scraper](https://apify.com/leads-scraper/app-store-email-scraper) | Public contact emails from App Store |
| [Atlassian Marketplace Email Scraper](https://apify.com/leads-scraper/atlassian-marketplace-email-scraper) | Public contact emails from Atlassian Marketplace |
| [Bitbucket Email Scraper](https://apify.com/neuro-scraper/bitbucket-email-scraper) | Public contact emails from Bitbucket |
| [Chrome Web Store Email Scraper](https://apify.com/leads-scraper/chrome-web-store-email-scraper) | Public contact emails from Chrome Web Store |
| [CodePen Email Scraper](https://apify.com/neuro-scraper/codepen-email-scraper) | Public contact emails from CodePen |
| [Confluence Email Scraper](https://apify.com/neuro-scraper/confluence-email-scraper) | Public contact emails from Confluence |
| [Dev.to Email Scraper](https://apify.com/neuro-scraper/dev-to-email-scraper) | Public contact emails from DEV Community |
| [Docker Hub Email Scraper](https://apify.com/neuro-scraper/docker-hub-email-scraper) | Public contact emails from Docker Hub |
| [Figma Community Email Scraper](https://apify.com/neuro-scraper/figma-community-email-scraper) | Public contact emails from Figma Community |
| [Firefox Add-ons Email Scraper](https://apify.com/neuro-scraper/firefox-add-ons-email-scraper) | Public contact emails from Firefox Add-ons |
| [GitHub Email Scraper](https://apify.com/leads-scraper/github-email-scraper) | Public contact emails from GitHub |
| [GitLab Email Scraper](https://apify.com/neuro-scraper/gitlab-email-scraper) | Public contact emails from GitLab |
| [Google Play Email Scraper](https://apify.com/leads-scraper/google-play-email-scraper) | Public contact emails from Google Play |
| [Hashnode Email Scraper](https://apify.com/neuro-scraper/hashnode-email-scraper) | Public contact emails from Hashnode |
| [HubSpot Marketplace Email Scraper](https://apify.com/leads-scraper/hubspot-marketplace-email-scraper) | Public contact emails from HubSpot Marketplace |
| [Hugging Face Email Scraper](https://apify.com/leads-scraper/hugging-face-email-scraper) | Public contact emails from Hugging Face |
| [Jira Email Scraper](https://apify.com/neuro-scraper/jira-email-scraper) | Public contact emails from Jira |
| [Maven Central Email Scraper](https://apify.com/neuro-scraper/maven-central-email-scraper) | Public contact emails from Maven Central |
| [Microsoft AppSource Email Scraper](https://apify.com/neuro-scraper/microsoft-appsource-email-scraper) | Public contact emails from Microsoft AppSource |
| [Salesforce AppExchange Email Scraper](https://apify.com/leads-scraper/salesforce-appexchange-email-scraper) | Public contact emails from Salesforce AppExchange |
| [Shopify App Store Email Scraper](https://apify.com/leads-scraper/shopify-app-store-email-scraper) | Public contact emails from Shopify App Store |
| [SourceForge Email Scraper](https://apify.com/leads-scraper/sourceforge-email-scraper) | Public contact emails from SourceForge |
| [Stack Overflow Email Scraper](https://apify.com/leads-scraper/stack-overflow-email-scraper) | Public contact emails from Stack Overflow |
| [Unity Asset Store Email Scraper](https://apify.com/leads-scraper/unity-asset-store-email-scraper) | Public contact emails from Unity Asset Store |
| [Unreal Engine Marketplace Email Scraper](https://apify.com/leads-scraper/unreal-engine-marketplace-email-scraper) | Public contact emails from Unreal Engine Marketplace |
| [WordPress Plugin Directory Email Scraper](https://apify.com/neuro-scraper/wordpress-plugin-directory-email-scraper) | Public contact emails from WordPress Plugin Directory |
| [WordPress Theme Directory Email Scraper](https://apify.com/leads-scraper/wordpress-theme-directory-email-scraper) | Public contact emails from WordPress Theme Directory |
| [Zapier App Directory Email Scraper](https://apify.com/leads-scraper/zapier-app-directory-email-scraper) | Public contact emails from Zapier App Directory |
| [App Store Email and Phone Number Scraper](https://apify.com/leads-scraper/app-store-email-and-phone-number-scraper) | Emails and phone numbers from App Store |
| [Atlassian Marketplace Email and Phone Number Scraper](https://apify.com/neuro-scraper/atlassian-marketplace-email-and-phone-number-scraper) | Emails and phone numbers from Atlassian Marketplace |
| [Bitbucket Email and Phone Number Scraper](https://apify.com/neuro-scraper/bitbucket-email-and-phone-number-scraper) | Emails and phone numbers from Bitbucket |
| [Chrome Web Store Email and Phone Number Scraper](https://apify.com/neuro-scraper/chrome-web-store-email-and-phone-number-scraper) | Emails and phone numbers from Chrome Web Store |
| [CodePen Email and Phone Number Scraper](https://apify.com/neuro-scraper/codepen-email-and-phone-number-scraper) | Emails and phone numbers from CodePen |
| [Confluence Email and Phone Number Scraper](https://apify.com/neuro-scraper/confluence-email-and-phone-number-scraper) | Emails and phone numbers from Confluence |
| [DEV Community Email and Phone Number Scraper](https://apify.com/neuro-scraper/dev-to-email-and-phone-number-scraper) | Emails and phone numbers from DEV Community |
| [Docker Hub Email and Phone Number Scraper](https://apify.com/neuro-scraper/docker-hub-email-and-phone-number-scraper) | Emails and phone numbers from Docker Hub |
| [Figma Community Email and Phone Number Scraper](https://apify.com/neuro-scraper/figma-community-email-and-phone-number-scraper) | Emails and phone numbers from Figma Community |
| [Firefox Add-ons Email and Phone Number Scraper](https://apify.com/neuro-scraper/firefox-add-ons-email-and-phone-number-scraper) | Emails and phone numbers from Firefox Add-ons |
| [GitHub Email and Phone Number Scraper](https://apify.com/leads-scraper/github-email-and-phone-number-scraper) | Emails and phone numbers from GitHub |
| [GitLab Email and Phone Number Scraper](https://apify.com/neuro-scraper/gitlab-email-and-phone-number-scraper) | Emails and phone numbers from GitLab |

### Leave a review

If the Slack App Directory Email Scraper saved you time, please leave a star rating and a short
review on the Actor page.

Reviews are how other buyers judge whether a tool works, and they tell us which features to
build next.

If something did not work, email <neurodata.apify@gmail.com>
instead - bugs get fixed faster than they get complained about.

### Support

Questions, a bug report, or a custom build of the Slack App Directory Email Scraper? Email **neurodata.apify@gmail.com** and we will get back to you.

# Actor input Schema

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

Search terms describing the Slack App Directory accounts you want (niche, job title, industry).

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

Optional location phrase added to every query (e.g. "New York").

## `customDomains` (type: `array`):

Only emails ending with one of these domains are collected. With or without the leading @. Each domain is searched separately, so more domains means more results but a longer run - remove some for a faster, narrower search, or add your own (e.g. @company.com).

## `maxEmails` (type: `integer`):

Stop once this many unique emails have been collected.

## `countryCode` (type: `string`):

Two-letter country code for the search proxy (e.g. US, GB, DE). Empty for any.

## `expandQueries` (type: `boolean`):

Search each keyword x domain pair with several phrasings. Recommended - Google caps a single query at ~300 results.

## `queryModifiers` (type: `array`):

Extra words combined with each keyword when Expand queries is on. Tuned for Slack App Directory.

## `maxPagesPerQuery` (type: `integer`):

Google rarely returns more than ~30 pages for one query.

## `maxConcurrency` (type: `integer`):

How many queries run in parallel.

## Actor input object example

```json
{
  "keywords": [
    "slack app",
    "integration"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "support",
    "developer",
    "publisher"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Slack App Directory Email Scraper, stored in the run's default dataset.

# 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 = {
    "keywords": [
        "slack app",
        "integration"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "support",
        "developer",
        "publisher"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/slack-app-directory-email-scraper").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 = {
    "keywords": [
        "slack app",
        "integration",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "support",
        "developer",
        "publisher",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/slack-app-directory-email-scraper").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 '{
  "keywords": [
    "slack app",
    "integration"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "support",
    "developer",
    "publisher"
  ]
}' |
apify call leads-scraper/slack-app-directory-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/slack-app-directory-email-scraper"
        }
    }
}
```

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/OeglEuFbQQNthss3n/builds/QCdfcFglav2tdq8V1/openapi.json
