# Twitter Phone Number Scraper - Carrier Data, Skips Past Runs (`scrapido/twitter-profile-phone-number-scraper-by-keyword`) Actor

📱 Twitter Phone Number Scraper searches profiles by keyword and collects validated numbers with carrier and line-type detail. 🔁 Remembers past runs, so repeat Twitter scrapes return only new contacts. 📢 Built for ongoing outreach.

- **URL**: https://apify.com/scrapido/twitter-profile-phone-number-scraper-by-keyword.md
- **Developed by:** [Scrapido](https://apify.com/scrapido) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

### Twitter Phone Number Scraper

**Twitter Phone Number Scraper** helps you automate phone number discovery on Twitter/X profiles for lead generation. It’s a focused **Twitter phone number extraction** tool that uses **Twitter contact scraping** with keyword and location targeting—then extracts and collects results into a clean dataset so you can scale outreach without manual work.

***

### What Does Twitter Phone Number Scraper Do? 🤖

**Twitter Phone Number Scraper** scrapes data from publicly available sources to discover and extract business phone numbers associated with relevant Twitter/X profiles. You provide a list of `keywords` plus a target `country` (dial code) and an optional `location` filter. During the run, the actor collects unique phone numbers up to your `maxPhoneNumbers` limit, formats them consistently, and exports them to your Apify dataset. This makes it easy to extract emails from Twitter/X, automate Twitter/X contact data collection, and build phone-based lead lists faster than manual research.

***

### What Can Twitter Phone Number Scraper Extract? 📊

The actor collects structured lead records containing the keyword used for discovery, profile identity and context, plus the extracted phone number and its dialing information (country and dial code).

| Data Type | Field Name | Description |
|---|---|---|
| Discovery | `keyword` | The search term from your input that helped surface this profile |
| Identity | `title` | Profile name / business handle associated with the phone number |
| Context | `description` | Profile description/bio text used as context for the extracted contact info |
| Navigation | `url` | Direct profile URL (link to view the Twitter/X profile) |
| Contact | `phone_number` | The extracted phone number in formatted form |
| Context | `country` | Target country name used for phone number collection |
| Context | `dial_code` | Dial code corresponding to the selected target country |

#### Key Features of Twitter Phone Number Scraper ⚡

- ✅ **Keyword-Driven Phone Discovery:** Uses your `keywords` to find relevant Twitter/X profiles for Twitter user data scraper-style lead harvesting
- 🌍 **Location Targeting:** Adds a `location` filter (leave it empty for global search) to refine phone number discovery on Twitter
- 🎯 **Country Dial Code Targeting:** Select a target `country` so results are aligned with your phone number discovery on Twitter workflows
- 📞 **Result Capping for Control:** Stop after collecting up to `maxPhoneNumbers` phone numbers per run
- 🧾 **Deduplication for Unique Leads:** Avoids returning the same phone number multiple times within a run
- 💾 **Structured Dataset Output:** Produces a clean, labeled dataset record per discovered phone number—easy for CRM import or analysis

***

### How to Use Twitter Phone Number Scraper 🚀

1. **Find the Actor** — Search **Twitter Phone Number Scraper** on [Apify Store](https://apify.com/store)
2. **Open Input Tab** — In Apify Console, open the **INPUT** section
3. **Add Keywords** — Enter your lead categories like “Crypto”, “Marketing”, or “Journalist”
4. **Choose Target Country** — Pick the `country` whose dial code you want to collect
5. **(Optional) Add Location** — Set `location` to narrow results (otherwise leave it empty)
6. **Set Result Limit** — Adjust `maxPhoneNumbers` to control run scope
7. **Run + Export** — Start the actor and export from the **Dataset** tab

*No coding required.*

***

### Twitter Phone Number Scraper Output Format 📦

The actor saves results to your Apify dataset in structured JSON format, ready for export or API integration.

#### ⬇️ Input Example

```json
{
  "keywords": ["Crypto", "Marketing", "Journalist"],
  "location": "New York",
  "country": "United States (+1)",
  "maxPhoneNumbers": 20
}
```

#### ⬆️ Output Example

```json
[
  {
    "keyword": "Marketing",
    "title": "BluePeak Consulting",
    "description": "We help teams grow with performance marketing. Partnerships and media inquiries welcome.",
    "url": "https://twitter.com/bluepeakconsulting",
    "phone_number": "+1 415-555-0198",
    "country": "United States",
    "dial_code": "+1"
  }
]
```

> Tip: The dataset fields are designed for social media data mining and OSINT Twitter phone lookup workflows.

***

### 🎯 Use Cases of Twitter Phone Number Scraper

**Twitter lead generation scraping** becomes much faster when you can systematically harvest contact info harvesting data by keyword, country, and profile context.

You can use it for:

- **B2B Lead Generation:** Build outreach lists from Twitter/X profiles relevant to your niche
- **Phone Number Discovery on Twitter:** Find phone contacts tied to profiles that match your keywords
- **Account Contact Info Harvesting:** Enrich lead records with phone number discovery on Twitter at scale
- **Market Research:** Compare how different regions represent business contact information on Twitter/X
- **CRM Enrichment:** Export results and merge into your CRM or spreadsheet for follow-up workflows

***

### How Much Will Twitter Phone Number Scraper Cost You? 💰

Pricing on Apify is typically tied to usage/results: you’re expected to cap volume with `maxPhoneNumbers` so you can estimate cost per run more accurately. The actor also applies a free-tier cap of **100 phone numbers maximum** when you are not on a paid plan. For best budget control, set `maxPhoneNumbers` to the maximum number of phone contacts you actually want per run.

***

### Is It Legal to Scrape Twitter? ⚖️

The actor extracts phone numbers from publicly available sources found on the public web. It does not access private accounts or restricted content. That said, legality and compliance depend on your location and intended use. Follow Twitter/X policies and applicable privacy and anti-spam regulations. If you have concerns about data handling, contact: <scrapidocontact@gmail.com>.

***

### Twitter Phone Number Scraper Input Parameters 📋

Below is the exact input supported by this actor. Provide input in Apify Console or via `input.json`.

```json
{
  "keywords": ["Crypto", "Marketing", "Journalist"],
  "location": "",
  "country": "United States (+1)",
  "maxPhoneNumbers": 20
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `keywords` | Array | ✅ Yes | — | Enter keywords to search for (example: “Crypto”, “Marketing”, “Journalist”) |
| `location` | String | No | `""` | Filter by location (e.g., “New York”, “London”). Leave empty for global search |
| `country` | String | ✅ Yes | `United States (+1)` | Select the country to target for phone numbers (sets the dial code context) |
| `maxPhoneNumbers` | Integer | ✅ Yes | `20` | Stop scraping after this many phone numbers are collected (range: 1–10000) |

***

### During the Actor Run ⏱️

You’ll see live progress in the Apify Console logs as it works through your keyword set. Results are pushed incrementally to your dataset while the run is active, so you can monitor output in near real time. If you set a low `maxPhoneNumbers`, the run will stop once the limit is reached.

***

### Final Note ✉️

Get started with **Twitter Phone Number Scraper** to discover and export phone-based leads from Twitter/X profiles using keyword and country targeting—fast. For questions or help, reach out at <scrapidocontact@gmail.com>.

***

### FAQ — Twitter Phone Number Scraper ❓

#### How does the Twitter Phone Number Scraper work?

The actor takes your `keywords`, optional `location`, and selected target `country`, then scrapes publicly available profile data and extracts phone numbers. It filters and deduplicates results so your dataset contains clean, structured phone contact records.

#### What kinds of phone numbers can I get from Twitter/X?

The output is limited to phone numbers that are found in publicly available profile context and then formatted into the `phone_number` field. Results depend on which profiles match your keywords and include publicly listed phone numbers.

#### Why do I get fewer results than expected?

Result volume varies based on how many relevant profiles match your `keywords`, how restrictive your `location` filter is, and how many matched profiles actually expose public phone numbers. Increasing keyword variety or broadening location targeting often improves yield.

#### How much does it cost to use the Twitter Phone Number Scraper?

Apify pricing is usage/result-based. You can control volume with `maxPhoneNumbers` to cap how many phone contacts you extract per run. If you’re using a free plan, the actor applies a maximum of **100 phone numbers**.

#### Does the Twitter Phone Number Scraper respect privacy and platform rules?

It only works with publicly available data and does not access private or restricted content. You’re responsible for using the extracted data in compliance with Twitter/X policies and applicable laws (including privacy and anti-spam regulations).

#### Can I change the country dial code for my leads?

Yes. Set the `country` input to your target (for example, “United States (+1)”). The dataset includes both `country` and `dial_code` so it’s clear which dialing context the results belong to.

#### What happens if the run stops early?

Because results are saved incrementally, you can still export the portion already collected from the dataset. If you need more, re-run with adjusted `keywords`, `location`, or a higher `maxPhoneNumbers` (within your plan limits).

#### How do I request data removal or support?

For support or any data removal request, contact <scrapidocontact@gmail.com>.

***

### 🆘 Support & Feedback

Need help getting better Twitter contact scraping results or want a custom improvement?

For support or feature requests, contact us at <scrapidocontact@gmail.com>.

### Multiple Phone Type

**Phone Types** replaces the old single Number Type choice: select as many kinds
of line as you want and the run collects all of them.

| Type | Kept when the number is |
| --- | --- |
| Mobile | A confirmed mobile |
| Landline | A confirmed fixed line |
| Toll-Free | A freephone number |
| VoIP | An internet-telephony number |
| Premium-Rate | A premium-rate number |
| Shared-Cost | A shared-cost number |

Leave it empty for every type. Each number is checked against its *real* line
type before being kept, so the filter is enforced rather than merely requested.
Numbers on ranges where mobile and landline genuinely cannot be told apart (the
US, Canada and Mexico) are kept rather than silently dropped - discarding them
would quietly lose good leads.

### Outreach links

| Field | Meaning |
| --- | --- |
| `telLink` | A clickable `tel:` link, so a row can be dialled straight from a spreadsheet or CRM |
| `whatsappLink` | A `wa.me` chat link, or empty for a confirmed landline or a number that failed validation |
| `whatsappCapable` | Whether the number is on a line WhatsApp can run on |

`whatsappCapable` is a plain yes/no you can filter on. It never claims the
person actually uses WhatsApp - only that the number is of a kind that could.
Switch the links off with **Include WhatsApp links**; the capability flag is
still reported.

# Actor input Schema

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

Enter keywords to search for (e.g., 'Crypto', 'Marketing', 'Journalist').

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

Filter by location (e.g., 'New York', 'London'). Leave empty for global search.

## `country` (type: `string`):

Select the country to target for phone numbers.

## `maxPhoneNumbers` (type: `integer`):

Stop scraping after this many phone numbers are collected.

## `numberType` (type: `string`):

Restrict results to a specific line type, classified offline via libphonenumber. Any keeps every valid match.

## `phoneTypes` (type: `array`):

Which kinds of line to collect. Pick as many as you like - each number is checked against its real line type before it is kept. Leave empty for every type. Numbers on ranges where mobile and landline cannot be told apart (the US, Canada and Mexico) are always kept rather than silently dropped.

## `includeWhatsappLinks` (type: `boolean`):

Add a ready-made wa.me chat link for numbers on a line WhatsApp can run on. The link means the number is in a form WhatsApp accepts - not proof that an account exists.

## Actor input object example

```json
{
  "keywords": [
    "founder",
    "entrepreneur"
  ],
  "country": "United States (+1)",
  "maxPhoneNumbers": 20,
  "numberType": "Any",
  "phoneTypes": [
    "Mobile"
  ],
  "includeWhatsappLinks": true
}
```

# 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": [
        "founder",
        "entrepreneur"
    ],
    "phoneTypes": [
        "Mobile"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapido/twitter-profile-phone-number-scraper-by-keyword").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": [
        "founder",
        "entrepreneur",
    ],
    "phoneTypes": ["Mobile"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapido/twitter-profile-phone-number-scraper-by-keyword").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": [
    "founder",
    "entrepreneur"
  ],
  "phoneTypes": [
    "Mobile"
  ]
}' |
apify call scrapido/twitter-profile-phone-number-scraper-by-keyword --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapido/twitter-profile-phone-number-scraper-by-keyword"
        }
    }
}

```

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/gUNAQgUDWGAutatCe/builds/RukpHnw2YlMtNTPrY/openapi.json
