RND Basic (GET)
curl --request GET \
--url https://dataapi.dncscrub.com/v1.5/Data/RNDBasic \
--header 'loginId: <loginid>'import requests
url = "https://dataapi.dncscrub.com/v1.5/Data/RNDBasic"
headers = {"loginId": "<loginid>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {loginId: '<loginid>'}};
fetch('https://dataapi.dncscrub.com/v1.5/Data/RNDBasic', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dataapi.dncscrub.com/v1.5/Data/RNDBasic",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"loginId: <loginid>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://dataapi.dncscrub.com/v1.5/Data/RNDBasic"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("loginId", "<loginid>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dataapi.dncscrub.com/v1.5/Data/RNDBasic")
.header("loginId", "<loginid>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dataapi.dncscrub.com/v1.5/Data/RNDBasic")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["loginId"] = '<loginid>'
response = http.request(request)
puts response.read_body{
"PhoneNumber": "7075276405",
"IsReassigned": false,
"HasSafeHarbor": true,
"IsSandBox": false
}
Reassigned Scrub
RND Basic (GET)
Query the FCC Reassigned Number Database for single number lookup
GET
/
v1.5
/
Data
/
RNDBasic
RND Basic (GET)
curl --request GET \
--url https://dataapi.dncscrub.com/v1.5/Data/RNDBasic \
--header 'loginId: <loginid>'import requests
url = "https://dataapi.dncscrub.com/v1.5/Data/RNDBasic"
headers = {"loginId": "<loginid>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {loginId: '<loginid>'}};
fetch('https://dataapi.dncscrub.com/v1.5/Data/RNDBasic', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dataapi.dncscrub.com/v1.5/Data/RNDBasic",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"loginId: <loginid>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://dataapi.dncscrub.com/v1.5/Data/RNDBasic"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("loginId", "<loginid>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dataapi.dncscrub.com/v1.5/Data/RNDBasic")
.header("loginId", "<loginid>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dataapi.dncscrub.com/v1.5/Data/RNDBasic")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["loginId"] = '<loginid>'
response = http.request(request)
puts response.read_body{
"PhoneNumber": "7075276405",
"IsReassigned": false,
"HasSafeHarbor": true,
"IsSandBox": false
}
Query the FCC Reassigned Number Database (RND) to check if a phone number has been reassigned after a given date.
For comprehensive coverage, especially with older consent dates, consider using TCPA Authority instead.
The FCC Reassigned Number Database only has complete data after January 27,
2021. Numbers with consent dates prior to this date will typically return a
blank
IsReassigned value indicating insufficient data.Request
Headers
string
required
Your API Key (LoginId from your DNCScrub account)
Query Parameters
string
required
10-digit North American phone number (without leading 1 or +)
string
required
Consent date to check reassignment against. Supported formats:
MM/DD/YYYY,
YYYY-MM-DD, MM/DD/YY, or YYYYMMDDboolean
default:"false"
(Optional) Set to
true to use sandbox mode for testing (returns random
results)string
Project identifier for tracking purposes
Example Request
curl --location --request GET \
'https://dataapi.dncscrub.com/v1.5/Data/RNDBasic?phoneNumber=7075276405&date=20211109' \
--header 'loginId: YOUR_API_KEY'
const response = await fetch(
"https://dataapi.dncscrub.com/v1.5/Data/RNDBasic?phoneNumber=7075276405&date=20211109",
{
method: "GET",
headers: { loginId: "YOUR_API_KEY" },
}
);
const data = await response.json();
console.log(data);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("loginId", "YOUR_API_KEY");
var url = "https://dataapi.dncscrub.com/v1.5/Data/RNDBasic?phoneNumber=7075276405&date=20211109";
var response = await client.GetStringAsync(url);
Console.WriteLine(response);
}
{
"PhoneNumber": "7075276405",
"IsReassigned": false,
"HasSafeHarbor": true,
"IsSandBox": false
}
Response Fields
string
The phone number that was checked
boolean | null
Indicates if the phone was reassigned after the consent date based on FCC
data: -
true (or 1) - Reassigned after the date. Do not call. -
false (or 0) - Not reassigned. - null (blank) - Insufficient data in the
FCC database to determine.boolean
true if an FCC safe harbor exemption may be available for this numberboolean
true if the response was generated in sandbox mode (test data), false for production data.Error Responses
| Status Code | Description |
|---|---|
| 400 Bad Request | Invalid phone number format, invalid date format, or missing required parameters |
| 401 Unauthorized | Invalid or missing API key |
Processing the Response
const result = await response.json();
if (result.IsReassigned === true) {
console.log("DO NOT CALL - Number has been reassigned per FCC data");
} else if (result.IsReassigned === false) {
console.log("Safe to call - Number has not been reassigned");
if (result.HasSafeHarbor) {
console.log("FCC Safe Harbor exemption may be available");
}
} else {
console.log(
"Insufficient FCC data - consider using TCPA Authority for older consent dates"
);
}
When to Use RND Basic vs TCPA Authority
| Feature | RND Basic | TCPA Authority |
|---|---|---|
| Data Source | FCC Reassigned Number Database only | Carrier data + FCC data |
| Data Coverage | January 27, 2021 onwards | July 2018 onwards |
| Update Frequency | Monthly | Daily |
| Additional Data | Safe harbor only | Line type, carrier, location, timezone |
| Cost | Lower | Higher |