# Threads Email Scraper - Bulk Keywords, Decodes Hidden Emails (`code-beat/threads-email-scraper-ultra-fast-and-precise`) Actor

🧵 Threads Email Scraper gathers creator and brand business emails in bulk by keyword. 🔓 Decodes hidden and encoded addresses, dedups results. 📈 Great for social media agencies, influencer marketing & DTC outreach.

- **URL**: https://apify.com/code-beat/threads-email-scraper-ultra-fast-and-precise.md
- **Developed by:** [Code Beat](https://apify.com/code-beat) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Threads Email Scraper

**Threads Email Scraper** is a fast, practical way to extract public email addresses from Threads using your chosen keywords. It’s built for marketers, data analysts, recruiters, and researchers who need a reliable Threads email scraper, Threads contact scraper, or Threads lead generation tool without spending hours on manual research. 🚀

### What is Threads Email Scraper? 🔍

Threads Email Scraper is an Apify actor designed to collect publicly available contact details from Threads based on your keywords and optional filters. It helps you turn broad Threads data extraction tasks into structured, ready-to-use leads. Instead of manually checking profiles one by one, this Threads profile email scraper automates the process and saves time at scale.

It’s especially useful for teams doing Threads lead generation, audience research, or contact discovery. You can use it to find relevant profiles, capture their public email addresses, and organize results by keyword. Whether you call it a Threads email finder, Threads web scraper, or Threads social media scraper, the goal is the same: faster outreach with less manual work. ✉️

### What Data Does a Threads Email Scraper Collect? 📊

This Threads email extraction tool collects a focused set of fields that make it easy to review, filter, and export your results. Each record includes the keyword that found the lead, the profile title, supporting description text, the profile URL, and the email address.

| Data Category | Fields Extracted | Description |
|---|---|---|
| Discovery | `keyword` | The keyword that surfaced the result |
| Identity | `title` | Profile title or name shown in the result |
| Context | `description` | Supporting public text from the profile result |
| Navigation | `url` | Direct link to the profile |
| Contact | `email` | Public email address found in the result |

### What Do Results from Threads Email Scraper Look Like? 👀

Each result is saved as a structured JSON record in your Apify dataset. Here’s a realistic example of what a scraped lead can look like:

```json
{
  "keyword": "founder",
  "title": "Maya Chen",
  "description": "Founder at Bright Path Studio | Public contact for partnerships and collaborations",
  "url": "https://www.threads.com/@mayachenstudio",
  "email": "maya@brightpathstudio.com"
}
```

You can export your Threads data extraction results in JSON or CSV from the Apify Console. 📥

#### Core Features of Threads Email Scraper ⚡

| Feature | Benefit |
|---|---|
| ✅ **Keyword-Driven Targeting** | Find relevant Threads profiles by using the terms that match your audience |
| ✅ **Optional Location Filter** | Narrow results with a location filter when you want more targeted leads |
| ✅ **Custom Email Domains** | Focus on specific domains like `@gmail.com` or `@yahoo.com` |
| ✅ **Configurable Result Cap** | Use `maxEmails` to control how many emails you want to collect |
| ✅ **Built-In Proxy Support** | Helps keep large scraping runs reliable |
| ✅ **Real-Time Data Saving** | Results are saved as they are found |
| ✅ **Structured Dataset Output** | Clean records that are easy to export and analyze |
| ✅ **Public Data Only** | Works with publicly available Threads data |

### Getting Started with Threads Email Scraper 🚀

1. **Open Apify Store** — Go to the Apify Store and find Threads Email Scraper.
2. **Click Try for Free** — Sign in or create an Apify account.
3. **Open the Input Tab** — Review the available input settings.
4. **Add Keywords** — Enter one or more keywords that describe the profiles you want to find.
5. **Set Optional Filters** — Add a location and/or custom email domains if needed.
6. **Cap Your Results** — Set `maxEmails` to control the size of the run.
7. **Click Start** — Launch the actor and monitor progress in the log output.
8. **Access Your Data** — Open the Dataset tab to preview or export your results. ✅

### Ways to Use Threads Email Scraper 💡

- 🎯 **Lead Generation** — Build targeted lists of public contacts from Threads for outreach campaigns
- 📣 **Email Marketing** — Collect public emails for newsletters and direct communication
- 🔬 **Market Research** — Study niche audiences and communities on Threads
- 🤝 **Recruitment** — Discover people with public contact details for sourcing and outreach
- 📊 **CRM Enrichment** — Add Threads emails and profile context to your existing records
- ⚙️ **Threads Automation** — Automate repetitive contact discovery tasks across multiple keywords

#### Input Parameters — Threads Email Scraper

```json
{
  "keywords": [
    "manager",
    "founder"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `keywords` | Array | Yes | `["manager","founder"]` | A list of keywords or queries to search for. |
| `location` | String | No | `""` | Location to filter search results. Leave it empty if you do not want to narrow results by place. |
| `customDomains` | Array | No | `["@gmail.com","@yahoo.com"]` | A list of email domains to focus on, such as personal or company domains. |
| `maxEmails` | Integer | No | `20` | Maximum number of emails to collect before the actor stops. |

#### Output Parameters — Threads Email Scraper

```json
{
  "keyword": "founder",
  "title": "Maya Chen",
  "description": "Founder at Bright Path Studio | Public contact for partnerships and collaborations",
  "url": "https://www.threads.com/@mayachenstudio",
  "email": "maya@brightpathstudio.com"
}
```

| Field | Label | Format | Description |
|---|---|---|---|
| `keyword` | Keyword | text | The keyword that produced the result. |
| `title` | Title | text | The title or name shown in the Threads result. |
| `description` | Description | text | Public supporting text from the result. |
| `url` | Url | link | Direct link to the Threads profile. |
| `email` | Email | text | Public email address found in the result. |

### Why Choose This Threads Email Scraper? 🏆

If you need a Threads email scraper that’s simple to configure and easy to export from, this actor is built for practical lead workflows. It combines keyword-based targeting, public web data collection, structured output, and configurable limits so you can keep runs focused and cost-aware. For mid-level marketers and researchers, that means faster Threads audience extraction and less manual digging. ✨

### How Many Results Can You Scrape? 📈

The number of results depends on how many public Threads profiles match your keywords and include an email address. You can set `maxEmails` anywhere from 1 to 10,000. Bigger searches may take longer, and larger runs can benefit from extending the timeout in Run Options. The dataset can store your results as they are collected, so you can export them whenever you’re ready.

### Legal Guidelines for Scraping Threads ⚖️

This actor collects only publicly available data from Threads. It does not access private accounts or protected content. As with any Threads web scraper, you should make sure your use complies with applicable laws, platform rules, and email outreach regulations. Always use collected data responsibly and for legitimate business purposes. For data removal requests, contact <codebeatapi@gmail.com>. 🤝

### FAQ — Threads Email Scraper ❓

#### How does Threads Email Scraper find emails?

It uses your keywords and email-domain filters to find relevant public Threads profiles, then collects public contact details from publicly available sources.

#### What kind of Threads profiles can I scrape?

You can scrape public Threads profiles that display an email in the available profile content. Private or restricted profiles are not included.

#### Can I use Threads Email Scraper for lead generation?

Yes. It works well as a Threads leads scraper for outreach lists, audience research, CRM enrichment, and contact discovery.

#### Does Threads Email Scraper support custom email domains?

Yes. You can add custom domains such as `@gmail.com` or `@yahoo.com` to focus the search on the types of contacts you want.

#### How can I control the size of my run?

Use `maxEmails` to set the maximum number of emails you want to collect. This helps you manage time and keep costs predictable.

#### Is this a good Threads social media scraper for marketers?

Yes. It’s a practical choice for marketers who need public contact data from Threads without doing manual profile checks one by one.

#### What should I do if I get too few results?

Try broader keywords, add similar terms, or include more email domains. A wider search often improves Threads audience extraction results.

#### How do I get help or request a feature?

For support, questions, or feature requests, email <codebeatapi@gmail.com>.

### Conclusion 🏁

Threads Email Scraper is a fast, reliable way to turn public Threads data into structured leads. Whether you need a Threads profile email scraper, a Threads contact scraper, or a Threads lead generation workflow, this actor helps you collect relevant emails at scale and keep your outreach process moving. 🚀

### 🆘 Support & Feedback

Have a question or feature request for Threads Email Scraper?

- 🐞 **Bug Reports:** Reach out by email
- ✨ **Custom Solutions & Feature Requests:** Contact our team for tailored help
- 📧 **Email:** <codebeatapi@gmail.com>

### Country & Time Targeting

Both filters are applied to the Google query itself, so they shape which pages
the dork is answered from rather than filtering after the fact.

**Target Country** - runs the search as if from that country (`gl`). Turn on
**Strict country filter** to additionally restrict results to pages Google
attributes to it (`cr=countryXX`); that is much tighter and returns noticeably
fewer results. Leave the country on *Global (no country filter)* for worldwide
results.

**Result Language** - restricts results to a single language (`hl` + `lr`).

**Time Range** - limits results to a publication window: past hour, 24 hours,
week, month, year, or an explicit *Custom range* using **Custom range: from** /
**to** in `YYYY-MM-DD` form. A page Google indexed last week is far more likely
to carry a live mailbox than one it last saw five years ago.

Selecting *Custom range* without either date falls back to no time filter rather
than searching all of time by accident.

# Actor input Schema

## `scrapeMode` (type: `string`):

Find New Emails (default) searches Airbnb by keyword. Clean My List skips searching entirely and instead runs the emails you paste into Email List (below) through the same deliverability checks.

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

A list of keywords or queries to search for.

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

Location to filter search results.

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

List of custom email domains

## `emailList` (type: `array`):

Paste the emails you want checked for deliverability. Only used when Scrape Mode is set to "Clean My List".

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

Maximum number of emails to collect. The scraper will stop once this limit is reached. Setting a higher limit allows for more potential results but doesn't guarantee reaching that number. This helps save costs by controlling scraping time.

## `verificationMode` (type: `string`):

Quick Check (default) validates syntax and MX records only - fast, no added latency. Deep Check additionally flags disposable-domain addresses and checks each domain against a public spam blocklist (Spamhaus DBL). Off skips validation entirely.

## `minQualityScore` (type: `number`):

Drop any contact whose quality score (0.0-1.0) falls below this. Leave at 0 for no filter.

## `excludeCatchAll` (type: `boolean`):

Drop contacts on domains confirmed to accept mail for any address (only applies when that signal is available).

## `requireMxValid` (type: `boolean`):

Drop any contact whose domain has no valid mail server (MX record).

## `targetCountry` (type: `string`):

Ask Google to answer as if searching from this country. Leave on "Global (no country filter)" for worldwide results.

## `strictCountry` (type: `boolean`):

Restrict results to pages Google attributes to the target country (cr=countryXX), instead of only preferring them. Much tighter targeting, noticeably fewer results.

## `searchLanguage` (type: `string`):

Restrict results to one language. Leave on "Any language" for no filter.

## `timeRange` (type: `string`):

Only return pages Google indexed within this window. Recent pages are more likely to hold a mailbox that still works.

## `customDateFrom` (type: `string`):

Only used when Time Range is "Custom range". Format: YYYY-MM-DD.

## `customDateTo` (type: `string`):

Only used when Time Range is "Custom range". Format: YYYY-MM-DD.

## Actor input object example

```json
{
  "scrapeMode": "Find New Emails",
  "keywords": [
    "manager",
    "founder"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "emailList": [],
  "maxEmails": 20,
  "verificationMode": "Quick Check",
  "minQualityScore": 0,
  "excludeCatchAll": false,
  "requireMxValid": false,
  "targetCountry": "Global (no country filter)",
  "strictCountry": false,
  "searchLanguage": "",
  "timeRange": "Any time",
  "customDateFrom": "",
  "customDateTo": ""
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "manager",
        "founder"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "emailList": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("code-beat/threads-email-scraper-ultra-fast-and-precise").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": [
        "manager",
        "founder",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "emailList": [],
}

# Run the Actor and wait for it to finish
run = client.actor("code-beat/threads-email-scraper-ultra-fast-and-precise").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": [
    "manager",
    "founder"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "emailList": []
}' |
apify call code-beat/threads-email-scraper-ultra-fast-and-precise --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,code-beat/threads-email-scraper-ultra-fast-and-precise"
        }
    }
}

```

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/XzIvkN4sf67q9jQRS/builds/U7EOnaD6tQFXBU7tW/openapi.json
