Superclean Phone Numbers avatar
Superclean Phone Numbers

Pricing

from $0.35 / 1,000 results

Go to Apify Store
Superclean Phone Numbers

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

Superlative

Maintained by Community

Actor stats

2

Bookmarked

5

Total users

3

Monthly active users

3 days ago

Last modified

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-FLOWERS to +18003569377
  • Extracts extensions — Parses x123 and ext 123 into 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:

Why clean phone numbers?

Your lead data comes from many sources with inconsistent formats:

  • (555) 123-4567
  • 555.123.4567
  • +1 555 123 4567
  • 1-800-FLOWERS
  • 555-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

  1. Paste your phone numbers into the input field (one per line)
  2. Set the default country for numbers without country codes
  3. Select your output format (E.164, International, or National)
  4. Click Start and download your cleaned results

Output formats

FormatBest forExample InputExample Output
E.164APIs, dialers, Twilio(415) 555-1234+14155551234
InternationalHuman-readable with country4155551234+1 415 555 1234
NationalLocal 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 1234
  • 442079460958+44 20 7946 0958

National

Local format without country code. Uses country-specific conventions.

  • +14155551234(415) 555-1234
  • +442079460958020 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

ParameterRequiredDescription
inputYesPhone number to clean
defaultCountryNo2-letter ISO country code (default: US)
outputFormatNoFormat: 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

CodeCause
400Missing input parameter, invalid country code, or invalid output format
405Non-GET request
500Unexpected server error

What gets cleaned?

Format variations

  • (555) 123-4567+15551234567
  • 555.123.4567+15551234567
  • 555 123 4567+15551234567
  • 5551234567+15551234567

Vanity numbers

  • 1-800-FLOWERS+18003569377
  • 1-800-GOT-JUNK+18004685865

Extensions

  • 555-123-4567 x123 → output: +15551234567, extension: 123
  • 555-123-4567 ext 456 → output: +15551234567, extension: 456

International numbers

  • +44 20 7946 0958 (UK) → correctly parsed with country GB
  • +49 30 12345678 (Germany) → correctly parsed with country DE
  • +33 1 23 45 67 89 (France) → correctly parsed with country FR

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 NumbersCost
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

ParameterTypeDescription
itemsarrayList of phone numbers to clean (one per line in the UI, or JSON array)
itemstringSingle 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
defaultCountrystringISO 3166-1 alpha-2 country code for numbers without country code (default: US)
outputFormatstringOutput 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"
}
]
FieldDescription
idRow number (1-based, matches Apify's displayed row numbers)
inputOriginal phone number before cleaning
outputCleaned phone number in requested format
e164Phone number in E.164 format (always included for programmatic use)
isValidWhether the number has valid format and length for its country (does not verify the number is in service)
typePhone type: mobile, fixed_line, fixed_line_or_mobile, toll_free, voip, unknown
countryCodeDetected ISO 3166-1 alpha-2 country code
extensionExtracted 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 return fixed_line_or_mobile because 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 ApifyClient
client = 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().items
print(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