Phone Number Risk Checker — Fraud, Spam & Validation
Pricing
from $26.00 / 1,000 phone number scoreds
Phone Number Risk Checker — Fraud, Spam & Validation
Validate phone-number format and classify line type offline, then return a transparent heuristic risk score, flags, and an ALLOW, REVIEW, or BLOCK recommendation. No carrier lookup is performed, and results are advisory rather than proof of fraud or identity.
Pricing
from $26.00 / 1,000 phone number scoreds
Rating
0.0
(0)
Developer
daehwan kim
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
3
Monthly active users
a day ago
Last modified
Categories
Share
Phone Number Fraud & Risk Scanner
What does this Actor do?
Enter phone numbers and receive one dataset row per input with parsing validity, normalized formats, country, available line type, risk flags, and a deterministic heuristic score from 0 to 100.
The Actor is an offline triage aid for fraud-prevention and KYC teams. Its ALLOW, REVIEW, or BLOCK label suggests the next review step, but does not prove fraud, identity, ownership, reachability, or current subscriber information. It uses libphonenumber locally, with no external API or scraping.
Why use Phone Number Fraud & Risk Scanner?
- Consistent triage: Flag line types that the documented scoring rubric treats as higher risk, including VOIP, premium-rate, and toll-free numbers
- KYC review aid: Route numbers to normal processing or secondary review without treating the score as identity verification
- Transparent Scoring: Fully deterministic, human-readable risk score (base 5 + line type adjustments)
- Offline & Fast: No external API dependencies — scores return in milliseconds
- Privacy-First: No scraped data, no external platform calls, no personal data stored
- Cost-Effective: $0.05 per valid phone number scored; invalid numbers are free
Use Cases
- Banking/FinTech: Triage submitted phone numbers during account-opening reviews
- Mobile/Telecom: Normalize numbers and flag available line-type signals such as VOIP or toll-free
- Compliance Teams: Produce repeatable phone-risk worksheets for secondary review
- B2B Platforms: Add an advisory phone-number signal before a transaction decision
How to use Phone Number Fraud & Risk Scanner
- Prepare your list: Gather phone numbers in international format (e.g.
+14155552671) or with a default country code - Set disclaimers: Acknowledge that you will use results for lawful fraud prevention / KYC only
- Run the Actor: Click "Start" or call the API with your phone list
- Review results: Download the dataset (JSON, CSV, Excel) — each row shows risk score, line type, and recommendation
- Act on recommendations:
- ALLOW (score <25): Proceed with normal onboarding
- REVIEW (score 25–60): Manual verification step (call or SMS test)
- BLOCK (score >60): Flag for fraud team, request alternative phone number
Input
The Actor accepts:
| Field | Type | Required | Example | Description |
|---|---|---|---|---|
phoneNumbers | Array of strings | ✅ Yes | ["+14155552671", "+442071838750"] | Phone numbers to score (international format preferred, or national format if defaultCountry is set) |
defaultCountry | String | ❌ No | "US" | ISO country code for parsing numbers without country prefix (e.g. (415) 555-2671 in the US) |
disclaimerAck | Boolean | ✅ Yes | true | Must be checked to proceed. Confirms lawful use, compliance with GDPR/CCPA/PIPA, and no harassment/doxxing intent |
Invalid input ends the run as SUCCEEDED with a notice row.
Example Input (JSON)
{"phoneNumbers": ["+14155552671", "+442071838750", "+33679368229"],"defaultCountry": "US","disclaimerAck": true}
Output
The Actor produces a dataset (table view in Apify Console) with one row per phone number:
| Field | Type | Example | Description |
|---|---|---|---|
input | string | "+14155552671" | Original input number |
valid | boolean | true | Whether the number parsed and validated successfully |
e164 | string | "+14155552671" | Normalized international format (if valid) |
national | string | "(415) 555-2671" | National format (if valid) |
country | string | "US" | ISO country code |
countryCallingCode | number | 1 | International dialing code |
lineType | string | "MOBILE" | Line type: MOBILE, FIXED_LINE, VOIP, PREMIUM_RATE, TOLL_FREE, etc. |
riskScore | number | 5 | Risk score (0–100, higher = riskier) |
riskFlags | array | [] | Risk indicators (INVALID_NUMBER, VOIP, PREMIUM_RATE, TOLL_FREE, UNKNOWN_TYPE, etc.) |
recommendation | string | "ALLOW" | Decision: ALLOW (<25), REVIEW (25–60), BLOCK (>60) |
disclaimer | string | "Risk score is advisory..." | Legal disclaimer text |
scannedAt | string (ISO 8601) | "2024-01-15T10:30:45.123Z" | Timestamp of scan |
Example Output (JSON)
[{"input": "+14155552671","valid": true,"e164": "+14155552671","national": "(415) 555-2671","country": "US","countryCallingCode": 1,"lineType": "MOBILE","riskScore": 5,"riskFlags": [],"recommendation": "ALLOW","disclaimer": "Risk score is an advisory signal...","scannedAt": "2024-01-15T10:30:45.123Z"},{"input": "+441234567890","valid": true,"e164": "+441234567890","national": "01234 567890","country": "GB","countryCallingCode": 44,"lineType": "VOIP","riskScore": 45,"riskFlags": ["VOIP"],"recommendation": "REVIEW","disclaimer": "Risk score is an advisory signal...","scannedAt": "2024-01-15T10:30:46.456Z"}]
You can download the dataset in JSON, CSV, HTML, or Excel formats via the Output tab.
Data Table
Risk Score Breakdown
| Line Type | Base Score | Risk Level | Notes |
|---|---|---|---|
| MOBILE | 5 | Low | Residential cell phones (lowest risk) |
| FIXED_LINE | 5 | Low | Landline numbers |
| FIXED_LINE_OR_MOBILE | 20 | Medium | Mixed validation (additional review recommended) |
| TOLL_FREE | 30 | Medium-High | 1-800 numbers, commonly spoofed |
| VOIP | 45 | High | VoIP/internet-based, high fraud correlation |
| PREMIUM_RATE | 55 | Very High | 1-900, premium SMS gateways, toll-line proxies |
| PERSONAL_NUMBER | 20 | Medium | Directory-listed non-geographic |
| UAN | 20 | Medium | Unified Access Numbers (less common) |
| SHARED_COST | 20 | Medium | Shared-cost lines |
| UNKNOWN_TYPE | 35 | High | Validation passed but type unclear (requires review) |
| INVALID_NUMBER | 90 | Critical | Failed to parse or invalid format (BLOCK) |
Score Thresholds:
- ALLOW (0–24): Proceed to next step
- REVIEW (25–59): Secondary verification (SMS test, human review, callback)
- BLOCK (60+): Flag for fraud team, request alternative phone number
Pricing
Cost per scan:
- Valid phone numbers: $0.05 per number (charged once it parses and validates)
- Invalid numbers: Free (no charge for parse failures)
Cost Estimation
- 100 valid numbers = $5.00
- 1,000 valid numbers = $50.00
- 10,000 valid numbers = $500.00
Tips & Advanced Options
Optimize Performance
- Batch large lists: The Actor processes numbers sequentially; for 100K+ numbers, consider splitting into 10K batches and running in parallel
- Use default country: For domestic numbers (e.g. all US), set
defaultCountry: "US"to avoid prefixing all 10,000+ numbers - Cache results: If you're re-scanning the same customer base monthly, store results in your own DB to avoid duplicate charges
Improve Accuracy
- Verify REVIEW-tier numbers: Use SMS OTP or callback to confirm REVIEW-tier numbers (VOIP, toll-free, unknown types) before granting access
- Combine with other signals: Risk score is one signal — pair with IP geolocation, email verification, and account history for stronger fraud detection
- Monitor false positives: Some legitimate businesses use VOIP or toll-free numbers; build allowlist for known vendors
Reduce Costs
- Pre-filter your list: Remove obvious duplicates and formatting errors before submitting (saves 5–20% on wasted scans)
- Use callback verification: For borderline REVIEW cases, a $0.10 SMS or $0.05 callback is cheaper than $0.05 auto-block if it enables conversions
- Retry only failures: Only re-submit numbers that failed to parse (network glitch, formatting edge case), not all 10K every month
FAQ, Disclaimers & Support
FAQ
Q: Does this Actor make real-time API calls to carriers or third-party services?
A: No. All validation and scoring is done offline using libphonenumber-js (Google's open-source library). Zero external API dependencies.
Q: Can I use this for SMS marketing or spam calling?
A: No. This Actor is for fraud prevention and authorized KYC workflows only. Unauthorized calling/SMS violates TCPA, GDPR, and local laws.
Q: What about GDPR/CCPA privacy?
A: The Actor does not store personal data, does not call external platforms, and only returns metadata (country, line type, validity). You are responsible for user consent and data retention policies.
Q: Why do some valid numbers get a high risk score?
A: Numbers flagged as VOIP, toll-free, or premium-rate correlate with fraud rings but have legitimate business uses. Use REVIEW scores for secondary verification instead of auto-blocking.
Q: Can I integrate this with my app?
A: Yes, via the Apify API. Call the Actor's endpoint and parse the returned dataset. See Apify docs for webhooks, scheduling, and integrations.
Disclaimers
Legal: This tool validates phone numbers and produces a heuristic risk score from offline metadata (line type, validity, region). It does NOT access carrier databases, perform live lookups, or scrape any platform. The risk score is an advisory signal for fraud-prevention and KYC workflows only — NOT a definitive determination of fraud, identity, or suitability. You assume full liability for decisions made using this output.
Compliance: You are responsible for compliance with:
- GDPR (if processing EU residents)
- CCPA/CPRA (if processing California residents)
- TCPA (US telephone spam law)
- PIPA (Canada privacy law)
- Local telecom and data protection regulations
Misuse (harassment, doxxing, unauthorized calling, spam) is prohibited and may result in legal liability.
Limitations
- No real-time validation: Score is based on number format and known line-type metadata, not live carrier status
- Regional metadata gaps: Some developing regions have incomplete phonenumber databases; UNKNOWN_TYPE flags may be higher
- ported numbers: Does not detect if a number was recently ported from VOIP to MOBILE (or vice versa)
- SIM-only validation: Validates SIM card format, not SIM activation status or current ownership
Support & Feedback
- Bug reports: Use the Issues tab to report parsing errors or incorrect risk scores
- Feature requests: Comment with your use case (fraud detection, compliance, banking, etc.) and we'll consider it
- Custom solutions: Need bulk verification, real-time webhooks, or custom scoring rules? Contact Apify for a consultation
Built by ntriq on the Apify platform. Powered by libphonenumber-js (Google's open-source library).