US + Canada · Phone Validation API

Phone validation intelligence in one API call

CheckThatPhone is a phone number validation API for US and Canadian numbers that returns validation, a live carrier dip, geoIP, an optional TCPA litigator scrub, landline-SMS reachability and a free state-DNC check in one call. No demos to book, no sales calls.

  • Real-time carrier data
  • API key in seconds
POST /v1/lookup 32 fields
{
  "success": true,
  "credits_used": 2,
  "data": {
    "subscriber": "2125550147",
    "optDate": "2026-05-23T21:56:03.699Z",
    "action": "unsubscribe",
    "deliverable": "false",
    "reason": "Associated with TCPA Litigator DO NOT CONTACT",
    "nanpType": "mobile",
    "blackList": "true",
    "ipResult": "valid-v4",
    "dip": "success",
    "dipLrn": "2125550147",
    "dipPorted": "false",
    "dipOcn": "9104",
    "dipCarrier": "Verizon New York",
    "dipCarrierSubType": "RBOC",
    "dipCarrierType": "landline",
    "dipMessagingLookup": "false",
    "dipMessagingEnabled": "false",
    "litigator": "true",
    "litigator_type": "litigator",
    "litigator_name": "Jane Example",
    "dncStateChecked": "true",
    "dncStateResult": "STATE DNC",
    "dncComplainerChecked": "true",
    "dncComplainerResult": "",
    "geoCountry": "US",
    "geoState": "UT",
    "geoCity": "Salt Lake City",
    "geoMetro": 770,
    "geoSource": "ip",
    "timezone": "America/Denver",
    "tzOffset": 7,
    "error": "false"
  }
}
600M+
Requests served by our validation network
~32%
Non-mobile (landline or VoIP) across all lookups
~1.5%
Flagged as TCPA litigators when scrub is enabled
~7%
Landlines that are SMS-capable when checked

Built for teams in

Test a phone number

Enter a US or Canada phone number. Limited free lookups per visitor.

Six signals. One API call.

Validation, live carrier dip, geoIP, TCPA litigator scrub, landline-SMS reachability, and a free state-DNC scrub. Three optional add-ons when you need them.

01 / 06

Phone validation

Is the number real? Is it active? Is it deliverable? Returns line type, deactivation date, deliverability flag, and a summary recommendation your code can branch on.

  • nanpType
  • deliverable
  • action
Line type lookup API →

02 / 06

Carrier DIP

A live carrier dip at lookup time, not a cached lookup table. Returns the current carrier, line type, OCN, LRN, and porting status, even on numbers that ported last night.

  • dipCarrier
  • dipCarrierType
  • dipOcn
  • dipLrn
  • dipPorted
Carrier lookup API →

03 / 06

GeoIP location

State, city, metro, timezone (and IANA tz string). Always included, never an add-on. Route the lead to the right rep before anyone picks up the phone.

  • geoState
  • geoCity
  • geoMetro
  • timezone
Sales lead routing use case →

04 / 06

TCPA litigator scrub

Optional +1 credit

One serial plaintiff can turn a single text into a $500 to $1,500 claim. We screen against industry-leading litigation data (the same caliber the largest TCPA-compliance platforms rely on) built from federal and state court records and demand-letter activity, refreshed daily. A match flips the recommendation to unsubscribe.

  • litigator
  • litigator_type
  • litigator_name
TCPA litigator scrub use case →

05 / 06

Landline-SMS reachability

Optional +1 credit on landlines

About 7% of the landlines we check are SMS-capable. Five dipMessaging* fields surface the messaging carrier when one exists. Skipped automatically on mobile so you only pay when it actually applies.

  • dipMessagingEnabled
  • dipMessagingProvider
  • dipMessagingLookup
Landline SMS lookup →

06 / 06

State DNC & complainer checks

Optional Free

Screens against state do-not-call registries (38 states plus DC, refreshed weekly) and our national list of ~700k telemarketing complainers. Each check reports whether it ran, so in the 12 states we don't hold data for, "no match" never quietly means "not checked".

  • dncStateChecked
  • dncStateResult
  • dncComplainerResult
State DNC scrub use case →

More

See all features →

Every field returned by the API, every opt-in flag, every error code, every edge case.

500 free lookups every month. Production key in seconds.

Get API key

Built for outbound teams that can't afford a wrong number.

Bundled by default

Six signals from one endpoint. No second vendor for scrubs or SMS reachability.

Real-time, not list-based

Every lookup runs a live carrier dip, not a cached list. Current carrier, even on freshly ported numbers.

Priced for developers

As low as $0.0009 per call at volume. Free tier: 500 lookups a month, hard-capped (no overage surprises).

See pricing →

We don't keep your numbers

Phone numbers pass to the lookup and are discarded. Never stored, cached, or logged.

Two ways to call

Got a list? Skip the SDK.

Live API

One call per number. Real-time response. Best for new-lead arrival, signup forms, and any workflow where the answer informs the very next action.

CSV upload

Drag a file from your dashboard. We deduplicate, look up every unique number, and hand back a results CSV with every field per row — no SDK or batching code. Up to 1M rows per file.

Common questions

What does the TCPA litigator flag actually do?

Set litigatorFilter: true and we return three litigator fields plus an automatic unsubscribe recommendation on a match. You skip outreach on the strength of one boolean, no separate API call, no separate vendor.

Where does the litigator data come from?

From industry-leading litigation-data systems (the same caliber of data the largest TCPA-compliance platforms run on) built from federal and state court records, demand-letter activity, and known professional-filer numbers, and refreshed daily. We never repackage stale lists.

Does the API check do-not-call lists?

Yes — set dncState: true and dncComplainer: true (both free) and we check state do-not-call registries and our national list of ~700k telemarketing complainers. We hold registry data for 38 states plus DC, refreshed weekly; for the 12 states we don't cover, the state check reports that it didn't run instead of letting a blank read as clear. The federal DNC registry is not included — scrub it separately.

How fresh is the carrier data?

Every lookup runs a live carrier dip, not a cached NANP table or a quarterly OCN snapshot. That's why we can return the current carrier, line type, and porting status even on a number that's just been ported. No stale offline lists.

Do you store the numbers I look up?

No. Phone numbers are passed to the carrier-data layer for the lookup and discarded. Not stored, not cached, not logged. Our usage analytics record metadata only, never the phone number itself.

What about international numbers?

US and Canada (NANP) only, a deliberate scope choice, not a limitation we'll fix. For EU or APAC numbers, use libphonenumber plus a regional vendor.

What happens if my lookup fails?

credits_used: 0. Your dashboard counter doesn't move. We bill for successful work.

Do I need a credit card to start?

Yes, we ask for a card to verify your account and stop sign-up farming. We verify it with your bank without charging it, so no payment is ever taken. The Free plan is hard-capped at 500 lookups/month with no overage, so we never bill you for usage unless you upgrade to a paid plan.

How do I verify thousands of numbers at once?

Upload a CSV from your dashboard, up to 1M rows per file. We deduplicate before billing, return the same fields as the live API, and price it per unique number, same as the live API.

Try it on your real numbers.

500 free lookups a month. Production key in 60 seconds.

Get my API key