Pricing
Pay per event
Phone Number Validation API
๐ Validate, normalize, format, and deduplicate phone numbers in bulk. Get E.164, country, type, extension, and validation reasons.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Validate, normalize, format, and deduplicate phone numbers in bulk on Apify.
This actor uses maintained libphonenumber metadata locally, so you do not need a paid validation API key, cookies, or a website account.
What does Phone Number Validation API do?
Phone Number Validation API turns messy phone lists into structured validation rows.
It accepts raw phone numbers, optional free-form text, and a default country for national numbers.
For every candidate, it returns validity, possibility, E.164 format, international format, national format, region, calling code, type, extension, duplicate metadata, and a clear validation reason.
Who is it for?
Sales operations teams use it before importing leads into a CRM.
Growth teams use it before calling or SMS campaigns.
Data enrichment teams use it inside Apify workflows.
Developers use it when they need a simple phone validation API without adding another vendor.
QA teams use it to check web-form submissions and CSV uploads.
Why use this actor?
- โ No external API key required
- โ Works with bulk phone lists
- โ Normalizes to E.164
- โ Supports international formats
- โ Detects invalid and possible-only numbers
- โ Extracts phone numbers from text
- โ Flags duplicates
- โ Produces clean dataset rows
What data can you validate?
You can validate phone numbers copied from CRMs, spreadsheets, form submissions, lead databases, support tickets, or free-form notes.
The actor is best for structural validation and normalization.
It does not call carriers and does not verify whether a subscriber currently owns the number.
Output data
| Field | Description |
|---|---|
input | Original candidate value |
source | numbers or text |
isValid | Whether the number is valid |
isPossible | Whether the number shape is possible |
validationStatus | valid, possible, invalid, parse_error, or duplicate |
reason | Human-readable validation explanation |
e164 | Canonical E.164 number |
internationalFormat | Human-readable international format |
nationalFormat | Local national format |
rfc3966 | Phone URI format |
country | Detected ISO country code |
countryCallingCode | Calling code |
numberType | Mobile, fixed line, toll free, etc. when known |
extension | Parsed extension |
normalizedDigits | Digits-only value |
duplicateOf | First normalized duplicate value |
processedAt | Processing timestamp |
How much does it cost to validate phone numbers?
The actor uses pay-per-event pricing.
There is a small run start fee and a per-result fee for each emitted validation row.
Because the actor runs locally against metadata and does not use proxies, large batches are usually inexpensive.
Check the Pricing tab on the Apify Store page for current tiered prices.
How to use it
- Open the actor on Apify.
- Paste phone numbers into the
numbersinput. - Set
defaultCountryfor national numbers without a+prefix. - Optionally paste notes into
textto extract phone numbers automatically. - Choose whether to include invalid rows.
- Choose whether to remove duplicates.
- Run the actor.
- Download the dataset as JSON, CSV, Excel, or via API.
Input example
{"numbers":["+1 415 555 2671","(020) 7946 0958","+420 777 123 456 ext. 9","555-0100"],"text":"Sales contacts: +1 212 555 0199 and +44 20 7946 0018","defaultCountry":"US","includeInvalid":true,"deduplicate":false,"maxItems":100}
Output example
{"input":"+1 415 555 2671","source":"numbers","isValid":true,"isPossible":true,"validationStatus":"valid","reason":"Number is valid according to libphonenumber metadata.","e164":"+14155552671","internationalFormat":"+1 415 555 2671","nationalFormat":"(415) 555-2671","country":"US","countryCallingCode":"1","numberType":"FIXED_LINE_OR_MOBILE"}
Tips for best results
Use international + prefixes when available.
Set defaultCountry when validating national numbers.
Keep invalid rows on during audits so you can see reasons.
Turn deduplication on for clean CRM imports.
Use maxItems to cap accidental large text extraction runs.
CRM hygiene workflow
Export contacts from your CRM as phone-number strings.
Run them through this actor with your main market as defaultCountry.
Filter rows where isValid is true.
Import the E.164 column back into your CRM.
Review invalid rows separately before deleting them.
Sales operations workflow
Before a calling campaign, validate phone numbers and remove duplicates.
Use numberType and country to route lists by market.
Use reason to explain rejected rows to upstream lead vendors.
Lead enrichment workflow
Add this actor after a scraper or lead finder.
Pass extracted phone numbers to this actor.
Join results back to the source dataset by input value or row order.
Form QA workflow
Paste exported form submissions into the text field.
The actor extracts phone-like candidates and validates them.
This helps detect broken country selectors, missing prefixes, and short test numbers.
Integrations
Use the actor with Apify tasks for recurring CRM checks.
Use webhooks to send finished datasets to Make, Zapier, or your backend.
Use the Apify API to validate phone lists from internal tools.
Use dataset exports for spreadsheet review.
API usage with Node.js
import{ ApifyClient }from'apify-client';const client =newApifyClient({token: process.env.APIFY_TOKEN});const run =await client.actor('automation-lab/phone-number-validation-api').call({numbers:['+1 415 555 2671'],defaultCountry:'US'});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/phone-number-validation-api').call(run_input={'numbers':['+1 415 555 2671'],'defaultCountry':'US',})print(run['defaultDatasetId'])
API usage with cURL
curl-X POST "https://api.apify.com/v2/acts/automation-lab~phone-number-validation-api/runs?token=$APIFY_TOKEN"\-H'Content-Type: application/json'\-d'{"numbers":["+1 415 555 2671"],"defaultCountry":"US"}'
MCP usage
Use the actor from Claude Desktop or Claude Code through Apify MCP.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/phone-number-validation-api
Claude Code setup:
$claude mcp add apify-phone-validation https://mcp.apify.com/?tools=automation-lab/phone-number-validation-api
Claude Desktop JSON config:
{"mcpServers":{"apify-phone-validation":{"url":"https://mcp.apify.com/?tools=automation-lab/phone-number-validation-api"}}}
Example prompts:
- Validate these CRM phone numbers and return E.164 values.
- Extract phone numbers from this sales note and flag invalid ones.
- Deduplicate this list before I import it into HubSpot.
Limitations
This actor validates number structure using metadata.
It does not perform live carrier lookup.
It does not guarantee the number is currently active.
It does not identify the owner of a number.
It does not bypass consent or compliance requirements.
Legality
Phone-number formatting and structural validation is generally allowed for data you are permitted to process.
You are responsible for complying with privacy, telemarketing, SMS, and consent laws in your jurisdiction.
Do not use validated numbers for unsolicited outreach where prohibited.
Troubleshooting
If a national number parses incorrectly, set defaultCountry to the correct ISO country code.
If you only want clean rows, set includeInvalid to false.
If duplicates appear, enable deduplicate.
If no text numbers are detected, paste clearer separators or use the numbers list directly.
FAQ
Does this verify whether a phone line is active?
No. It validates structure and metadata, not live subscriber status.
Does it need Twilio or another API key?
No. It runs against bundled libphonenumber metadata.
Can it process thousands of numbers?
Yes. Use maxItems to control batch size and cost.
Can it validate international numbers?
Yes. Use + country prefixes or set a default country for local numbers.
Related scrapers and actors
Explore other Automation Lab actors at https://apify.com/automation-lab/ for lead enrichment, website contact extraction, and data cleanup workflows.
Changelog
Initial version validates and normalizes phone numbers, extracts text candidates, and detects duplicates.
Support
If a number parses differently than expected, include the raw input, default country, and expected format when reporting the issue.
