Skip to content

Spaw vs Veriphone

Veriphone is a phone validation API sold as credit packs or monthly plans, returning validity, carrier, line type and region from national numbering plans, with a 10-credit Current Carrier Lookup read from national portability registries.

The table uses Veriphone's public pricing and documentation pages as checked on 2026-09-27, and Spaw's own pricing page. A row those pages carry no value for is marked "not on the pages read" rather than guessed at, and that is a statement about the reading and not about what Veriphone publishes.

  spaw veriphone
Pricing modelPay-as-you-go credit packs whose credits never expire, or optional plans, billed monthly or yearly, that deposit the same credits every month for less and roll unused plan credits over up to three months' allowance; both through Stripe CheckoutOne-time credit packs that never expire, from 10,000 credits for $24 to 5,000,000 for $999, or monthly plans whose credits reset each month: Starter $12.99 for 10,000, Professional $39 for 50,000, Business $99 for 250,000 and Enterprise $249 for 1,000,000. A standard validation is 1 credit and a Current Carrier Lookup 10
Free tier100 free credits every month, no card required1,000 free credits a month with no card, not carried over; on the free plan a Current Carrier Lookup draws on purchased credits only
Price per 1,000 at about 10k$7.80 (Growth pack: 5,000 credits for $39), or $5.80 on the Growth monthly plan (5,000 credits for $29 a month)$2.40 per 1,000 on the 10,000-credit pack ($24, credits never expire), or $1.30 on the Starter plan (10,000 credits a month for $12.99, reset each month). A Current Carrier Lookup takes 10 credits, so ten times those figures
Price per 1,000 at about 100k$4.49 (Volume pack: 100,000 credits for $449), or $3.49 on the Volume monthly plan (100,000 credits for $349 a month)$1.19 per 1,000 on the 100,000-credit pack ($119), or $0.78 on the Professional plan (50,000 credits a month for $39) and $0.40 on Business (250,000 for $99); packs fall to $0.20 per 1,000 at 5,000,000 credits for $999
Numbers the vendor could not settle billedA valid number costs 1 credit whatever its flags say. The live carrier-network check (hlr: true) is not enabled on the service: hlr_checked answers false and nothing extra is charged.A Current Carrier Lookup that cannot resolve the serving carrier is charged as a standard 1-credit validation ("no result, no surcharge"), and input that is not a phone number answers status "error" and is not charged
Invalid numbers billedNo: invalid numbers are free, including a number in a block the regulator lists as unassigned, and so are repeats within 7 daysYes through the API: a number "verified and found not valid" is "a definitive, charged result". The bulk documentation bills a static-mode file 1 credit per number, with rows that have syntax errors not billed, and prices a current-mode file at "nothing for invalid rows"
Line type sourceThe numbering plan metadata everywhere except the North American plan, where mobiles and landlines share blocks and the plan can only say fixed_line_or_mobile; there the regulator's block holder settles it — a wireless carrier's block is mobile, a virtual-number wholesaler's is voip. line_type_source names which of the two answered.The numbering plan: the default Static mode "reports its original carrier and line type from national numbering-plan data", checked "against the latest numbering plans from the international telecom regulator and national regulators". Current mode adds the carrier and line type serving the number today, from national portability registries.
Numbering plan coveragelibphonenumber metadata for every region it carries, plus the regulators' own allocation tables, each named in the answer with the date of the copy it read. Complete tables, where a geographic number in a block the table leaves out answers unassigned_block: NANPA for the United States (with Puerto Rico, the U.S. Virgin Islands, Guam, American Samoa and the Northern Mariana Islands), the CNAC for Canada, ARCEP for France (with Guadeloupe, St. Barthélemy, St. Martin, Martinique, French Guiana, Réunion, Mayotte and St. Pierre & Miquelon), ACM for the Netherlands and the CRT (formerly the IFT) for Mexico. Partial tables, answered only from the ranges they list (a range listed as free, spare or held in reserve answers unassigned_block), so block_status answers null for a number outside them: Ofcom for the United Kingdom (with Guernsey, Jersey and the Isle of Man), ACMA for Australia, the NAD for New Zealand, UKE for Poland and MIMIT for Italy. Re-synced weekly, NANPA daily; /status lists each table's age. Outside those regions, block_status and is_virtual answer null rather than a guess."All 243 countries and territories" for validation, carrier and line type, "using the official national numbering plans"; Current Carrier Lookup in 239 countries as of 2026-09-24, listed on its coverage page and by a public /v3/coverage/current endpoint
Live network checkReserved behind hlr: true: 4 credits on top of the base credit, only where the network answers, reported in its own reachable, ported, current_carrier and roaming fields. The live carrier-network check (hlr: true) is not enabled on the service: hlr_checked answers false and nothing extra is charged.No device or reachability check described. Current mode, which the API reference calls Veriphone's "live-registry product", "resolves the number's serving carrier from national portability registries" and "does not indicate whether the device is switched on or reachable".
Ported numbersNone from the tables, and the docs say so: carrier and line_type describe the block the number was allocated in, never a later port. Only a live carrier-network check can say who serves a number today.Current Carrier Lookup (mode=current, 10 credits, 1 when unresolved) returns original_carrier, current_carrier, current_line_type and a ported flag from national portability registries, which "update within hours to days of a porting event". For US numbers it "also resolves pooled thousands-blocks that prefix-level data cannot see".
SMS pumping controlsFlags in the risk score, and an SMS policy that turns them into ok_to_send and blocked_by: a fraud and deliverability decision, not consent and not a do-not-call scrub. allowed_countries limits sending to the regions you serve; it is empty (any country) until you set it. range_burst (+40) flags a number once your account has looked up 5 distinct numbers in its 1,000-number range within 60 minutes, and numbers_per_client (+30) once one client address (the client_ip you send, or a browser visitor's own) has tried 5 within 60 minutes, unless Spaw's own IP data places it on a mobile carrier or a corporate proxy, or it is private or reserved. Both count only your own single and browser lookups, so a new account has no history. The range is a heuristic, and in North America a burst more likely means someone testing numbers against a form; the client count does not stop an attack rotated through residential proxies. disposable (+70) flags a number SMS-receiving websites publish and disposable_stale (+40) an old listing; disposable_range (+30) flags an unlisted number in a 1,000-number range holding 10 or more fresh listings. The lists are public and synced daily. The default policy blocks the fictional, disposable, reported_abuse, reported_abuse_widely and premium_rate signals and a risk_score above 60, so neither traffic signal blocks on its own.not on the pages read
Bulk limit100,000 numbers per bulk job, with an HMAC-signed completion webhookCSV upload through the dashboard or the /v3/file endpoints: 100 MB and 1 million rows a file, and a file starts only when the balance covers every row at the mode's full rate
Batch API1,000 numbers per synchronous request, answered in input orderNo batch endpoint in the API reference; the MCP server's verify_phones tool takes up to 50 numbers in one call
Rate limit50 requests per second per key on the phone endpointsNo per-key figure published; the error table lists 429 for a rate limit exceeded, and the home page says the API "scales to thousands of requests per second"
Official SDKsPython, Node.js, PHPnot on the pages read
Data retentionNo history row and no log line carrying the number. What a lookup leaves is keyed and never holds the number: the 7-day marker that makes a repeat free (a second one when the account paid for a live check); for single and browser lookups, a truncated keyed hash of the number filed under keyed hashes of its range and client address for 60 minutes, and the account's lookups per country and hour as counts for 30 days; and a live check's answer, held for a day under a hash of the number. The number itself is kept only in the account's own outcome reports, phone suppression list and monitors. Bulk input lists and result files are deleted with the job after 30 days.API lookups are "processed in memory and are not written to a database, application logs or analytics"; infrastructure request logs keep a GET request's URL, which carries the number, for 30 days (a POST body avoids this). Sending record=true saves a result to the account's verification history, and uploaded CSVs and their results are kept until you delete them, though the page adds that "files may be deleted more than 90 days after upload". Processing is on Google Cloud in the EU (europe-west1).

checked 2026-09-27 · sources: Veriphone pricing, Veriphone home page and FAQ, Veriphone API documentation (getting started and errors), Veriphone API reference (v3), Veriphone bulk verification, Veriphone supported countries, Veriphone free plan, Veriphone data retention, Veriphone code examples, Veriphone MCP server

When Veriphone fits better

Teams that want numbering-plan validation with carrier and line type at a low per-number price, and the carrier serving a number today from portability registries when they pay for it.

  • Current Carrier Lookup returns the original and the current carrier with a ported flag, and an unresolved one is charged as a standard 1-credit validation
  • Credit packs never expire; monthly plan credits reset each month and are spent before pack credits
  • A hosted MCP server at mcp.veriphone.io, and Zapier and Make connectors
  • The documentation says no SDK is needed and gives code examples in cURL and seven languages

When Spaw fits better

Developers who want the numbering plan and the regulators' own allocation tables read for them, the dataset behind every field named in the answer, and an SMS policy that turns the evidence into ok_to_send and blocked_by — a fraud and deliverability decision, not consent and not a do-not-call scrub. Every answer is made on the server: the opt-in live carrier-network check, the one call that would send a number to a partner, is not enabled on the service.

  • Veriphone's Current Carrier Lookup reads national portability registries for the carrier serving a number today; Spaw's carrier and line_type describe the original allocation and never a later port, and the docs say so
  • Veriphone charges for a number it verifies as not valid; Spaw answers an invalid number for free, including one in a block the regulator lists as unassigned, and a repeat within 7 days costs nothing
  • Spaw returns 49 fields in one 1-credit answer, adding the fictional, virtual and disposable flags, a risk score with the signals behind it, and ok_to_send from your account's SMS policy, a fraud and deliverability decision rather than consent or a do-not-call scrub
  • Veriphone's API validates one number per call and takes lists as CSV files; Spaw also answers 1,000 numbers in one synchronous batch request and takes 100,000 per bulk job

Questions

Does Spaw charge for numbers it cannot settle?

Spaw bills per answer. A number the numbering plan and, where one is installed, the regulator's own table agree is assignable costs 1 credit whatever its flags say. An invalid number is free — including one in a block the regulator lists as unassigned — and so is a repeat of the same number within seven days. The live carrier-network check (hlr: true) is not enabled on the service: hlr_checked answers false and nothing extra is charged. Veriphone's pages say: A Current Carrier Lookup that cannot resolve the serving carrier is charged as a standard 1-credit validation ("no result, no surcharge"), and input that is not a phone number answers status "error" and is not charged.

Can I move a list of numbers from Veriphone to Spaw?

Yes. Upload the CSV in the dashboard or POST it to the bulk endpoint, up to 100,000 numbers a job; Spaw keeps your columns, adds the answer columns, and lets you download the whole file or only the valid, invalid, low, medium or high-risk rows. A country column gives each row its own region, so a mixed international list needs no splitting.

Is there a free tier?

Every Spaw account receives 100 free credits at the start of each month with no card on file, and unused free credits accumulate. Veriphone offers: 1,000 free credits a month with no card, not carried over; on the free plan a Current Carrier Lookup draws on purchased credits only.

Try Spaw on your own list

Free credits every month, no card. Upload a list, keep your columns, and download only the rows you want. See the pricing page for every rule, or the Veriphone alternatives.

Get your API key

Veriphone is a trademark of its owner. Spaw is not affiliated with it. Markdown version: /compare/veriphone.md