# Infobel Email and Phone Number Scraper (`neuro-scraper/infobel-email-and-phone-number-scraper`) Actor

Infobel Email and Phone Number Scraper SD - Infobel Email and Phone Number Scraper is a powerful tool that extracts public contact emails and phone numbers, account names and profile URLs from Infobel results by keyword, location, email domain and country - Infobel email and phone number extracto...

- **URL**: https://apify.com/neuro-scraper/infobel-email-and-phone-number-scraper.md
- **Developed by:** [Neuro Scraper](https://apify.com/neuro-scraper) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Infobel Email and Phone Number Scraper

**Infobel Email and Phone Number Scraper** turns a keyword into a contact sheet of emails and phone numbers published on Infobel. Give it search terms and it returns the accounts that publish a way to reach them, with the account name, handle and profile URL beside each contact.

It reads only what Infobel and Google already show a signed-out visitor. No login, no cookies, no private or partner API, no browser and no JavaScript rendering.

**Read this before your first run.** Infobel indexes category and search pages more than company profiles, so most rows carry an email without a resolvable handle.

***

### What the Infobel Email and Phone Number Scraper does

The Infobel Email and Phone Number Scraper searches Google with a contact dork rather than a plain keyword: `site:infobel.com company "@gmail.com" and whatsapp "+44"`. That asks for the pages which already publish a email address or phone number, instead of every page matching a word.

Each result block yields the account and the email address or phone number together, in one request. Google no longer prints the target URL on most layouts, so the handle comes from what it does print: the "Infobel - handle" site label, the breadcrumb, or a `Name (@handle)` title.

Every row is written to the dataset the moment it is found and logged as it is written, so a run is readable while it is still going.

Phone numbers are validated by libphonenumber against the real numbering plan of the country you searched, so order numbers, dates and follower counts cannot reach the dataset. Each number is returned in E.164 form and in the national format its country uses.

Addresses are normalised before matching, so `name [at] domain [dot] com`, spaced and full-width forms are all recovered. Placeholders such as `email@`, `yourname@` and `noreply@` are dropped, and so are prose words that only look like an address.

***

### Input

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array | `company, supplier` | Search terms - a niche, job title or industry. |
| `location` | string | `""` | Added to every query, e.g. `New York`. |
| `customDomains` | array | `@gmail.com`, `@yahoo.com` | Address domains the search asks for, and a filter on what is kept. |
| `countries` | array | US, UK, India | Which countries' numbers to look for. Name, ISO code or dial code. Each one multiplies the searches. |
| `maxEmails` | integer 1-10000 | `20` | Stop once this many unique contacts are found. |
| `expandQueries` | boolean | `true` | Search each keyword in several phrasings. |
| `queryModifiers` | array | per platform | Extra words combined with each keyword. |
| `maxPagesPerQuery` | integer 1-50 | `30` | Google result pages per query. |
| `maxConcurrency` | integer 1-20 | `5` | Queries run in parallel. |
| `countryCode` | string | `""` | Two-letter country for the search proxy. |

### Output

Every row the Infobel Email and Phone Number Scraper writes:

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that found this row |
| `query` | The exact Google query used |
| `email` | The public email address found |
| `emailDomain` | Domain part of that address |
| `possiblyTruncated` | True when Google cut the snippet mid-address |
| `phone` | The number in E.164 form, e.g. `+447590574946` |
| `phoneNational` | The same number as its country writes it |
| `phoneCountry` | ISO country the number belongs to |
| `accountName` | Account label as the platform shows it |
| `fullName` | Display name where published |
| `username` | Handle |
| `profileUrl` | Canonical profile URL |
| `url` | The page the result pointed at |
| `description` | The result snippet, cleaned |
| `foundAt` | ISO 8601 UTC timestamp |

```json
{
  "network": "Infobel",
  "keyword": "company",
  "accountName": "examplestudio",
  "fullName": "Example Studio",
  "username": "examplestudio",
  "profileUrl": "https://www.infobel.com/examplestudio",
  "email": "hello@examplestudio.com",
  "phone": "+447590574946",
  "phoneNational": "07590 574946",
  "phoneCountry": "GB"
}
```

### How to use the Infobel Email and Phone Number Scraper

1. Put your search terms in **Keywords** - the niche, job title or industry you sell to.
2. Add a **Location** if the list should be local.
3. Pick the **Countries** whose numbers you want. Every number is validated against that country's numbering plan.
4. Set **Max results** to cap the run, then start it.
5. Export the dataset as CSV, JSON or Excel, or pull it through the Apify API.

### Use cases

**Lead generation.** Build a list of Infobel accounts in one niche that publish a email address or phone number, with the handle and profile URL for context before you write.

**Recruiting.** Find people describing themselves with a role keyword and reach them on the contact they chose to publish.

**Agency prospecting.** Search a niche and a city, and get a prospect sheet with the account and the contact side by side.

**CRM enrichment.** Feed `profileUrl` and `email` and `phone` straight into your CRM; the `keyword` and `query` columns record where each row came from.

### Limitations, stated plainly

- Only contacts already published in public Infobel pages indexed by Google. Nothing hidden from a signed-out visitor is reachable, and none is guessed from a name.
- Infobel indexes category and search pages more than company profiles, so most rows carry an email without a resolvable handle.
- Coverage depends on what Google has indexed, so a narrow niche returns fewer rows than a broad one. Raising **Max pages per query** and adding keywords helps.
- The free Apify plan caps a run at 20 results.
- A number written without its country code can only be validated against the country you searched, so search the countries you actually sell to.

### Pricing

Pay per result: you are charged for each row written to the dataset, and nothing for a run that finds nothing. Platform and proxy costs are included in that price.

### Related Actors

| Actor | Link |
|---|---|
| Yellow Pages Email Scraper | https://apify.com/neuro-data/yellow-pages-email-scraper |
| Foursquare Email Scraper | https://apify.com/neuro-data/foursquare-email-scraper |
| Better Business Bureau Email Scraper | https://apify.com/neuro-data/better-business-bureau-email-scraper |
| Manta Email Scraper | https://apify.com/neuro-data/manta-email-scraper |
| Hotfrog Email Scraper | https://apify.com/neuro-data/hotfrog-email-scraper |
| MapQuest Email Scraper | https://apify.com/neuro-data/mapquest-email-scraper |
| Local.com Email Scraper | https://apify.com/neuro-data/local-com-email-scraper |
| Brownbook Email Scraper | https://apify.com/neuro-data/brownbook-email-scraper |
| Bizapedia Email Scraper | https://apify.com/neuro-data/bizapedia-email-scraper |
| Kompass Email Scraper | https://apify.com/neuro-data/kompass-email-scraper |
| Europages Email Scraper | https://apify.com/neuro-data/europages-email-scraper |
| Thomasnet Email Scraper | https://apify.com/neuro-data/thomasnet-email-scraper |
| TradeIndia Email Scraper | https://apify.com/neuro-data/tradeindia-email-scraper |
| ExportHub Email Scraper | https://apify.com/neuro-data/exporthub-email-scraper |
| EC21 Email Scraper | https://apify.com/neuro-data/ec21-email-scraper |
| N49 Email Scraper | https://apify.com/neuro-data/n49-email-scraper |
| Cylex Email Scraper | https://apify.com/neuro-data/cylex-email-scraper |
| Yalwa Email Scraper | https://apify.com/neuro-data/yalwa-email-scraper |
| Tupalo Email Scraper | https://apify.com/neuro-data/tupalo-email-scraper |
| Infobel Email Scraper | https://apify.com/neuro-data/infobel-email-scraper |
| Scoot Email Scraper | https://apify.com/neuro-data/scoot-email-scraper |
| Touch Local Email Scraper | https://apify.com/neuro-data/touch-local-email-scraper |
| Fyple Email Scraper | https://apify.com/neuro-data/fyple-email-scraper |
| Cybo Email Scraper | https://apify.com/neuro-data/cybo-email-scraper |
| Lacartes Email Scraper | https://apify.com/neuro-data/lacartes-email-scraper |
| Callupcontact Email Scraper | https://apify.com/neuro-data/callupcontact-email-scraper |
| FindUsLocal Email Scraper | https://apify.com/neuro-data/finduslocal-email-scraper |
| Crunchbase Email Scraper | https://apify.com/neuro-data/crunchbase-email-scraper |
| Clutch Email Scraper | https://apify.com/neuro-data/clutch-email-scraper |

### FAQ

**Does the Infobel Email and Phone Number Scraper need a login or cookies?**\
No. It reads public search results and public Infobel pages only.

**Where do the emails and phone numbers come from?**\
From the public page the search result points at - the same text any visitor can read.

**Are the numbers real?**\
Every number is checked against its country's numbering plan before it is written, so invalid strings are dropped rather than shipped.

**Can I run it on a schedule?**\
Yes, with Apify Schedules. Progress is saved, so a migrated run continues instead of starting over.

**Something is missing or wrong.**\
Email <neurodata.apify@gmail.com>.

### Support

Questions, bugs or a custom build: <neurodata.apify@gmail.com>.

# Actor input Schema

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

Search terms describing the Infobel 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).

## `countries` (type: `array`):

Which countries' phone numbers to look for. The search asks Google for that country's dial code, and every number found is validated against that country's real numbering plan. Country name, ISO code or dial code all work. Each extra country multiplies the number of searches.

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

Stop once this many unique contacts have been collected.

## `maxEmailResults` (type: `integer`):

How many of the results should be email addresses. Leave at 0 to split "Max results" evenly between emails and phone numbers.

## `maxPhoneResults` (type: `integer`):

How many of the results should be phone numbers. Leave at 0 to split "Max results" evenly. If one type runs out first, the other takes the remaining budget.

## `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 Infobel.

## `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": [
    "company",
    "supplier"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com",
    "@hotmail.com",
    "@icloud.com"
  ],
  "countries": [
    "United States",
    "United Kingdom",
    "India"
  ],
  "maxEmails": 20,
  "maxEmailResults": 0,
  "maxPhoneResults": 0,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "enquiries",
    "owner",
    "get a quote"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Infobel Email and Phone Number 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": [
        "company",
        "supplier"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
        "@outlook.com",
        "@hotmail.com",
        "@icloud.com"
    ],
    "countries": [
        "United States",
        "United Kingdom",
        "India"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "enquiries",
        "owner",
        "get a quote"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuro-scraper/infobel-email-and-phone-number-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": [
        "company",
        "supplier",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
        "@outlook.com",
        "@hotmail.com",
        "@icloud.com",
    ],
    "countries": [
        "United States",
        "United Kingdom",
        "India",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "enquiries",
        "owner",
        "get a quote",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("neuro-scraper/infobel-email-and-phone-number-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": [
    "company",
    "supplier"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com",
    "@hotmail.com",
    "@icloud.com"
  ],
  "countries": [
    "United States",
    "United Kingdom",
    "India"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "enquiries",
    "owner",
    "get a quote"
  ]
}' |
apify call neuro-scraper/infobel-email-and-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neuro-scraper/infobel-email-and-phone-number-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/q0Yn0U0aYQuARs8jf/builds/DiWJ4111HvRkEfS0h/openapi.json
