Phone Number Lookup API
Pricing
Pay per event
Phone Number Lookup API
All-in-one phone intelligence API. Validates any number, returns carrier, line type (mobile/landline/VoIP), country, region, owner name (US/CA), fraud score, breach data, WhatsApp/Telegram presence, and reverse-lookup URLs in a single call. 240+ countries.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Khadin Akbar
Actor stats
0
Bookmarked
14
Total users
12
Monthly active users
7 days ago
Last modified
Share
Phone Number Lookup API — Carrier, Owner Name, Fraud Score, WhatsApp & Telegram Check
Validate, enrich, and reverse-lookup any phone number worldwide. This actor returns 40+ data fields per number including carrier, line type (mobile/landline/VoIP), country, region, city, owner name (US/CA), fraud score, breach data, WhatsApp/Telegram registration status, and pre-built reverse-lookup search URLs — all in a single API call. Powered by Google's libphonenumber + IPQualityScore + free OSINT enrichment. Works with 240+ countries.
Built for sales teams cleaning lead lists, fraud teams scoring inbound calls, RevOps automating CRM hygiene, and AI agents needing structured phone metadata via MCP.
What does Phone Number Lookup API do?
It takes any phone number — international (+12025551234) or local ((202) 555-1234 with a country code) — and returns everything publicly knowable about it in one structured JSON response:
- Validation & format: E.164, international, national, and RFC 3966 formats
- Geography: country, region, city, ZIP code, timezone
- Telecom: carrier (real-time HLR), line type (mobile/landline/VoIP/toll-free/premium), MCC/MNC codes, ported flag, original carrier
- Fraud signals: 0-100 fraud score, recent abuse, leaked-in-breach flag, spammer flag, DNC registry status, SMS deliverability score
- Identity: owner name (US/CA via CNAM), associated emails (where available)
- Cross-platform presence: WhatsApp registration + business flag, Telegram registration + public name/photo
- Reverse-lookup URLs: pre-formatted search URLs for Google, Whitepages, Truecaller, BeenVerified, Spokeo, 800notes, MrNumber, Facebook, LinkedIn
Process 1 number or up to 10,000 per run. Per-number error isolation means one bad input never kills your whole batch.
Why use Phone Number Lookup API?
Most phone validators on Apify just wrap Google's libphonenumber library — they tell you if a number is syntactically valid and not much more. This actor goes far beyond:
- Real fraud detection — 0-100 fraud score, leaked-in-breach lookup, spammer database, DNC registry status
- Owner identification — name where available (US/CA via CNAM), associated emails
- Real-time HLR carrier — actual current carrier (portability-aware), not the static carrier-at-issuance most actors return
- Cross-platform presence — WhatsApp + Telegram registration check baked in (no separate actor needed)
- Reverse-lookup URLs — instant manual investigation links for Google, Whitepages, Truecaller, etc.
- Bulk-friendly — up to 10,000 per run, configurable concurrency, hard cost ceiling, streaming output, resume on failure
- MCP-native — perfect tool for Claude/GPT/Cursor agents (1 input, structured JSON out, predictable cost)
- No setup — bring nothing. We handle all the API keys.
Use cases
- Sales / RevOps: clean lead lists before SMS or dialer campaigns; filter out invalid, VoIP, and toll-free numbers
- Trust & Safety: score inbound numbers, detect spam/scam/fraud signals, check DNC registry
- CRM hygiene: bulk-enrich phone records with carrier, region, line type, and owner name
- Compliance / KYC: verify number ownership, line type, and active status before onboarding
- Real estate / skip-tracing: enrich seller/lead phones with owner details and cross-platform footprint
- AI agents: 1 MCP call returns the full phone profile — no chaining 4 actors
How to use Phone Number Lookup API
- Click Try for free above to open the actor in Apify Console.
- In the Input tab, paste your phone numbers (one per line) — international format
+12025551234works best. For local-format numbers, also set Default country (e.g.US). - Optionally tweak: Concurrency (default 20), Max cost cap, toggle WhatsApp/Telegram checks.
- Click Start.
- Watch the live progress:
Processed 240/5000 (4.8%) · 198 valid · 12 spam-flagged · $6.00 spent. - When done, open the Output tab → preview, or download as JSON / CSV / Excel / HTML.
For programmatic use, hit our API endpoint directly:
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~phone-number-lookup-api/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"phoneNumbers": ["+12025551234", "+447911123456"],"defaultCountry": "US"}'
Input
| Field | Type | Default | Description |
|---|---|---|---|
phoneNumbers | string[] | — (required) | Up to 10,000 numbers. E.164 preferred. |
defaultCountry | string | US | ISO 3166-1 alpha-2 fallback for local-format numbers. |
maxConcurrency | integer | 20 | Parallel lookups (1-100). |
includeReverseLookupUrls | boolean | true | Generate Google/Whitepages/Truecaller search URLs. |
includeWhatsAppCheck | boolean | true | Test WhatsApp registration. |
includeTelegramCheck | boolean | true | Test Telegram registration + fetch public name/photo. |
enableUnofficialSources | boolean | false | Reserved for v2 (Truecaller/GetContact). |
maxCostUsd | integer | unset | Hard spending cap per run. |
Output
Each number returns one record with this shape (simplified):
{"inputNumber": "+12025551234","valid": true,"e164": "+12025551234","international": "+1 202-555-1234","national": "(202) 555-1234","rfc3966": "tel:+1-202-555-1234","countryCode": "US","countryCallingCode": "+1","countryName": "United States","region": "DC","city": "Washington","zipCode": "20001","timezones": ["America/New_York"],"lineType": "mobile","isMobile": true,"isLandline": false,"isVoip": false,"carrier": "Verizon Wireless","originalCarrier": "T-Mobile USA","ported": true,"mobileCountryCode": "310","mobileNetworkCode": "012","active": true,"fraudScore": 12,"risky": false,"recentAbuse": false,"leakedInBreach": false,"spammer": false,"dncStatus": "not_on_dnc_registry","smsScore": 95,"name": "John Doe","associatedEmails": ["j.doe@example.com"],"whatsApp": { "registered": true, "isBusiness": false },"telegram": { "registered": true, "publicName": "John D" },"reverseLookupUrls": {"google": "https://www.google.com/search?q=%2B12025551234","truecaller": "https://www.truecaller.com/search/intl/12025551234","whitepages": "https://www.whitepages.com/phone/12025551234"},"sources": ["libphonenumber", "ipqualityscore", "whatsapp", "telegram", "reverse_lookup_urls"],"warnings": [],"lookedUpAt": "2026-05-03T19:42:00.123Z"}
You can download the dataset in JSON, CSV, Excel, JSONL, RSS, or HTML table format.
Data fields returned
| Category | Fields |
|---|---|
| Validation | valid, formatted, e164, international, national, rfc3966 |
| Geography | countryCode, countryCallingCode, countryName, region, city, zipCode, timezones |
| Telecom | lineType, isMobile, isLandline, isVoip, isTollFree, isPremiumRate, carrier, originalCarrier, ported, mobileCountryCode, mobileNetworkCode, active |
| Fraud / Risk | fraudScore, risky, recentAbuse, leakedInBreach, spammer, dncStatus, smsScore |
| Identity | name, associatedEmails |
| Presence | whatsApp.registered, whatsApp.isBusiness, telegram.registered, telegram.publicName, telegram.publicPhotoUrl |
| Reverse lookup | URLs for Google, Whitepages, Truecaller, BeenVerified, Spokeo, 800notes, MrNumber, Facebook, LinkedIn |
| Metadata | sources[], warnings[], lookedUpAt |
Pricing — How much does it cost to look up phone numbers?
Pay-per-event pricing. You pay only for what you use — no monthly minimums, no setup fees.
| Event | Price | When charged |
|---|---|---|
| Actor start | $0.00005 | Per RAM-GB, charged once per run |
| Phone looked up | $0.025 | Per number successfully processed |
Cost examples
- 1 number (one-off lookup): ~$0.025
- 100 numbers (small lead batch): ~$2.50
- 1,000 numbers (medium CRM cleanup): ~$25
- 10,000 numbers (large enrichment job): ~$250
Cost cap
Set maxCostUsd in input to hard-cap your spend. The actor stops gracefully when reached — no surprise bills.
Tips & advanced options
- Always pass E.164 format (
+12025551234) when possible — local formats need a default country and may misparse. - For huge batches (>10,000), split into multiple runs and use Apify Tasks to chain them.
- For real-time fraud screening, use the API endpoint with single numbers and webhook callbacks for sub-2-second response.
- Lower concurrency to 5-10 if you see IPQS rate-limit warnings — IPQS allows generous limits but bursts of 50+ may throttle.
- Disable WhatsApp/Telegram checks if you only need validation + fraud — saves 200-500ms per number.
- Pipe output into your other Apify actors — pair with
b2b-lead-finder-enrichment,linkedin-profile-email-scraper,bulk-website-contact-extractor, orgoogle-maps-leads-scraperfor end-to-end lead enrichment.
FAQ
Which countries are supported? All 240+ countries recognized by ITU-T E.164 (literally every country on Earth). Owner-name data is strongest for US, Canada, UK, EU, India, and Australia.
How accurate is the carrier data? Real-time HLR via IPQualityScore — portability-aware (tells you the current carrier, not the carrier at number issuance). Falls back to libphonenumber's static carrier data if IPQS lookup fails.
Does this work for landlines? Yes — landlines, mobile, VoIP, toll-free, premium-rate, personal numbers, pagers, and shared-cost lines are all supported and classified.
Does it return profile pictures like Truecaller? For WhatsApp business accounts, yes. For Telegram public profiles, yes. For general "Truecaller-style" name lookup beyond US/CA, that requires unofficial sources which are reserved for v2 (opt-in flag with TOS disclaimer).
Can I use this in real-time during a phone call? Yes — call the synchronous API endpoint with a single number; typical response time is 1-3 seconds.
Is bulk processing reliable? Yes. Per-number error isolation means one bad input doesn't kill your batch. The actor streams results to the dataset as each number completes, so you can start downloading partial results before the full run finishes.
Can I limit my spend?
Yes — set maxCostUsd in input. The actor stops gracefully when the cap is reached.
Legal & disclaimers
This actor uses publicly available data sources — Google's open-source libphonenumber library, IPQualityScore's commercial fraud database, and public WhatsApp/Telegram presence indicators (no message content, no profile data scraping).
You are responsible for the legal use of this data in your jurisdiction. This includes but is not limited to:
- Compliance with GDPR, CCPA, TCPA, and other applicable privacy/telecom laws
- Honoring DNC registry restrictions (the actor flags DNC status — you must respect it)
- Not using the data for harassment, stalking, fraud, or unauthorized commercial outreach
- Consent and disclosure obligations when enriching personal data
The actor is provided "as is" without warranty. Carrier and ownership data is sourced from third-party providers and may be incomplete or outdated. Do not rely solely on this data for life-or-safety decisions.
Support
Found a bug, have a feature request, or want to chat about your use case? Open an Issue on this actor's page.
Related actors in this portfolio
Pair Phone Number Lookup API with these to build full lead enrichment pipelines:
- B2B Lead Finder + Enrichment — find leads via Google Maps + emails, then enrich phones here
- LinkedIn Profile + Email Scraper — get LinkedIn profiles with phones, then validate
- Bulk Website Contact Extractor — extract contacts from any URL list, then enrich phones
- Universal Lead Finder — niche+city leads with phones for enrichment
- Google Maps Leads Scraper — local business phones to enrich and DNC-screen