# Atlassian Marketplace Email Scraper (`leads-scraper/atlassian-marketplace-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/atlassian-marketplace-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

### Atlassian Marketplace Email Scraper — vendor contacts from the Jira and Confluence app ecosystem

The **Atlassian Marketplace Email Scraper** collects publicly indexed contact emails for the vendors who publish apps on `marketplace.atlassian.com`.
Feed it keywords and email domains, and it returns emails, account names, listing URLs and the snippet each address was found in.

The Atlassian Marketplace is enterprise B2B territory.
Marketplace Partners publish support and sales addresses on their listings because that is how Atlassian customers, Solution Partners and resellers are meant to reach them.
The Atlassian Marketplace Email Scraper simply finds the ones Google has already indexed.

There is no bulk export of vendor contacts and no public directory of Marketplace Partner emails.
The Atlassian Marketplace Email Scraper turns that manual browsing job into a dataset you can filter and export.

#### What the Atlassian Marketplace Email Scraper does — and does not do

The Atlassian Marketplace Email Scraper builds Google queries with the `site:marketplace.atlassian.com` operator, reads the result pages, and extracts emails from titles and snippets.
Every unique address is deduplicated globally and pushed to an Apify dataset the moment it is found.

It does **not** log into Atlassian, use the Atlassian Marketplace REST API, or open the marketplace in a browser.
No JavaScript rendering, no authentication, no cookies — strictly publicly indexed search results.

#### Who this Atlassian Marketplace vendor list tool is for

Alliance and partnership managers run the Atlassian Marketplace Email Scraper to recruit Marketplace Partners for an integration or co-sell motion.
Product teams use it to find Jira app developers whose apps complement theirs.

Consultancies and Solution Partners source app vendors for an enterprise Atlassian rollout.
Analysts point the Atlassian Marketplace Email Scraper at a category to map the Confluence and Jira app landscape for competitive research.

### Key features of the Atlassian Marketplace Email Scraper

Everything below is behaviour the Atlassian Marketplace Email Scraper genuinely implements.

| Feature | What it means in practice |
|---|---|
| `site:` scoping | Every query is locked to `marketplace.atlassian.com`, keeping results inside the Atlassian Marketplace |
| Query expansion | Each keyword × domain pair runs as a base query, a quoted query, an `intitle:` query, plus one variant per query modifier |
| Domain-filtered extraction | Only emails on the domains you list survive, so you control the shape of the output |
| Global deduplication | Each address appears once per run, regardless of how many queries or pages found it |
| Obfuscation handling | Reads `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Rejects placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` will 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 | Locates the `<h3>` title and the smallest surrounding block instead of trusting Google's CSS class names |
| Whole-page fallback | If Google's markup shifts, the run degrades to "emails without account details" rather than "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, a fresh proxy session per request |
| End-of-run requeue | Blocked or failed queries get one more pass before the run closes |
| Resumable state | Progress lives in the key-value store, keyed by an input hash, saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Async concurrency | An `asyncio` worker pool with a shared stop signal once `maxEmails` is reached |
| Run summary | Pages fetched, blocked pages, retries and emails per page are logged |

### How the Atlassian Marketplace Email Scraper works

Six steps, nothing hidden.

1. The Atlassian Marketplace Email Scraper reads your input: keywords, location, email domains and limits.
2. It composes Google queries with the `site:` operator against `marketplace.atlassian.com`, for example `site:marketplace.atlassian.com atlassian app vendor "@gmail.com"`.
3. It fetches result pages through the Apify **GOOGLE_SERP** proxy using async `aiohttp`.
4. It parses each result block structurally, finding the `<h3>` title and the tightest block around it.
5. It extracts emails from that block text with a domain-filtered regex.
6. It deduplicates globally and pushes each lead to the dataset immediately.

Because rows arrive as they are found, you can start reviewing leads before the run finishes.
And because state is resumable, a migration or abort does not send the Atlassian Marketplace Email Scraper back to the start.

#### Why query expansion matters on an enterprise marketplace

Google returns roughly 300 results for any single query.
The Atlassian Marketplace holds far more listings than that, so one query cannot see the whole catalogue.

Query expansion is the workaround.
The Atlassian Marketplace Email Scraper rewrites each keyword into several phrasings and combines it with each modifier, so many narrow queries collectively cover more ground.

### Input settings for the Atlassian Marketplace Email Scraper

Nine fields drive the run. Only `keywords` is required; everything else has a working default.

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["atlassian app", "vendor"]` | Search terms describing the vendors you want (niche, job title, industry) |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com","@yahoo.com"]` | Only emails on these domains are collected; the leading `@` is optional |
| `maxEmails` | integer 1–10000 | `20` | Stop once this many unique emails have been collected |
| `countryCode` | string | `""` | Two-letter country code for the search proxy (US, GB, DE...) |
| `expandQueries` | boolean | `true` | Search each keyword × domain pair 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` | How many queries run in parallel |

#### Example input for a Jira app vendor email run

```json
{
  "keywords": ["atlassian app", "jira app vendor", "confluence macro app"],
  "location": "Germany",
  "customDomains": ["@gmail.com", "@outlook.com"],
  "maxEmails": 250,
  "countryCode": "DE",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "support", "developer", "publisher"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Probe first with `maxEmails` around 20–50.
A short Atlassian Marketplace Email Scraper run tells you quickly whether a category is well indexed before you commit to a large one.

### Output fields from the Atlassian Marketplace Email Scraper

Every dataset item the Atlassian Marketplace Email Scraper writes carries all fourteen fields below.
Keys are always present; some values are conditional.

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints |
| `fullName` | Display name parsed from a profile-style title; empty for non-profile results |
| `username` | URL-safe handle when the platform exposes one; otherwise `null` |
| `profileUrl` | Canonical vendor URL when a handle is known; otherwise empty |
| `url` | Direct platform link when exposed, else the profile URL |
| `description` | Bio or snippet text, 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 — verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output row

```json
{
  "network": "Atlassian Marketplace",
  "keyword": "jira app vendor",
  "query": "site:marketplace.atlassian.com jira app vendor support \"@gmail.com\"",
  "title": "Timesheet Reports for Jira | Atlassian Marketplace",
  "accountName": "Kestrel Software",
  "fullName": "Kestrel Software",
  "username": "kestrel-software",
  "profileUrl": "https://marketplace.atlassian.com/vendors/kestrel-software",
  "url": "https://marketplace.atlassian.com/vendors/kestrel-software",
  "description": "Time tracking and reporting apps for Jira Cloud and Data Center. Partner enquiries: kestrel.apps@gmail.com",
  "email": "kestrel.apps@gmail.com",
  "emailDomain": "@gmail.com",
  "possiblyTruncated": false,
  "foundAt": "2025-04-18T13:24:11Z"
}
```

Export what the Atlassian Marketplace Email Scraper collects as CSV, JSON, Excel or XML, or pull it through the Apify API into your CRM.

### Use cases for the Atlassian Marketplace Email Scraper

The Atlassian Marketplace is a vendor catalogue, so these use cases live in partnership and sourcing work rather than consumer prospecting.

| Use case | How the Atlassian Marketplace Email Scraper helps |
|---|---|
| Marketplace Partner recruitment | Build a shortlist of app vendors in a category you want to co-sell or integrate with |
| Integration partnerships | Find Jira and Confluence app publishers whose apps complement yours, and reach the address they publish |
| Enterprise vendor sourcing | Assemble an Atlassian marketplace vendor list for a rollout, migration or RFP shortlist |
| Competitive research | Map who publishes in a category and how they position their listings |
| Ecosystem sizing | Sample by keyword to gauge how crowded a Jira or Confluence app niche really is |
| Investor and M\&A screening | Add a contact layer to a category map of Atlassian app vendors |
| Migration and Cloud programmes | Reach vendors whose apps a customer depends on before a Data Center to Cloud move |
| CRM enrichment | Match scraped vendor contacts against accounts you already track |

#### Worked example: sourcing Confluence app vendors

Set `keywords` to `["confluence app", "confluence macro app", "confluence vendor"]`.
Leave `expandQueries` on so each keyword also runs with `email`, `contact`, `support`, `developer` and `publisher`.

Use free-mail domains in `customDomains` when you want small and independent Marketplace Partners.
Swap in a branded domain when you are after established vendors with a company mailbox.

Run the Atlassian Marketplace Email Scraper once at `maxEmails: 30` to sanity-check the category, then again at your real target.
The second Atlassian Marketplace Email Scraper run reuses the same expansion plan, so the probe costs very little.

### Tips for getting more from the Atlassian Marketplace Email Scraper

Category keywords outperform generic ones.
"jira workflow app" gives the Atlassian Marketplace Email Scraper far more to work with than "software".

Use `customDomains` as a segmentation lever, not just a filter.
Free-mail domains skew towards independent developers; branded domains skew towards funded vendors.

Set `countryCode` when you need a regional slice of the Atlassian partner ecosystem.
Combine it with `location` for tighter geographic focus.

Do not raise `maxConcurrency` hoping for more leads.
Extra parallelism does not make the Atlassian Marketplace Email Scraper find emails that are not in the index — it just spends proxy budget faster.

Schedule the Atlassian Marketplace Email Scraper monthly with a stable input.
New apps and vendors get indexed continuously, so repeat runs keep an Atlassian marketplace vendor list current.

Because the Atlassian ecosystem spans several public surfaces, pair this Actor with the [Jira Email Scraper](https://apify.com/neuro-scraper/jira-email-scraper), the [Confluence Email Scraper](https://apify.com/neuro-scraper/confluence-email-scraper) and the [Bitbucket Email Scraper](https://apify.com/neuro-scraper/bitbucket-email-scraper).
The same vendor often appears in more than one of them under a different public identity.

### Limitations of the Atlassian Marketplace Email Scraper

Set expectations with these before you plan a campaign.

- **Publicly indexed emails only.** If a vendor's address is not visible in Google's index, the Atlassian Marketplace Email Scraper cannot find it. Contact forms and images are invisible to it.
- **Google's ~300-result cap.** A single query tops out around 300 results, which is exactly why query expansion exists.
- **`possiblyTruncated`.** When Google's snippet ellipsis touched the email, this flag is `true` and the address may be incomplete. Verify before sending.
- **`username` and `profileUrl` are conditional.** They are only populated when Google's result exposes a handle. Some rows carry `accountName` and `fullName` with an empty `username` and `profileUrl`. That is a Google limitation, not a bug.
- **Apify GOOGLE_SERP proxy required.** The Atlassian Marketplace Email Scraper cannot run without Apify proxy credentials.
- **Free-plan cap.** Free Apify plans are capped at 100 emails per run; paid plans are uncapped.
- **No guaranteed volume.** Results vary with keywords, domains and location, and no volume is guaranteed.

In our own measured testing, an Atlassian Marketplace Email Scraper run resolved 10 out of 10 targeted results into usable rows.
That is a strong showing for a B2B marketplace, but it describes that test — not a promise about your keywords.

### Related Actors

The Atlassian Marketplace Email Scraper shares one engine with the rest of this Developer & Technology family; only the platform config differs.

| Actor | What it collects |
|---|---|
| [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 |
| [Atlassian Marketplace Phone Number Scraper](https://apify.com/neuro-scraper/atlassian-marketplace-phone-number-scraper) | Public phone numbers from Atlassian Marketplace |
| [App Store Email Scraper](https://apify.com/leads-scraper/app-store-email-scraper) | Public contact emails from App Store |
| [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 |
| [Slack App Directory Email Scraper](https://apify.com/leads-scraper/slack-app-directory-email-scraper) | Public contact emails from Slack App Directory |
| [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 |
| [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 |
| [Google Play Email and Phone Number Scraper](https://apify.com/leads-scraper/google-play-email-and-phone-number-scraper) | Emails and phone numbers from Google Play |

### FAQ about the Atlassian Marketplace Email Scraper

#### Does the Atlassian Marketplace Email Scraper use the Atlassian Marketplace API?

No. It uses no Atlassian API, does not log in, and does not open the marketplace website. Every field comes from publicly indexed Google search results.

#### Is this Actor affiliated with or endorsed by Atlassian?

No. It is an independent tool built on public Google results, and it is not officially supported by, affiliated with or endorsed by Atlassian.

#### Which domain does the Atlassian Marketplace Email Scraper search?

`marketplace.atlassian.com`. Queries are scoped with Google's `site:` operator so results stay inside the Atlassian Marketplace.

#### Does the Atlassian Marketplace Email Scraper find Solution Partners as well as Marketplace Partners?

It finds whatever is published on `marketplace.atlassian.com` and indexed by Google, which is the app and vendor catalogue. Solution Partner directories on other Atlassian domains are out of scope.

#### Can I use the Atlassian Marketplace Email Scraper for Jira and Confluence separately?

Yes — use keywords. `"jira app vendor"` and `"confluence macro app"` are both scoped to the same marketplace domain but return different slices of the catalogue.

#### Why does the Atlassian Marketplace Email Scraper leave `username` and `profileUrl` empty on some rows?

Those fields are only filled when Google's result exposes a usable handle. When Google prints only a display name you still get `accountName` and `fullName`, but no handle. This is a Google limitation, not a bug.

#### What does `possiblyTruncated: true` mean?

Google's snippet ellipsis touched the email, so the address may be cut off. Treat those rows as leads to verify rather than addresses to mail.

#### How many emails can one Atlassian Marketplace Email Scraper run return?

Free Apify plans stop at 100 emails per run. Paid plans are uncapped and bounded by `maxEmails`, which accepts 1 to 10000.

#### Do I need a proxy?

Yes. The Atlassian Marketplace Email Scraper requires the Apify GOOGLE_SERP proxy and cannot run without Apify proxy credentials.

#### Why did I get fewer emails than `maxEmails`?

Google caps a single query at roughly 300 results, and only some listings publish an indexed email. Widening `keywords` and `customDomains` usually helps more than raising `maxPagesPerQuery`.

#### Can a run be resumed after a migration?

Yes. Progress is stored in the key-value store keyed by a hash of your input, and saved on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

#### Is this data compliant to use?

The Atlassian Marketplace Email Scraper only collects addresses already public in Google's index. How you use them — GDPR, CAN-SPAM, local marketing rules — remains your responsibility.

### Leave a review

If the Atlassian Marketplace 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, feature requests or a custom build? Email **neurodata.apify@gmail.com**.

# Actor input Schema

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

Search terms describing the Atlassian Marketplace 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 Atlassian Marketplace.

## `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": [
    "atlassian app",
    "vendor"
  ],
  "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 Atlassian Marketplace 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": [
        "atlassian app",
        "vendor"
    ],
    "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/atlassian-marketplace-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": [
        "atlassian app",
        "vendor",
    ],
    "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/atlassian-marketplace-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": [
    "atlassian app",
    "vendor"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "support",
    "developer",
    "publisher"
  ]
}' |
apify call leads-scraper/atlassian-marketplace-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/atlassian-marketplace-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/21tMDL7RsmfDiISZL/builds/ne4VXvEX6d8XaC602/openapi.json
