Comparison

CheckThatPhone vs Numverify: porting and deliverability in 2 countries, or validation in 232

CheckThatPhone is a Numverify alternative for US and Canadian numbers when you need the current carrier, whether the number was ported and whether it can take a text. Numverify validates numbers in 232 countries against international numbering plans, from $14.99 a month for 5,000 requests. CheckThatPhone covers only the US and Canada, but runs a live carrier dip on every lookup, from $5 a month for 1,000. Neither is cheaper at every volume: 10,000 lookups a month cost $30 on our 10K plan against $59.99 on Numverify Professional, while 250,000 cost $129.99 on Numverify Enterprise against $250 on our 100K plan. Either way, one CheckThatPhone lookup also includes the ported flag and routing number, recent disconnections, a send-or-not verdict for texts, the time zone and location from your visitor's IP in the same call, which a Numverify request doesn't (what each includes).

If you need numbers from outside North America, or the lowest price per request at certain volumes, Numverify is the better fit. If you call or text North American numbers, the porting, deliverability and compliance fields are what CheckThatPhone adds.

As of October 3, 2026, read from Numverify's own pricing and documentation pages. Each Numverify fact links to the page it came from. A few were read later, on October 10, 2026, and are dated where they appear. Prices change, so check the source before you commit budget. CheckThatPhone is our product. How we compare vendors.

At a glance

 CheckThatPhoneNumverify
Coverage US and Canada (NANP) only 232 countries source
Data source Live carrier dip at lookup time Requests "processed in real time, cross-checked against the latest international numbering plan databases" source
Free plan 500 lookups a month, hard-capped 100 requests a month, non-commercial use, no support source
Paid plans $5 a month for 1,000 lookups up to $450 for 500,000 $14.99 a month for 5,000 requests up to $129.99 for 250,000; custom plans above source
Overage $0.005 down to $0.0009 per lookup $0.011992 (Basic) down to $0.00207984 (Enterprise) per request source
Annual billing 15% off Up to 15% off source
Fields returned Carrier, OCN, routing number, ported flag, line type and sub-type, action, deliverability, deactivation date, location and timezone Valid, local and international format, country, location, carrier, line type (documented response fields) source
Ported numbers dipPorted and dipLrn on every lookup No porting or routing-number field in the documented response source
TCPA litigator scrub Add-on, +1 credit, refreshed daily Not listed on its pricing page source
State DNC and complainer checks Free add-on: 38 states plus DC, refreshed weekly (no federal DNC) Not listed on its pricing page source
Text-enabled landlines Add-on, +1 credit on landlines only Not listed on its pricing page source
List upload CSV upload in the dashboard, up to 1,000,000 rows, deduplicated No batch endpoint in its API reference source
Request POST /v1/lookup, JSON body, bearer API key GET request with access_key and number in the query string source

Cost at different volumes

Base lookups each month, monthly billing, cheapest plan on each side including overage. Numverify figures use the plan prices and overage rates on its pricing page; its Free plan is left out because it is non-commercial.

Lookups a monthNumverifyCheckThatPhone
5,000 $14.99 (Basic) $25 (1K plan)
10,000 $59.99 (Professional) $30 (10K plan)
50,000 $59.99 (Professional) $100 (100K plan)
100,000 $129.99 (Enterprise) $100 (100K plan)
250,000 $129.99 (Enterprise) $250 (100K plan)

Neither is cheaper at every volume: it depends on where your volume falls against each plan's included requests. The bigger difference is what a request includes. Numverify's documented response has no ported flag or routing number, while a live carrier dip returns both, along with the carrier serving the number today.

What one request includes

A lower price per request only compares like with like when the requests return the same data. One CheckThatPhone lookup also includes the ported flag and routing number, recent disconnections, a send-or-not verdict for texts, the time zone and location from your visitor's IP in the same call, which a request to Numverify (every plan) doesn't.

One request includes CheckThatPhone Numverifyevery plan
Current carrier Included: Yes, live carrier dip Included: Yes source
Mobile, landline or VoIP Included: Yes, VoIP as IPES Included: Yes source
Ported flag and routing number Included: Yes Not included: No source
Recently disconnected Included: Yes, last 45 days Not included: No source
Can it take a text Included: Yes: action and reason Not included: No source
State and city Included: Yes, from the area code or the IP Partly: City, state or county, if available source
Time zone Included: Yes Not included: No source
IP geolocation in the same call Included: Yes: pass ip Not included: No source

included included with a limit a separately priced package or API not in the documented request or response

Every documented field, by name

The response fields that describe the number, from each side's own reference. Not listed: copies of the number you sent, format variants, ids, status, error and price fields; on our side also deliverable, doNotSms and tzOffset, which restate other fields. reference docs read October 10, 2026

CheckThatPhone 18 fields

  • action
  • reason
  • deactivationDate
  • blackList
  • smsEligible
  • nanpType
  • nanpCarrier
  • dipLrn
  • dipPorted
  • dipOcn
  • dipCarrier
  • dipCarrierType
  • dipCarrierSubType
  • geoCountry
  • geoState
  • geoCity
  • geoMetro
  • timezone

Numverify 6 fields

  • valid
  • country_code
  • country_name
  • location
  • carrier
  • line_type

Operational terms

Commitments, limits and support, from each side's own published pages. Where a page doesn't state a term, the table says so.

 CheckThatPhoneNumverify
Minimum commitment None: a Free plan, or monthly plans from $5 that you can cancel any time from the billing page pricing terms Monthly plans from $14.99; annual billing up to 15% off source
Free tier or trial 500 lookups a month, hard-capped; card on file, verified with a $0 check and never charged source 100 requests a month, non-commercial use, no support source
Past the plan allowance $0.005 down to $0.0009 per lookup on paid plans, on the next invoice; the Free plan stops at 500 source $0.011992 (Basic) down to $0.00207984 (Enterprise) per request; email alerts at 75%, 90% and 100% of the allowance source read October 10, 2026
Failed or invalid lookups Not charged: a failed lookup returns credits_used: 0, and a malformed number returns HTTP 400 pricing docs Its FAQ: "Accessing any type of numverify API data using a valid API Access Key counts as one API Request" source read October 10, 2026
API access Every plan, Free included: POST /v1/lookup with a bearer API key, plus CSV upload in the dashboard docs bulk GET request with access_key and number in the query string source
Rate limit Not a fixed published number: each account's limit grows with its billing history source Not published
Uptime SLA No contractual uptime SLA in our standard terms; enterprise agreements on request source Its FAQ says uptime "is at around 99.9%", with uptime reports on request source read October 10, 2026
Support Email (hello@checkthatphone.com) and the contact form source Standard (email) support on paid plans, none on Free; optional Platinum Support, billed annually source read October 10, 2026
Unused credits Not published Not published
High volume The 500K plan keeps working past 500,000 at $0.0009 per lookup; a quote form for higher volume source Custom plans above the $129.99 plan (250,000 requests) source

Not published means it isn't stated on the Numverify pages listed under Sources when we read them. It doesn't mean Numverify doesn't offer it. Our column follows the same rule, using only our own pricing, docs, terms and contact pages.

Which one to choose

Choose Numverify if…

  • Your numbers are outside the US and Canada. Numverify lists 232 countries; we cover two. source
  • You need format and country checks on signup forms, where knowing the number is well-formed is enough and porting or compliance data doesn't matter. source
  • Its plans come out lower at your volume in the cost table above. source

Choose CheckThatPhone if…

  • You want more in one call: the ported flag and routing number, recent disconnections, a send-or-not verdict for texts, the time zone and location from your visitor's IP in the same call come with every lookup (compare).
  • You call or text US and Canadian numbers. The current carrier, routing number and ported flag come from a live carrier dip. See the carrier lookup API.
  • You want a deliverability verdict: a single action field ("send", "unsubscribe" or "error") with a reason, plus deactivationDate for recent carrier deactivations.
  • You want compliance screening in the same call: the TCPA litigator scrub (+1 credit) and the free state DNC and complainer checks.
  • You text landlines. About 7% of landlines we check are SMS-capable, and the landline SMS lookup finds them.
  • You clean lists: CSV upload up to 1,000,000 rows, each unique number billed once.

Example request and response

A standard CheckThatPhone lookup:

curl --request POST \
  --url 'https://api.checkthatphone.com/v1/lookup' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"phone": "617-555-0133"}'

An illustrative response (a fictional 555 number; field names and formats match the live API). The fields with no counterpart in Numverify's documented response are the carrier dip fields (dipLrn, dipPorted, dipOcn), action, deliverable and timezone:

{
  "success": true,
  "credits_used": 1,
  "data": {
    "subscriber": "6175550133",
    "optDate": "2026-10-03T15:31:52.640Z",
    "action": "send",
    "deliverable": "true",
    "reason": "",
    "nanpType": "mobile",
    "blackList": "false",
    "dip": "success",
    "dipLrn": "6175550133",
    "dipPorted": "false",
    "dipOcn": "6010",
    "dipCarrier": "AT&T",
    "dipCarrierSubType": "WIRELESS",
    "dipCarrierType": "mobile",
    "geoState": "MA",
    "geoCity": "boston",
    "geoCountry": "US",
    "geoSource": "area-code",
    "timezone": "America/New_York",
    "tzOffset": 5,
    "error": "false"
  }
}

CheckThatPhone vs Numverify: common questions

Is CheckThatPhone a good Numverify alternative?

For US and Canadian numbers where the current carrier, porting status and deliverability matter, yes. For numbers in other countries, no: CheckThatPhone covers only the US and Canada, while Numverify lists 232 countries.

Is Numverify cheaper than CheckThatPhone?

At some volumes. Numverify lists $14.99 a month for 5,000 requests and $129.99 for 250,000; our plans run from $5 for 1,000 lookups to $450 for 500,000. The cost table on this page shows where each one comes out lower. Per request, a CheckThatPhone lookup also includes the ported flag and routing number, recent disconnections, a send-or-not verdict for texts, the time zone and location from your visitor's IP in the same call.

Does Numverify detect ported numbers?

Numverify's documented response fields cover validity, formats, country, location, carrier and line type, with no porting flag or routing number. CheckThatPhone returns dipPorted and dipLrn from a live carrier dip on every lookup.

What changes in the integration?

Numverify is a GET request with your access key and the number in the query string, returning fields such as valid, carrier and line_type. CheckThatPhone is a POST to https://api.checkthatphone.com/v1/lookup with a JSON body and a bearer API key. Official SDKs: npm install checkthatphone and pip install checkthatphone.

Sources

Numverify pages, with the date we read each one:

CheckThatPhone figures come from our pricing page, API documentation and terms of service.

Related

Try it on your list

Free tier: 500 lookups per month, hard-capped. Paid plans start at $5/month.