# Twitter Phone Number Scraper - Country & Carrier (`scrapido/twitter-phone-number-scraper-prime`) Actor

📱 Twitter Phone Number Scraper finds numbers by search term and region. ✅ Validated Twitter numbers with country code, line type and carrier, filtered to the market you care about. 🌍 Great for multi-country campaigns.

- **URL**: https://apify.com/scrapido/twitter-phone-number-scraper-prime.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** extracts and collects phone numbers from Twitter (X) profiles and tweets to speed up social media data scraping for lead generation and contact finding. It’s an email and phone extraction companion for anyone doing twitter contact info scraping at scale using a twitter phone number scraper workflow.

***

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

Twitter Phone Number Scraper lets you input **search terms**, choose a **Source Type** (All, Status, or Profile), and set a phone number limit. During a run, the actor extracts phone numbers from publicly available sources related to your keywords, applies your country targeting, and filters results consistently. It then exports structured records into a dataset so you can export, analyze, and filter easily later. If you’re trying to extract twitter phone numbers without manual copying, this automates twitter data harvesting and makes it far faster than manual research. It also supports a social media data scraping workflow to automate twitter contact info scraping and exportable phone number OSINT results.

***

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

The actor captures phone-number contact details tied to your provided keywords, along with context and navigation data for verification and outreach workflows. In other words, it focuses on collecting phone numbers and the details around where they were found so your team can review quickly.

| Data Type | Field Name | Description |
|---|---|---|
| Contact | `phone_number` | Extracted phone number in the targeted country’s format logic (deduplicated within the run). |
| Identity | `title` | Profile name or page title tied to the discovered contact. |
| Context | `description` | Text snippet used for extraction (bio/summary/visible context from the source). |
| Discovery | `keyword` | The search term from your input that helped surface the contact. |
| Navigation | `url` | Link to the referenced Twitter (X) page for review. |

***

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

- ✅ **Keyword-Driven Search:** Targets Twitter (X) content using your exact search terms for relevant twitter user data mining.
- 🌍 **Country Targeting:** Uses your selected `country` to focus results on the dial code area you care about for phone number OSINT.
- 📌 **Source Type Control:** Choose `sourceRegion` as **All**, **Status**, or **Profile** to steer what gets targeted.
- 📞 **Phone Number Limits:** Stops after `maxPhoneNumbers` unique phone numbers are found, helping control run time and output size.
- 🔄 **Proxy-Ready & Reliable:** Designed for reliable data collection in real-world scraping scenarios with built-in resilience.
- 📊 **Structured Dataset Output:** Produces clean, labeled dataset rows you can export for CRM enrichment and analysis.
- 💾 **Incremental Saving:** Results are pushed to the dataset as they’re found during the run.
- ⚙️ **Resumable Progress:** Maintains progress state so long keyword sets can be resumed instead of starting over.

***

### 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** — Go to the **Input** tab in the Apify Console
3. **Add Search Terms** — Enter one or more items for `searchTerms` (e.g., fitness, gym, workout)
4. **Choose a Source Type** — Select `sourceRegion` as **All**, **Status**, or **Profile**
5. **Set Country & Limits** — Pick your `country` and set `maxPhoneNumbers`
6. **Start the Run** — Click **Start** and monitor logs for progress
7. **Export Results** — Open the **Dataset** tab and export the scraped data

***

### Twitter Phone Number Scraper Output Format 📦

The actor saves results to your Apify dataset as structured JSON records with consistent field order and labels.

#### ⬇️ Input Example

```json
{
  "country": "United States (+1)",
  "maxPhoneNumbers": 20,
  "searchTerms": [
    "fitness",
    "gym",
    "workout"
  ],
  "sourceRegion": "All"
}
```

#### ⬆️ Output Example

```json
[
  {
    "keyword": "fitness",
    "title": "StudioPulse Team",
    "description": "Contact us for scheduling and partnerships. WhatsApp +1 415 555 0199",
    "phone_number": "+14155550199",
    "country": "United States",
    "dial_code": "+1",
    "url": "https://x.com/studiopulse",
    "source_type": "All"
  },
  {
    "keyword": "gym",
    "title": "CityFit Coach",
    "description": "DM for bookings or call our hotline: +1 (212) 555-0144",
    "phone_number": "+12125550144",
    "country": "United States",
    "dial_code": "+1",
    "url": "https://x.com/cityfitcoach",
    "source_type": "Profile"
  }
]
```

#### Output Fields

| Field | Label | Format | Description |
|---|---|---|---|
| `keyword` | Keyword | text | The search term that surfaced this contact. |
| `title` | Title | text | Profile name or page title where the contact was found. |
| `description` | Description | text | Extracted context text used to identify the phone number. |
| `phone_number` | Phone Number | text | The unique phone number extracted for the dataset row. |
| `country` | Country | text | Target country name used for the run (from the selected input). |
| `dial_code` | Dial Code | text | Dial code associated with the selected target country. |
| `url` | URL | link | Direct link to the discovered Twitter (X) page. |
| `source_type` | Source Type | text | The selected source targeting mode (All, Status, or Profile). |

***

### 🎯 Use Cases of Twitter Phone Number Scraper

**B2B Lead Generation:** Find potential leads by extracting phone numbers tied to relevant twitter scraping tools queries and niche keywords—ideal for outreach sequences and prospecting workflows.

**Social Media Data Scraping for Research:** Collect publicly available phone contact details alongside context (`description`) and the source link (`url`) to support phone number OSINT and ongoing social listening.

**CRM Enrichment:** Add extracted phone numbers (and supporting metadata like `title` and `keyword`) to your CRM for better segmentation and prioritization.

**Event and Partnerships Outreach:** Locate organizations and creators by topic (via `searchTerms`) and contact them using the collected `phone_number` with quick access to the source URL for validation.

**Reverse Lookup Phone Numbers (Workflow Support):** Use extracted results as the starting point for further phone-related research steps—your team can pivot from the dataset into validation and qualification.

***

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

Twitter Phone Number Scraper uses **pay-per-event pricing**: you’re charged per phone number result produced (not per run). Apify may include a free tier with monthly compute credits for new users. To control spending, set `maxPhoneNumbers` in your input—this caps how many unique results the actor will output for the run. You can also monitor live resource usage in the Apify Console.

***

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

Twitter Phone Number Scraper works with **publicly available data** from Twitter (X) sources—no private profiles, no password-protected content. In general, collecting information from public web sources is widely used for research and outreach, but legality depends on your jurisdiction and how you use the extracted data. You’re responsible for complying with Twitter (X) Terms of Service, GDPR/CCPA, and anti-spam regulations. If you have compliance questions or data concerns, contact <scrapidocontact@gmail.com>.

***

### Twitter Phone Number Scraper Input Parameters 📋

```json
{
  "country": "United States (+1)",
  "maxPhoneNumbers": 20,
  "searchTerms": [
    "fitness",
    "gym",
    "workout"
  ],
  "sourceRegion": "All"
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `country` | string | ✅ Yes | `United States (+1)` | Select the country to target for results so phone numbers align with the dial code you want. |
| `maxPhoneNumbers` | integer | ✅ Yes | `20` | Stop scraping after this many phone numbers are found (unique results for the run). |
| `searchTerms` | array | ✅ Yes | `["fitness","gym","workout"]` | Keywords used to find relevant Twitter (X) profiles and content (e.g., “Fitness Coaches”, “Crypto”, “Real Estate”). |
| `sourceRegion` | string | ✅ Yes | `All` | Choose the information type to target: **All**, **Status**, or **Profile**. |

***

### During the Actor Run ⏱️

You’ll see live logs while the actor processes each keyword, and results are pushed incrementally to the dataset as phone numbers are found. Check the Dataset tab mid-run to review progress early. Runtime varies based on your `searchTerms`, selected `sourceRegion`, and network conditions, but `maxPhoneNumbers` keeps output bounded so you can manage cost and turnaround time.

***

### Final Note ✉️

Start extracting twitter contact info for your next outreach or OSINT workflow in minutes—no manual copy-paste. Run Twitter Phone Number Scraper now on Apify, then export and analyze your results right from the dataset. Questions? Email <scrapidocontact@gmail.com>.

***

### FAQ — Twitter Phone Number Scraper ❓

#### How does the Twitter Phone Number Scraper find phone numbers?

It uses your `searchTerms` together with the selected `country` and `sourceRegion` to focus on relevant Twitter (X) profiles and content, then extracts publicly listed phone numbers from the discovered pages. It returns only extracted values as structured dataset rows.

#### What types of Twitter content can I scrape?

You can choose what to target using `sourceRegion`: **All** targets everything within the run, **Status** focuses on content entries, and **Profile** focuses on profile-related information for contact finding.

#### Why are results sometimes lower than expected?

Result volume depends on how many matching Twitter (X) profiles and posts are publicly accessible for your chosen keywords, country targeting, and source type. If many profiles don’t list phone numbers publicly, you may get fewer extracted results even with strong keywords.

#### How does maxPhoneNumbers affect my run?

`maxPhoneNumbers` is the hard stop condition for the run. Once the actor finds the requested number of phone numbers, it stops collecting more results and exits the scraping loop.

#### Is the output ready for analysis or CRM import?

Yes. Every dataset row is structured with labeled fields (`keyword`, `title`, `description`, `phone_number`, `country`, `dial_code`, `url`, `source_type`) and is exported as JSON records, which makes it easy to analyze, deduplicate further, or import into tools.

#### How do I choose better search terms for twitter user data mining?

Use specific topics (industries, services, or roles) and iterate based on yield. Since this is a twitter phone number scraper, the better your `searchTerms` align with accounts that publicly share phone numbers, the more likely you’ll see strong output.

#### What should I do if I have compliance concerns?

Use extracted data responsibly and ensure it complies with applicable privacy laws and anti-spam rules. If you have concerns or a data-removal request, contact <scrapidocontact@gmail.com>.

***

### 🆘 Support & Feedback

Need help using Twitter Phone Number Scraper or want a feature enhancement?

- 🐞 **Bug Reports:** Share details with the Apify community/support channels as needed
- ✨ **Custom Solutions & Feature Requests:** Contact our team
- 📧 **Email:** <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

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

Select the country to target for Google search results.

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

Stop scraping after this many phone numbers are found.

## `searchTerms` (type: `array`):

Enter keywords to find Twitter profiles (e.g., 'Fitness Coaches', 'Crypto', 'Real Estate').

## `sourceRegion` (type: `string`):

Select the information type to target.

## `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
{
  "country": "United States (+1)",
  "maxPhoneNumbers": 20,
  "searchTerms": [
    "fitness",
    "gym",
    "workout"
  ],
  "sourceRegion": "All",
  "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 = {
    "searchTerms": [
        "fitness",
        "gym",
        "workout"
    ],
    "phoneTypes": [
        "Mobile"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapido/twitter-phone-number-scraper-prime").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 = {
    "searchTerms": [
        "fitness",
        "gym",
        "workout",
    ],
    "phoneTypes": ["Mobile"],
}

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

```

## MCP server setup

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

```

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/28zX94zYrjLMor84F/builds/9b1etj8JCdwcsxvsh/openapi.json
