# Freelancer Email Scraper (`email_scraper/freelancer-email-scraper`) Actor

Freelancer Email Scraper finds publicly indexed Freelancer contact emails using targeted keywords, locations, and custom email domains. Extract structured lead data with titles, descriptions, URLs, and emails into an Apify Dataset.

- **URL**: https://apify.com/email\_scraper/freelancer-email-scraper.md
- **Developed by:** [Email Scraper](https://apify.com/email_scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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

### 🔍 Freelancer Email Scraper – Overview

**Freelancer Email Scraper** is an Apify Actor designed to find publicly indexed email addresses associated with Freelancer search results using targeted keywords, optional locations, and selected email-domain suffixes.

It is built for users who need structured Freelancer lead data for freelancer discovery, business research, prospecting, market research, and contact-list building.

Instead of manually searching Freelancer-related results, reviewing descriptions, identifying matching email addresses, and organizing the information, Freelancer Email Scraper performs the search workflow and stores matching contacts in an Apify Dataset.

> 💡 **What Freelancer Email Scraper can do**
>
> - Search Freelancer-related results using multiple keywords.
> - Narrow searches with an optional country, state, or city.
> - Search for specific email domains such as `@gmail.com`.
> - Support multiple email-domain suffixes in one run.
> - Exclude unwanted words or phrases from result descriptions.
> - Remove duplicate email addresses.
> - Store structured keyword, title, description, URL, and email data.
> - Push results incrementally to the Apify Dataset.
> - Save progress during execution for interruption recovery.
> - Set a target from 1 to 10,000 emails for each keyword + domain combination.

The easiest way to use Freelancer Email Scraper is to provide several specific professional keywords, optionally add a location, select the email domains you want to search, and choose an appropriate `maxEmails` target.

For better search coverage, use related terms rather than relying on one broad keyword. For example, instead of only `Developer`, consider `Web Developer`, `Python Developer`, `WordPress Developer`, or `Mobile App Developer`.

***

### 🔎 Freelancer Email Scraper – Key Features

Freelancer Email Scraper combines keyword-based search, email-domain targeting, location filtering, and exclusion rules into one structured workflow.

> 🔹 **Key Features**
>
> - Multiple keyword and query support.
> - Optional geographic search targeting.
> - Custom email-domain selection.
> - Per keyword + domain collection targets.
> - Case-insensitive exclusion filtering.
> - Duplicate email protection.
> - Structured Freelancer lead records.
> - Incremental Apify Dataset output.
> - Saved progress for interrupted runs.
> - Configurable result collection from 1 to 10,000 per combination.

Multiple keywords are useful when researching different professional categories. For example, a digital agency might search for `Graphic Designer`, `UI Designer`, `UX Designer`, and `Web Designer` separately.

The email-domain feature lets you decide which email suffixes are relevant to your research. You can use common providers such as Gmail, Yahoo, and Outlook, or provide other domain suffixes.

***

### 🎯 Freelancer Email Scraper – Why Use It?

Manual lead research can involve repeatedly searching for freelancer profiles, opening results, checking available descriptions, identifying contact information, and copying everything into a spreadsheet.

Freelancer Email Scraper turns that repetitive search process into a structured Apify workflow.

> 📌 **Why use Freelancer Email Scraper?**
>
> - Automate keyword-based Freelancer research.
> - Collect structured contact information.
> - Search several professional categories in one run.
> - Narrow results by geographic terms.
> - Search multiple email domains.
> - Remove duplicate email addresses.
> - Skip unwanted descriptions using exclusion terms.
> - Keep collected results organized in an Apify Dataset.

The Actor is particularly useful when your research has a clear search intent, such as finding developers, designers, marketers, writers, consultants, or other Freelancer-related professionals.

Results depend on information that is publicly indexed and available in search-result descriptions. The Actor does not guarantee that every Freelancer profile contains a publicly discoverable email address.

***

### 📊 Freelancer Email Scraper – What Data You Can Extract

Freelancer Email Scraper produces structured records containing the search context and contact information associated with each matching result.

The dataset is configured with a table view for the primary lead fields.

| Field         | Description                               | Default view |
| ------------- | ----------------------------------------- | ------------ |
| `network`     | Identifies the source as `Freelancer.com` | No           |
| `keyword`     | Keyword used to perform the search        | Yes          |
| `title`       | Title of the search result                | Yes          |
| `description` | Search-result description/snippet         | Yes          |
| `url`         | URL returned by the search result         | Yes          |
| `email`       | Matching email address                    | Yes          |

The Actor pushes the `network` field in each record, while the configured default dataset view displays `keyword`, `title`, `description`, `url`, and `email`.

> 📦 **Output summary**
>
> Each result connects an email address with the keyword that discovered it and the associated search-result title, description, and URL. This makes the resulting Freelancer lead data easier to review and organize.

***

### ⚙️ Freelancer Email Scraper – How to Use It

Using Freelancer Email Scraper requires only a few configuration steps.

#### 🔹 1. Enter Freelancer keywords

The required `keywords` field accepts a list of search terms or queries.

Examples include:

- `Freelancer`
- `Web Developer`
- `Graphic Designer`
- `SEO Specialist`
- `Content Writer`
- `WordPress Developer`

Specific keywords can make your search more focused. If you want developers, for example, using several relevant development terms can provide broader coverage than searching only for `Developer`.

#### 🔹 2. Add an optional location

The `location` field can contain a country, state, city, or other geographic term.

Examples:

- `New York`
- `California`
- `London`
- `Canada`
- `Sydney`

Leave the field empty when geographic targeting is not required.

#### 🔹 3. Choose email domains

The default email suffix is `@gmail.com`.

You can provide multiple domains such as:

- `@gmail.com`
- `@yahoo.com`
- `@outlook.com`
- `@hotmail.com`
- `@icloud.com`

#### 🔹 4. Set `maxEmails`

Choose how many matching addresses the Actor should target for each keyword + domain combination.

For example, 3 keywords, 2 domains, and a target of 20 create 6 combinations, each with a target of up to 20 addresses.

#### 🔹 5. Add exclusion terms

Use `excludeWords` when you want to skip descriptions containing particular words or phrases.

For example:

- `crypto`
- `onlyfans`

If an exclusion term appears in a result description, that complete snippet is skipped.

***

### 🔎 How Freelancer Email Scraper Finds Contact Emails

Freelancer Email Scraper searches for Freelancer-related results using the keyword and email-domain combinations you configure.

When a location is supplied, it is also incorporated into the search criteria. The Actor then examines available search-result descriptions for email addresses matching the selected domain suffix.

> 🔍 **General workflow**
>
> - Read your configured keywords.
> - Combine each keyword with each selected email domain.
> - Apply the optional location filter.
> - Search for relevant Freelancer results.
> - Review result descriptions for matching email addresses.
> - Apply the exclusion-word filter.
> - Ignore email addresses already collected.
> - Push new structured records to the Apify Dataset.
> - Save progress during the run.

This means Freelancer Email Scraper should be understood as a search-result-based email discovery Actor. It does not claim to retrieve hidden or private contact information from every Freelancer profile.

Only matching email addresses available through the indexed search information can be collected.

***

### 🧩 How to Extract Freelancer Emails by Keyword and Domain

A focused keyword combined with an appropriate email domain can make your search more targeted.

For example, a web-development research workflow could use:

```text id="51842"
Web Developer
WordPress Developer
WooCommerce Developer
Shopify Developer
```

Then search across:

```text id="29571"
@gmail.com
@yahoo.com
@outlook.com
```

This creates separate keyword + domain combinations and allows the Actor to work through each configured search target.

> 💡 **Search optimization tip**
>
> Start with several specific keywords that describe the professional category you need. If the result volume is too low, broaden the keywords, add related terms, add additional email domains, or remove the location filter.

***

### 📍 Can Freelancer Email Scraper Target a Country or City?

Yes. The optional `location` input allows you to narrow the search using a geographic term.

For example:

```text id="64027"
Keyword: Graphic Designer
Location: New York
Email domain: @gmail.com
```

The location is used to narrow the search query. It should not be interpreted as a guaranteed verification of a person's physical location.

If a location-specific search returns limited results, try a broader location or remove the location filter.

***

### 🚫 Can You Exclude Words or Phrases?

Yes. Freelancer Email Scraper includes an `excludeWords` input specifically for filtering unwanted search-result descriptions.

For example:

```json id="83614"
{
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

The matching process ignores letter case.

Single-word exclusions are matched as whole words, while phrases are matched as phrases within the description.

If a result description matches an exclusion term, the entire snippet is skipped and no email is extracted from that result.

***

### 💼 Freelancer Email Scraper – Use Cases

Freelancer Email Scraper can support multiple legitimate research and prospecting workflows involving publicly indexed Freelancer information.

#### 🔹 Freelancer Lead Generation

Search for professionals using service-specific keywords such as:

- `Graphic Designer`
- `Web Developer`
- `SEO Expert`
- `Content Writer`
- `Video Editor`

#### 🔹 Agency Prospect Research

Agencies can research publicly indexed professionals across categories such as design, development, marketing, writing, and consulting.

#### 🔹 Business Development

Use targeted professional keywords to discover potential business contacts associated with relevant Freelancer search results.

#### 🔹 Market Research

Collect structured search-result information for specific professional categories and compare the types of results appearing for different keywords.

#### 🔹 Geographic Research

Add a location when the research requires a specific country, city, or region.

#### 🔹 Multi-Domain Contact Research

Search several email providers or custom domain suffixes to broaden the range of matching email addresses.

> 🎯 **Use-case note**
>
> Actual results depend on search-engine indexing, keyword relevance, email-domain selection, location filters, duplicate addresses, and the amount of publicly available information.

***

### 📝 Input

Freelancer Email Scraper accepts the following inputs.

| Input           | Type             | Required | Default                   |
| --------------- | ---------------- | -------- | ------------------------- |
| `keywords`      | Array of strings | Yes      | `Freelancer`, `Developer` |
| `location`      | String           | No       | Empty                     |
| `customDomains` | Array of strings | No       | `@gmail.com`              |
| `maxEmails`     | Integer          | No       | `5`                       |
| `excludeWords`  | Array of strings | No       | Empty                     |

#### 🔹 Example Input

```json id="17463"
{
  "keywords": [
    "Web Developer",
    "Graphic Designer",
    "SEO Expert"
  ],
  "location": "New York",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

> ⚙️ **Input notes**
>
> - `keywords` is required.
> - `location` is optional.
> - `customDomains` supports multiple email suffixes.
> - `maxEmails` accepts values from 1 to 10,000.
> - `excludeWords` is optional.
> - The configured default run timeout is 3600 seconds.
> - Larger searches may require additional run time.

***

### 📤 Output

The Actor stores results in the **Freelancer Emails Dataset**.

#### 🔹 Example Output

```json id="92518"
{
  "network": "Freelancer.com",
  "keyword": "Web Developer",
  "title": "Example Freelancer Result",
  "description": "Example search result containing example@gmail.com",
  "url": "https://www.freelancer.com/example",
  "email": "example@gmail.com"
}
```

This is an illustrative example. Actual titles, descriptions, URLs, and email addresses depend on the search results available during your run.

> 📊 **Default dataset table**
>
> - Keyword
> - Title
> - Description
> - URL
> - Email

Results are pushed incrementally during execution, allowing collected records to appear in the dataset as the Actor processes the search.

***

### 💰 Freelancer Email Scraper – Pricing and Result Limits

The provided Actor configuration does not define a fixed monetary price for Freelancer Email Scraper.

The code does, however, apply a result restriction for free-tier execution.

For free-tier users, when `maxEmails` is greater than 100 or is not specified, the Actor applies a maximum of 100 for each keyword + domain collection target.

Paid execution does not apply this Actor-level free-tier restriction.

> 💰 **Example**
>
> With 3 keywords, 2 email domains, and `maxEmails = 20`, the Actor processes 6 separate combinations. Each combination can target up to 20 matching addresses, subject to available search results and duplicate removal.

A target is not a guarantee. If fewer matching public email addresses are available, the Actor may return fewer records.

***

### 💡 Freelancer Email Scraper – Tips and Best Practices

#### 🔹 Use specific professional keywords

Broad terms can produce mixed search results. Consider using precise service or job terms.

Instead of:

```text id="70631"
Developer
```

try:

```text id="14825"
Web Developer
Python Developer
WordPress Developer
Shopify Developer
```

#### 🔹 Use multiple related terms

Different professionals may use different titles for similar services.

For design research, for example:

- `Graphic Designer`
- `Logo Designer`
- `Brand Designer`
- `UI Designer`

#### 🔹 Add relevant email domains

If one email provider produces limited results, add other relevant domains such as `@yahoo.com` or `@outlook.com`.

#### 🔹 Broaden the location when necessary

A narrow city or country filter can reduce the number of available results. Removing the location can help when broader coverage is required.

#### 🔹 Use exclusions carefully

Exclusion terms are powerful filters, but overly broad terms may remove potentially useful results. Use them only for content you genuinely want to skip.

#### 🔹 Give wide runs enough time

A run involving many keywords and email domains can take longer than a small search. The configured default timeout is 3600 seconds.

> ⚠️ **Important note**
>
> Increasing `maxEmails` does not guarantee additional contacts. Results are limited by publicly indexed information, search coverage, selected domains, keyword relevance, and duplicate email addresses.

***

### ❓ Frequently Asked Questions

#### ❓ What is Freelancer Email Scraper?

Freelancer Email Scraper is an Apify Actor that searches for Freelancer-related results using specified keywords, optional locations, and selected email-domain suffixes.

It extracts matching email addresses from available search-result descriptions and stores structured contact information in an Apify Dataset.

#### ❓ How does Freelancer Email Scraper find emails?

The Actor searches for Freelancer-related results based on your keyword and selected email domain.

It then checks the available result description for matching email addresses and stores the email together with the keyword, title, description, and URL.

#### ❓ Does Freelancer Email Scraper directly crawl every Freelancer profile?

No. The Actor relies on indexed search results and available search-result descriptions.

Therefore, an email must be present in the searchable information and match one of the email domains configured for the run.

#### ❓ Can I use multiple Freelancer keywords?

Yes. The `keywords` field accepts multiple search terms.

Using related terms such as `Web Developer`, `WordPress Developer`, and `Shopify Developer` can help cover different professional search variations.

#### ❓ Is `maxEmails` a total limit for the entire run?

No. The Actor applies the target independently to each keyword + domain combination.

For example, 3 keywords × 2 domains × 20 emails creates six combinations with a target of up to 20 addresses each.

#### ❓ Can I search Freelancer by city or country?

Yes. Add a country, state, city, or other geographic term to `location`.

The location narrows the search but does not guarantee that every returned result represents a person physically located in that exact area.

#### ❓ What happens when fewer emails are available?

The Actor cannot create additional contacts when matching information is unavailable.

If results are sparse, try adding related keywords, adding more email domains, broadening the location, or removing the location filter.

#### ❓ Does Freelancer Email Scraper remove duplicate emails?

Yes. Previously collected email addresses are tracked so that the same email is not repeatedly stored when it appears through different searches.

#### ❓ How does the `excludeWords` filter work?

The Actor checks the search-result description for each configured exclusion term.

Single words are matched case-insensitively as whole words, while phrases are matched case-insensitively within the description. Matching snippets are skipped.

#### ❓ Can I use custom email domains?

Yes. The `customDomains` field accepts multiple email suffixes.

You can use common providers such as `@gmail.com`, `@yahoo.com`, and `@outlook.com`, as well as other relevant domain suffixes.

#### ❓ Can Freelancer Email Scraper resume after an interruption?

The Actor saves its progress and collected email addresses during execution.

This allows an interrupted run to retain its search progress and continue from saved state rather than starting the entire workflow from the beginning.

#### ❓ What is the free-tier limit?

For free-tier execution, the Actor applies a maximum of 100 emails to a keyword + domain target when the requested `maxEmails` is above 100 or not specified.

Paid execution does not apply this Actor-level free-tier restriction.

#### ❓ Does setting `maxEmails` to 10,000 guarantee 10,000 emails?

No. `maxEmails` is a collection target, not a guarantee.

The actual number of contacts depends on available indexed results, keyword relevance, selected email domains, location filters, and duplicate removal.

#### ❓ What data does Freelancer Email Scraper return?

Each pushed record contains:

- `network`
- `keyword`
- `title`
- `description`
- `url`
- `email`

The default dataset table displays the keyword, title, description, URL, and email fields.

#### ❓ What is the best way to get targeted Freelancer email leads?

Use several specific keywords describing the professional category or service you need, combine them with relevant email domains, and add a location only when geographic targeting matters.

If the results are too limited, broaden the keyword set or remove restrictive filters.

***

### 🤝 Support

For the most useful results, start with specific Freelancer search terms and then expand the keyword list with related professional titles.

If a search produces fewer results than expected, review the location filter, email-domain selection, exclusion terms, and `maxEmails` target.

Use the collected information responsibly and follow applicable privacy, data-protection, anti-spam, and platform rules when using contact data.

> 📩 **Support and custom requests**
>
> contact me by email : <alphascraper69@gmail.com>

# Actor input Schema

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

A list of keywords or queries to search for.

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

Optional country, state or city used to narrow the search. Leave it empty to search without a geographic filter.

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

List of custom email domains

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

How many addresses each search keyword + domain suffix combination may collect before the finder moves on to the next one. This is a per-combination target, not a run-wide total: with 3 keyword and 2 Domains and a limit of 20, the run works through all 6 combinations and aims for up to 20 addresses in each, so up to 120 overall. Lower values finish sooner and cost less; higher values dig deeper but never guarantee a fuller result, since the run can only find what is publicly listed.

## `excludeWords` (type: `array`):

Words or phrases you do not want to see.

## Actor input object example

```json
{
  "keywords": [
    "Freelancer",
    "Developer"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com"
  ],
  "maxEmails": 5,
  "excludeWords": []
}
```

# 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": [
        "Freelancer",
        "Developer"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("email_scraper/freelancer-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": [
        "Freelancer",
        "Developer",
    ],
    "location": "",
    "customDomains": ["@gmail.com"],
    "excludeWords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("email_scraper/freelancer-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": [
    "Freelancer",
    "Developer"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com"
  ],
  "excludeWords": []
}' |
apify call email_scraper/freelancer-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,email_scraper/freelancer-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/GNU3c6mTR7OGlDHN6/builds/rHVlD1Sorg596tn4h/openapi.json
