Upload a messy list. Download SMS-ready rows.
Upload CSV, TSV, XLSX, TXT, or JSON and get back full results plus a shortlist of rows safe to send to your SMS tool. Duplicates and malformed rows cost zero credits.
Messy in.Structured out.
Drop any export, including odd formats, duplicates and malformed entries. Get back one file with every number normalised, typed, carrier-matched, and flagged for SMS.
| # | phone |
|---|---|
| 1 | 07400123456 |
| 2 | (415) 555-2671 ext 12 |
| 3 | +1.415.555.2671 |
| 4 | 0044-20-7123-4567 |
| 5 | 1-800-555-1212 |
| 6 | n/a |
| # | e164 | type | sms_ready | carrier | notes |
|---|---|---|---|---|---|
| 1 | +447400123456 | mobile | true | EE | · |
| 2 | +14155552671 | mobile | true | Verizon | · |
| 3 | +14155552671 | mobile | · | Verizon | duplicate |
| 4 | +442071234567 | landline | false | BT | landline |
| 5 | +18005551212 | toll_free | false | n/a | toll-free |
| 6 | n/a | unknown | · | n/a | malformed |
Inspect the output before you sign up.
Download the exact sample files or open the browser preview to see which rows are kept, removed, or annotated. No account required.
Built for SMS teams. Priced for everyone else.
Four guarantees most cleaners can't make, because most of them are reselling someone else's API at a markup.
1 lookup = 1 credit. Never more.
Same phone in three different formats? Collapses to one paid lookup. Repeat numbers from a recent batch hit the cache, and cached lookups are free.
REST API + signed webhooks
Bearer-token API with per-key scopes and expiry. Webhooks signed with HMAC-SHA256, retried and redeliverable. Idempotency-Key supported.
Spend cap that stops
Hard daily spend ceiling. No negative balance, even under contention. Refunds on hard-fails.
Async batch processing
Upload once, watch progress, then download full results, SMS-ready rows, call-ready rows, or a deduped export.
Cached lookups are free
Recently-cleaned numbers don't cost a credit when they repeat across batches. We serve them straight from cache.
The same product, behind a clean REST API.
Every web-app feature is also a /v1 endpoint. Bearer-token auth with per-key scopes and expiry. Signed webhooks for batch events with automatic retry and manual redelivery.
curl https://api.phonelistcleaner.com/v1/lookup \
-H "Authorization: Bearer plc_xxx" \
-d '{"phone":"+14155552671"}'{
"e164": "+14155552671",
"country": "US",
"line_type": "mobile",
"carrier": "Verizon",
"sms_ready": true,
"cache": "miss",
"credit": 1
}Upload to clean list in three steps.
Buy credits
Prepaid packs from $19. No subscription, no per-month minimum, no surprise auto-renewal.
Upload or API
Drop a file in the dashboard, or call /v1/lookup and /v1/lookup/bulk from your code.
Download or webhook
Download full results, SMS-ready rows, or filtered presets; automation can use batch.completed webhooks.
Prepaid packs. Everything included.
One credit cleans one number. Duplicates and malformed rows are free. Same features in every pack, pick the size that matches your list.
- REST API + Bearer auth
- Signed webhooks (HMAC-SHA256)
- Full, SMS-ready, and filtered CSV exports
- Upload CSV, TSV, TXT, XLSX, or JSON
- Cached lookups (free)
- Line type, carrier, validity, country
- Idempotency keys + retry-safe API
- Daily spend cap protection
- No subscription, no expiry
Need annual prepaid or a custom volume? Contact us.
Frequently asked
How do you keep the price low?
Local parsing catches obviously-bad rows before a paid lookup is ever made, deduplication collapses repeats to a single billed call, and cached lookups (from recent batches) are free. You only pay for valid, unique numbers we look up fresh.
Do you sell my list?
No. Your CSV is stored encrypted, served via short-lived signed URLs, and never visible to other customers. Phone numbers are masked in our internal logs.
What if a number fails?
If a lookup hard-fails on a row, we refund the credit. You never pay for a failed lookup.
Can I use it from my code?
Yes, every dashboard feature is also a /v1 endpoint. Bearer-token auth, scoped keys, signed webhooks for batch events.