# Twitter Profile Phone Number Scraper By Keyword - No Repeats (`code-beat/twitter-profile-phone-number-scraper-by-keyword`) Actor

📞 Twitter Profile Phone Number Scraper finds numbers by keyword with country filtering and line-type detection. 🔁 Cross-run duplicate skipping means no repeats. ✅ Valid numbers only — built for SMS outreach & social prospecting.

- **URL**: https://apify.com/code-beat/twitter-profile-phone-number-scraper-by-keyword.md
- **Developed by:** [Code Beat](https://apify.com/code-beat) (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 $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

### Twitter Phone Number Scraper

**Twitter Phone Number Scraper** helps you discover publicly available phone numbers from Twitter/X profiles using keywords, location targeting, and country filters. It’s a practical Twitter contact scraper for lead generation, research, and outreach, giving marketers and analysts a faster way to collect structured contact information at scale 📞

***

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

Twitter Phone Number Scraper searches public Twitter/X profile data based on your keywords, then collects matching profiles and extracts phone numbers when they are publicly listed. You can narrow the search with a location and a target country, making it useful for Twitter phone number extraction, Twitter profile phone number lookup, and Twitter lead scraping. Instead of reviewing profiles one by one, you can automate Twitter contact collection and export results into a clean dataset.

***

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

This actor returns a focused set of profile and contact details from public sources. Each result includes the keyword that triggered the match, the profile’s name and description, a direct profile URL, the phone number found, and country dialing details. That makes it ideal for social media scraping, Twitter data mining, and contact information scraping workflows.

| Data Type | Field Name | Description |
|---|---|---|
| Discovery | `keyword` | The search term that matched the profile |
| Identity | `title` | The profile name |
| Context | `description` | The profile description or bio text |
| Navigation | `url` | Direct link to the profile |
| Contact | `phone_number` | Phone number found on the profile |
| Geography | `country` | Target country used for the search |
| Dialing Info | `dial_code` | Country dialing code associated with the selected country |

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

- ✅ **Keyword-Driven Discovery:** Use your own search terms to find relevant profiles for Twitter lead generation and Twitter account scraping.
- 🌍 **Location Targeting:** Add a location filter to focus on a specific city or region for more relevant leads.
- 🌐 **Country-Based Filtering:** Choose a target country to improve the relevance of phone number results.
- 📞 **Public Contact Collection:** Extracts phone numbers from publicly available sources without requiring private access.
- 📊 **Structured Dataset Output:** Every result is saved in a clean format that’s easy to analyze or import into a CRM.
- 💾 **Incremental Saving:** Results are saved as they are found, so you don’t lose progress during longer runs.
- 🔄 **Resumable Runs:** The actor keeps progress so it can continue from where it left off.
- 🛡️ **Built-In Proxy Support:** Designed for reliable scraping with built-in proxy support for public web data.

***

### How to Use Twitter Phone Number Scraper 🚀

1. **Open the Actor** — Find **Twitter Phone Number Scraper** in the Apify Store.
2. **Set Your Keywords** — Add one or more search terms such as industries, roles, or niches.
3. **Choose a Location** — Optionally narrow results by city or region.
4. **Select a Country** — Pick the target country for phone number collection.
5. **Set the Limit** — Enter the maximum number of phone numbers to collect.
6. **Run the Actor** — Start the scraping job and monitor progress in the logs.
7. **Export Results** — Download the dataset in a format that fits your workflow.

*No coding required.*

***

### Twitter Phone Number Scraper Output Format 📦

The actor saves results to an Apify dataset as structured JSON, making it easy to review, filter, and export your Twitter user data scraper results.

#### Input Example

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

#### Output Example

```json
[
  {
    "keyword": "Crypto",
    "title": "Sarah Johnson",
    "description": "Founder at North Star Media | Public contact info for business inquiries",
    "url": "https://twitter.com/sarahjohnson",
    "phone_number": "+1 212-555-0198",
    "country": "United States",
    "dial_code": "+1"
  }
]
```

| Field | Label | Format | Description |
|---|---|---|---|
| `keyword` | Keyword | text | The search term that produced the result |
| `title` | Profile Name | text | The name shown on the profile |
| `description` | Description | text | The profile description or bio text |
| `url` | Profile URL | link | Direct link to the public profile |
| `phone_number` | Phone Number | text | The phone number collected from public sources |
| `country` | Country | text | The selected target country for the run |
| `dial_code` | Dial Code | text | The dialing code associated with the selected country |

***

### Use Cases of Twitter Phone Number Scraper 🎯

**B2B Lead Generation:** Build targeted contact lists from Twitter profiles for outreach campaigns, sales prospecting, and audience building.

**Twitter Contact Finder:** Quickly find publicly listed phone numbers for brands, creators, and professionals without manual browsing.

**Market Research:** Use keyword and location filters to study communities, niches, and public contact patterns.

**Twitter Profile Scraper:** Collect profile-level context alongside contact details to enrich your research datasets.

**Social Media Scraping:** Pull structured public data for analytics, segmentation, and contact discovery workflows.

***

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

The actor is designed for controlled, scalable scraping with a result limit you set through `maxPhoneNumbers`. That means you can cap your run size and keep collection focused on your needs. Apify also provides a free tier with monthly credits for new users, so you can test the Twitter lead generation workflow before scaling up. For larger projects, simply increase the limit to match your target volume.

***

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

This actor works with publicly available data only, focusing on information that users have made visible on public profiles. It does not access private accounts or hidden content. As with any social media scraping workflow, you should make sure your use complies with applicable laws, platform policies, and your organization’s rules. Use the data responsibly for legitimate research, outreach, or lead generation. For questions or data-removal requests, contact <codebeatapi@gmail.com>.

***

### Twitter Phone Number Scraper Input Parameters 📋

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

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `keywords` | Array | Yes | — | One or more search terms used to find relevant public profiles |
| `location` | String | No | `""` | Optional location filter such as a city or region |
| `country` | String | Yes | `United States (+1)` | Country used to target phone number results |
| `maxPhoneNumbers` | Integer | Yes | `20` | Maximum number of phone numbers to collect in one run |

***

### During the Actor Run ⏱️

You’ll see live logs while the actor runs, including keyword progress and collection status. Results are saved to the dataset in real time, so you can inspect them before the run finishes. Runtime depends on how broad your keywords are and how many public matches exist. If results are low, try broader search terms or a different country to improve your Twitter contact scraper output.

***

### Final Note ✉️

Start using Twitter Phone Number Scraper to collect public contact details faster and with less manual effort. It’s a practical phone number extraction tool for marketers, analysts, and researchers who want scalable results from public Twitter/X profiles. Need help or have feedback? Reach out at <codebeatapi@gmail.com>.

***

### FAQ — Twitter Phone Number Scraper ❓

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

It uses your keywords and country selection to identify relevant public profiles, then collects phone numbers that are publicly available in the profile data or associated public text.

#### What kinds of profiles can I scrape with Twitter Phone Number Scraper?

You can scrape public Twitter/X profiles that contain visible contact information. Profiles without public phone numbers will not produce contact results.

#### Can I use Twitter Phone Number Scraper for Twitter lead generation?

Yes. It’s built for Twitter lead generation, public contact discovery, and structured Twitter user data scraping when you need contact details for outreach or research.

#### What if I need a Twitter profile scraper for a specific region?

Use the location field and target country setting together. That helps focus the search on profiles that are more likely to match your audience or market.

#### How many phone numbers can I collect?

You control the run size with `maxPhoneNumbers`, which stops the actor after the selected number of phone numbers has been collected.

#### Does the actor save results while it runs?

Yes. Results are pushed to the dataset incrementally, so you can review output during the run and avoid losing progress if it stops early.

#### Is Twitter Phone Number Scraper suitable for social media scraping projects?

Yes. It’s a good fit for social media scraping, contact information scraping, and research tasks that require structured public data from Twitter/X profiles.

#### How can I get support?

For support, feedback, or data-removal requests, contact <codebeatapi@gmail.com>.

### Country & Time Targeting

**Target Country** did two jobs already: it supplies the dial code the search
looks for, and it is the region numbers are parsed against. It now does a third

- Google is asked to answer as if searching from that country (`gl`). Turn on
  **Strict country filter** to also restrict results to pages Google attributes to
  it (`cr=countryXX`); that is much tighter and returns noticeably fewer results.

**Result Language** restricts results to one language (`hl` + `lr`).

**Time Range** limits results to a publication window - past hour, 24 hours,
week, month, year, or an explicit *Custom range* via **Custom range: from** /
**to** in `YYYY-MM-DD` form. Selecting *Custom range* without either date falls
back to no time filter rather than silently searching all of time.

### Region resolution

| Field | Meaning |
| --- | --- |
| `regionAmbiguous` | `true` when the number was printed without a country code and the same national digits are valid in more than one country |
| `phoneIsMobile` | `true`/`false` where the numbering plan can tell, empty where it genuinely cannot (US, Canada, Mexico) |
| `phoneCallingCode` | The country's international calling code, as a number |
| `phoneCountryName` | Full country name, falling back to the two-letter code rather than guessing |

`regionAmbiguous` is the important one. A number written as `020 7946 0958` is
only a UK number because the run targeted the UK - the country shown is a
reading, not a fact, and this column tells you which rows those are.

# Actor input Schema

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

Find New Numbers (default) searches by keyword. Validate My List skips searching entirely and instead runs the numbers you paste into Phone List (below) through the same deliverability checks.

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

## `phoneList` (type: `array`):

Paste the phone numbers you want checked for deliverability (any format - the selected Country is used as the default region for numbers without a country code). Only used when Scrape Mode is set to "Validate My List".

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

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

## `requireStrictValid` (type: `boolean`):

Drop numbers that fail strict validity - mainly relevant in Validate My List mode.

## `excludeTollFree` (type: `boolean`):

Drop numbers identified as toll-free.

## `excludePremiumRate` (type: `boolean`):

Drop numbers identified as premium-rate.

## `requireCountryMatch` (type: `boolean`):

Drop numbers whose own detected region does not match the Country you selected.

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

Restrict Google to pages it attributes to the country you selected (cr=countryXX), rather than 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. A number published last month is far more likely to still be answered than one last seen years ago.

## `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 Numbers",
  "keywords": [
    "founder",
    "entrepreneur"
  ],
  "country": "United States (+1)",
  "maxPhoneNumbers": 20,
  "phoneList": [],
  "minQualityScore": 0,
  "requireStrictValid": false,
  "excludeTollFree": false,
  "excludePremiumRate": false,
  "requireCountryMatch": false,
  "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": [
        "founder",
        "entrepreneur"
    ],
    "phoneList": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("code-beat/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",
    ],
    "phoneList": [],
}

# Run the Actor and wait for it to finish
run = client.actor("code-beat/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"
  ],
  "phoneList": []
}' |
apify call code-beat/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,code-beat/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/4IEeDR0zWF6CyPj6Y/builds/HPu2EXcc2c2iJktdX/openapi.json
