State do-not-call scrub for outbound calling and SMS
The federal Do-Not-Call registry gets all the attention, but it is not the only list that can cost you. Most US states run their own do-not-call registries, several with penalties that are enforced separately from — and on top of — federal exposure. And beyond the registries sits a quieter risk: numbers whose owners have a documented history of filing DNC and TCPA complaints, who are disproportionately likely to file the next one against you.
Most teams scrub state registries late, rarely, or never, because it traditionally means
buying and merging per-state files on your own schedule. The dncOther add-on
folds both checks into the lookup you are already making — and it's free.
The fix: one boolean, zero extra credits
Enable dncOther: true on any request to POST /v1/lookup (or the
matching option on a bulk CSV job). We screen the number against state do-not-call registry
data covering 40 states, refreshed weekly, and against our national
complainer list of roughly 700,000 numbers with documented DNC/TCPA complaint
history. Four fields come back alongside the normal carrier data. credits_used
does not change.
What you get back
| Field | Type | Example | Meaning |
|---|---|---|---|
dncOtherChecked | string | "true" | "true" when the scrub ran; "error" when it couldn't complete — treat the other fields as unavailable, never as clear. |
dncStateResult | string | "STATE DNC" | Set when the number appears on its state's do-not-call registry; empty otherwise. Only read empty as "clear" when dncStateCovered is "true". |
dncComplainerResult | string | "DNC COMPLAINER" | Set when the number is on our national complainer list. Nationwide — unaffected by state coverage. |
dncStateCovered | string | "true" | Whether the number's state registry is in our data, derived from the area code. "false" means the state wasn't checked — scrub it yourself. |
See the State DNC & Complainers field group in the docs for the full reference.
The honest part: coverage
We hold registry data for 40 states. Eleven states — Florida, Colorado, Indiana, Massachusetts, Missouri, Pennsylvania, Texas, Wyoming, Louisiana, Oklahoma, and Tennessee — only distribute their lists to organizations that register with the state directly, so they are not in our data. A blank result for a Dallas number does not mean the number is clear; it means Texas wasn't checked.
Most data vendors let that ambiguity ride. We don't: dncStateCovered is computed
on every scrubbed lookup from the number's area code (deliberately not from IP-based
geolocation), so your suppression logic can branch on it explicitly — suppress on a
match, trust a clear result in covered states, and fall back to your own per-state scrub file
for the eleven others.
A complete request
curl --request POST \
--url 'https://api.checkthatphone.com/v1/lookup' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"phone": "8182925409",
"dncOther": true
}' A state-registry match looks like this:
{
"success": true,
"credits_used": 1,
"data": {
"subscriber": "8182925409",
"optDate": "2026-08-13T17:01:48.188Z",
"action": "send",
"deliverable": "true",
"nanpType": "mobile",
"blackList": "false",
"dip": "success",
"dipLrn": "8182925409",
"dipPorted": "false",
"dipOcn": "6010",
"dipCarrierSubType": "WIRELESS",
"dipCarrier": "AT&T",
"dipCarrierType": "mobile",
"dncOtherChecked": "true",
"dncStateResult": "STATE DNC",
"dncComplainerResult": "",
"dncStateCovered": "true",
"geoState": "CA",
"geoCity": "agoura hills",
"geoCountry": "US",
"timezone": "America/Los_Angeles",
"tzOffset": 8,
"geoSource": "area-code",
"error": "false",
"smsEligible": "true"
}
}
Notice two things: credits_used: 1 — the scrub added nothing to the bill
— and action is still send. A DNC match is informational by
design: whether a registered number is contactable depends on consent you may already hold
(an existing business relationship, prior express written consent), so the routing decision
stays yours.
How to wire it up
1. Turn it on everywhere (recommended)
It's free, so the simplest posture is dncOther: true on every lookup you already
make. Suppress on dncStateResult or dncComplainerResult matches
unless you hold documented consent, and log dncStateCovered with the result for
your audit trail.
2. Bulk scrub before a campaign
Tick the State DNC & complainers scrub option on a bulk CSV upload and the result file carries the four columns for every row. Registry data refreshes weekly, so re-scrub long-running lists on at least that cadence.
3. Layer it with the litigator scrub
The litigator filter catches professional plaintiffs; the DNC scrub catches registered consumers and complaint-history numbers. They overlap less than you'd hope, which is exactly why running both is the standard posture for outbound compliance.
Inline FAQ
Why is this add-on free when the others cost a credit?
The state-DNC and complainer checks run against data we already hold, in the same call as the carrier DIP — there is no per-lookup cost on our side worth metering. The litigator and landline-SMS add-ons query separate paid data layers, which is why those carry a surcharge.
Which states are covered?
40 states, refreshed weekly. The 11 states we do not hold registry data for are Florida, Colorado, Indiana, Massachusetts, Missouri, Pennsylvania, Texas, Wyoming, Louisiana, Oklahoma, and Tennessee — those registries require direct registration with the state. dncStateCovered tells you per number which situation you are in.
Does a DNC match change the action field?
No. Unlike a litigator hit, a DNC match never rewrites action — the fields are informational, because whether a registered number is contactable depends on your consent posture (an existing business relationship or prior express consent can permit contact). Your suppression logic decides.
Is the federal Do-Not-Call registry included?
No. The federal registry is outside what this add-on can check — you must scrub against it separately, whatever your existing process for that is. This add-on covers the state-level registries and complainer history that most teams skip.
What this isn't
This is not federal DNC compliance — we do not check the national registry, and you must honor it through your own scrub process. It is also not a consent record: a number absent from every list can still be wrong to contact without underlying consent, and a number on a state registry can be fine to contact with it. Treat the scrub as a defensive data layer feeding your compliance logic, not as the logic itself.
Pricing for this use case
Free, on every plan, including the free tier and bulk CSV jobs. A scrubbed lookup costs exactly what the lookup costs — 1 credit — and the flag adds nothing on top. There is no catch to look for: the data layers this scrub reads are ones we already maintain, so we'd rather every campaign that runs through us be scrubbed than meter it.