Superclean Phone Numbers
Pricing
from $0.35 / 1,000 results
Superclean Phone Numbers
Clean messy phone numbers from lead exports. Normalize to E.164, International, or National format. Validates numbers, detects type (mobile/landline/toll-free), handles vanity numbers like 1-800-FLOWERS, and extracts extensions.
Pricing
from $0.35 / 1,000 results
Rating
0.0
(0)
Developer

Superlative
Actor stats
2
Bookmarked
5
Total users
3
Monthly active users
3 days ago
Last modified
Categories
Share
Clean messy phone numbers from lead exports, CRM records, and web scraping.
What does Superclean Phone Numbers do?
Superclean Phone Numbers normalizes phone numbers into consistent, standardized formats using rule-based parsing (no AI/LLM required).
- Normalizes formats — Converts any phone format to E.164, International, or National
- Validates format — Checks if the number has valid length and structure for its country
- Detects type — Identifies mobile, landline, toll-free, VoIP numbers
- Handles vanity numbers — Converts
1-800-FLOWERSto+18003569377 - Extracts extensions — Parses
x123andext 123into separate field - Multi-country support — Works with phone numbers from any country
- Instant API mode — Sub-second single-number cleaning via Standby HTTP server
What else can Superclean do?
If you're cleaning lead data, you might also need:
- Superclean Company Names — Clean messy company names for cold emails and CRM
- Superclean Person Names — Clean person names for cold email personalization
- Superclean Job Titles — Normalize job titles for lead scoring and personalization
- Superclean Product Names — Clean product names from e-commerce data
- Superclean Places — Parse city/state/country from location strings
- Superclean URLs — Clean and normalize URLs from lead data
Why clean phone numbers?
Your lead data comes from many sources with inconsistent formats:
(555) 123-4567555.123.4567+1 555 123 45671-800-FLOWERS555-123-4567 x123
Clean data means better:
- Dialer compatibility — Most dialers and APIs expect E.164 format
- SMS campaigns — Validate numbers before sending (mobile vs landline)
- Deduplication — Match records across different sources
- CRM hygiene — Consistent formats in Salesforce, HubSpot, etc.
How to use Superclean Phone Numbers
- Paste your phone numbers into the input field (one per line)
- Set the default country for numbers without country codes
- Select your output format (E.164, International, or National)
- Click Start and download your cleaned results
Output formats
| Format | Best for | Example Input | Example Output |
|---|---|---|---|
| E.164 | APIs, dialers, Twilio | (415) 555-1234 | +14155551234 |
| International | Human-readable with country | 4155551234 | +1 415 555 1234 |
| National | Local display, CRM fields | +14155551234 | (415) 555-1234 |
E.164 (default)
The international standard format. No spaces, no dashes, always starts with + and country code. Required by most APIs and dialers.
(415) 555-1234→+14155551234+44 20 7946 0958→+442079460958
International
Human-readable format with country code and spaces.
4155551234→+1 415 555 1234442079460958→+44 20 7946 0958
National
Local format without country code. Uses country-specific conventions.
+14155551234→(415) 555-1234+442079460958→020 7946 0958
Note: National formatting is accurate for major markets (US, UK, Germany, France, Australia, Japan, etc.). Some smaller countries may have minimal or inconsistent formatting. If you need guaranteed consistency across all countries, use E.164 — it's unambiguous and works everywhere.
Standby mode (instant API)
Standby mode keeps a warm container running so you get instant phone number cleaning without cold-start delays. Instead of starting a full Actor run, you make a simple HTTP GET request and get results in milliseconds.
This is ideal for:
- Clay enrichment steps — single-number validation inline
- Make / n8n HTTP modules — real-time phone formatting in workflows
- MCP agents — AI tools that need instant phone number data
Standby URL
https://superlativetech--superclean-phone-numbers.apify.actor?token=YOUR_API_TOKEN
Or use a Bearer token in the Authorization header instead of the token query parameter.
Clean a phone number
$curl "https://superlativetech--superclean-phone-numbers.apify.actor?token=YOUR_API_TOKEN&input=(555)+123-4567"
International format
$curl "https://superlativetech--superclean-phone-numbers.apify.actor?token=YOUR_API_TOKEN&input=(555)+123-4567&outputFormat=international"
Non-US number
$curl "https://superlativetech--superclean-phone-numbers.apify.actor?token=YOUR_API_TOKEN&input=020+7946+0958&defaultCountry=GB"
Query parameters
| Parameter | Required | Description |
|---|---|---|
input | Yes | Phone number to clean |
defaultCountry | No | 2-letter ISO country code (default: US) |
outputFormat | No | Format: e164 (default), international, or national |
Response format
{"id": 1,"input": "(555) 123-4567","output": "+15551234567","e164": "+15551234567","isValid": true,"type": "fixed_line_or_mobile","countryCode": "US","extension": null}
Error responses
| Code | Cause |
|---|---|
| 400 | Missing input parameter, invalid country code, or invalid output format |
| 405 | Non-GET request |
| 500 | Unexpected server error |
What gets cleaned?
Format variations
(555) 123-4567→+15551234567555.123.4567→+15551234567555 123 4567→+155512345675551234567→+15551234567
Vanity numbers
1-800-FLOWERS→+180035693771-800-GOT-JUNK→+18004685865
Extensions
555-123-4567 x123→ output:+15551234567, extension:123555-123-4567 ext 456→ output:+15551234567, extension:456
International numbers
+44 20 7946 0958(UK) → correctly parsed with countryGB+49 30 12345678(Germany) → correctly parsed with countryDE+33 1 23 45 67 89(France) → correctly parsed with countryFR
How many phone numbers can you clean?
There's no limit. Process as many phone numbers as you need — from a handful to hundreds of thousands. The Actor scales automatically.
For best performance, batch your requests. Processing 1,000 numbers at once is more efficient than 10 separate runs of 100 numbers each.
How much will it cost you?
This Actor uses pay-per-result pricing at half the cost of LLM-based actors (rule-based validation with no external API calls):
| Phone Numbers | Cost |
|---|---|
| 1,000 | $0.50 |
| 10,000 | $5.00 |
| 100,000 | $50.00 |
Volume discounts apply automatically:
- Bronze (100+ items): $0.00045/number
- Silver (1,000+ items): $0.0004/number
- Gold (10,000+ items): $0.00035/number
Input parameters
| Parameter | Type | Description |
|---|---|---|
items | array | List of phone numbers to clean (one per line in the UI, or JSON array) |
item | string | Single phone number to clean — API shorthand for integration callers (Clay, Make, n8n). If both item and items are provided, item is prepended to the list |
defaultCountry | string | ISO 3166-1 alpha-2 country code for numbers without country code (default: US) |
outputFormat | string | Output format: e164, international, or national (default: e164) |
Input example
{"items": ["(555) 123-4567","555.123.4567","+44 20 7946 0958","1-800-FLOWERS","415-555-1234 x200"],"defaultCountry": "US","outputFormat": "e164"}
items also accepts objects, which is useful for API and MCP integrations:
{"items": [{ "input": "(555) 123-4567" },{ "input": "+44 20 7946 0958" }],"defaultCountry": "US","outputFormat": "e164"}
For API and integration callers who want to clean a single value without wrapping it in an array, use the item shorthand:
{"item": "(555) 123-4567","defaultCountry": "US","outputFormat": "e164"}
During the Actor run
The Actor processes phone numbers quickly using rule-based parsing. You'll see progress updates as items are processed.
If you provide invalid input (e.g., an empty list), the Actor will stop immediately with an error message explaining what went wrong.
Results are available in real-time — you can start downloading cleaned numbers before the full run completes.
Output format
Results are saved to the default dataset. Each cleaned phone number is a separate item.
You can export results as JSON, CSV, Excel, or other formats directly from Apify Console. Or access them programmatically via the API.
Output example
[{"id": 1,"input": "(555) 123-4567","output": "+15551234567","e164": "+15551234567","isValid": false,"type": "unknown","countryCode": "US","extension": null},{"id": 2,"input": "+44 20 7946 0958","output": "+442079460958","e164": "+442079460958","isValid": true,"type": "fixed_line","countryCode": "GB","extension": null},{"id": 3,"input": "1-800-FLOWERS","output": "+18003569377","e164": "+18003569377","isValid": true,"type": "toll_free","countryCode": "US","extension": null},{"id": 4,"input": "415-555-1234 x200","output": "+14155551234","e164": "+14155551234","isValid": true,"type": "fixed_line_or_mobile","countryCode": "US","extension": "200"}]
| Field | Description |
|---|---|
id | Row number (1-based, matches Apify's displayed row numbers) |
input | Original phone number before cleaning |
output | Cleaned phone number in requested format |
e164 | Phone number in E.164 format (always included for programmatic use) |
isValid | Whether the number has valid format and length for its country (does not verify the number is in service) |
type | Phone type: mobile, fixed_line, fixed_line_or_mobile, toll_free, voip, unknown |
countryCode | Detected ISO 3166-1 alpha-2 country code |
extension | Extracted extension if present, otherwise null |
Phone types
The type field helps you filter numbers for different use cases:
- mobile — Mobile/cell phone (SMS-capable)
- fixed_line — Landline (not SMS-capable)
- fixed_line_or_mobile — Could be either (common in some countries)
- toll_free — Toll-free number (1-800, etc.)
- voip — VoIP number (Google Voice, etc.)
- unknown — Type could not be determined
Important: Phone type detection is directional, not definitive. It's based on each country's numbering plan — for example, UK mobile numbers start with
07, so those can be identified reliably. However, in the US and Canada, number portability means any number can be moved between mobile and landline carriers. US numbers typically returnfixed_line_or_mobilebecause the type cannot be determined from the number alone.For definitive mobile vs. landline detection (especially for SMS eligibility), use a real-time carrier lookup service like Twilio Lookup, Numverify, or Telnyx.
Validation notes
The isValid field checks whether the number has the correct format and length for its country's numbering plan. This is format validation only — it does not verify the number is currently in service or reachable.
Numbers marked isValid: false:
- 555 numbers — US fictional exchange (used in movies/TV)
- Short codes — Emergency numbers like 911 (not internationally callable)
- Incomplete numbers — Missing digits
- Invalid area codes — Area codes that don't exist in that country
Note: To verify a number is actually in service, you'll need a separate number verification service like Twilio Lookup or NumVerify.
Integrations
Superclean Phone Numbers works with any tool that can call Apify Actors:
- Clay — Add as an enrichment step in your Clay tables
- Make — Use the Apify module to run the Actor
- Zapier — Trigger runs and retrieve results automatically
- n8n — Self-hosted workflow automation
You can also use webhooks to trigger actions when a run completes — for example, send a Slack notification or automatically import results into your CRM.
Using Superclean Phone Numbers with the Apify API
The Apify API gives you programmatic access to run Actors, retrieve results, and manage datasets.
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('superlativetech/superclean-phone-numbers').call({items: ['(555) 123-4567', '+44 20 7946 0958', '1-800-FLOWERS'],defaultCountry: 'US',outputFormat: 'e164'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('superlativetech/superclean-phone-numbers').call(run_input={'items': ['(555) 123-4567', '+44 20 7946 0958', '1-800-FLOWERS'],'defaultCountry': 'US','outputFormat': 'e164'})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Check out the Apify API reference for full details, or click the API tab above for more code examples.
Your feedback
We're always improving Superclean Actors. If you have feature requests, find a bug, or need help with a specific use case, please open an issue in the Actor's Issues tab.
When Apify asks to share your run data with us, we encourage you to opt in — it's the fastest way for us to spot edge cases and improve results. Sharing is completely optional (you can toggle it anytime under Account Settings → Privacy), and shared runs are automatically deleted by Apify based on your plan's data retention period. We only use shared data to debug issues and improve this Actor.
Leave a review
If Superclean Phone Numbers saves you time or improves your lead data, please leave a review. Your feedback helps other users discover the tool and helps us understand what's working well.
Built by Superlative