Who it is for
Use the suite to improve form handling, prioritize manual review, enrich organizations, and connect website-declared assets.
Try a product, outcome, endpoint path, or API topic.
Parse, validate, classify, and format global phone numbers, then add offline location, time zone, original prefix carrier, dialing, short-code, and regulator allocation context when available.
Parse, validate, classify, and format global phone numbers, then add offline location, time zone, original prefix carrier, dialing, short-code, and regulator allocation context when available.
Use the suite to improve form handling, prioritize manual review, enrich organizations, and connect website-declared assets.
Choose this to parse, format, and assess public numbering and line-type signals. It does not prove reachability, ownership, or user identity.
Parse, validate, classify, and format global phone numbers, then add offline location, time zone, original prefix carrier, dialing, short-code, and regulator allocation context when available.
Review the supported operations, inputs, outputs, execution modes, and response limits before integrating.
1 Authentication required. Check the operation reference for the exact cost and any per-item pricing.
Use documented operations to collect, assess, enrich, verify, compare, protect, or monitor public evidence.
| Parameter | Type | required |
|---|---|---|
| phone | string | required |
| default_country | string | optional |
| expected_country | string | optional |
| dialing_from_country | string | optional |
| language | string | optional |
| Field | Type |
|---|---|
input |
string |
normalized_input |
string |
kind |
string |
valid |
boolean |
possible |
boolean |
status |
string |
recommendation |
string |
validation_level |
string |
reason |
string | null |
warnings[] |
string[] |
number |
object |
number.e164 |
string |
number.international |
string |
number.national |
string |
number.rfc3966 |
string |
number.national_number |
string |
number.extension |
string | null |
number.country |
string | null |
number.country_name |
string | null |
number.country_calling_code |
string |
number.possible_countries[] |
string[] |
number.country_match |
boolean | null |
number.type |
string |
number.non_geographic |
boolean |
live_checks |
object |
live_checks.assignment |
string |
live_checks.reachability |
string |
live_checks.current_carrier |
string |
live_checks.subscriber_identity |
string |
live_checks.porting |
string |
privacy |
object |
privacy.upstream_requests |
integer |
privacy.telecom_provider_queried |
boolean |
privacy.persisted |
boolean |
privacy.domscan_edge_relay_used |
boolean |
privacy.third_party_requests |
integer |
intelligence |
object |
intelligence.status |
string |
intelligence.kind |
string | null |
intelligence.reason |
string | null |
intelligence.coverage |
object |
intelligence.coverage.country |
string | null |
intelligence.coverage.level |
string |
intelligence.coverage.global_numbering_metadata |
boolean |
intelligence.coverage.official_snapshot_available |
boolean |
intelligence.coverage.official_allocation_match |
boolean |
intelligence.coverage.official_source_ids[] |
string[] |
intelligence.coverage.matching_source_ids[] |
string[] |
intelligence.coverage.current_carrier_lookup |
boolean |
intelligence.location |
object |
intelligence.location.label |
string | null |
intelligence.location.country_name |
string | null |
intelligence.location.country |
string | null |
intelligence.location.language |
string |
intelligence.location.granularity |
string |
intelligence.location.current_physical_location |
boolean |
intelligence.possible_time_zones |
object |
intelligence.possible_time_zones.values[] |
string[] |
intelligence.possible_time_zones.current_location |
boolean |
intelligence.possible_time_zones.inference |
string |
intelligence.original_prefix_carrier |
object |
intelligence.original_prefix_carrier.name |
string | null |
intelligence.original_prefix_carrier.source_id |
string | null |
intelligence.original_prefix_carrier.evidence |
string |
intelligence.original_prefix_carrier.current_carrier |
boolean |
intelligence.original_prefix_carrier.portability_may_change_carrier |
boolean |
intelligence.portability |
object |
intelligence.portability.region_supported |
boolean |
intelligence.portability.current_port_checked |
boolean |
intelligence.dialing |
object |
intelligence.dialing.from_country |
string | null |
intelligence.dialing.international |
string | null |
intelligence.dialing.mobile |
string | null |
intelligence.dialing.internationally_diallable |
boolean |
intelligence.number_details |
object |
intelligence.number_details.geographical |
boolean |
intelligence.number_details.geographical_area_code |
string | null |
intelligence.number_details.geographical_area_code_length |
integer |
intelligence.number_details.national_destination_code |
string | null |
intelligence.number_details.national_destination_code_length |
integer |
intelligence.number_details.subscriber_number_length |
integer |
intelligence.number_details.mobile_token |
string | null |
intelligence.service_signals |
object |
intelligence.service_signals.number_type |
string |
intelligence.service_signals.geographical |
boolean |
intelligence.service_signals.toll_free |
boolean |
intelligence.service_signals.premium_rate |
boolean |
intelligence.service_signals.shared_cost |
boolean |
intelligence.service_signals.voip |
boolean |
intelligence.service_signals.personal_number |
boolean |
intelligence.service_signals.likely_sms_capable |
boolean | null |
intelligence.short_number |
object |
intelligence.short_number.region |
string |
intelligence.short_number.possible |
boolean |
intelligence.short_number.valid |
boolean |
intelligence.short_number.emergency |
boolean |
intelligence.short_number.connects_to_emergency |
boolean |
intelligence.short_number.sms_service |
boolean |
intelligence.short_number.carrier_specific |
boolean |
intelligence.short_number.expected_cost |
string |
intelligence.regulator_allocations[] |
object[] |
intelligence.regulator_allocations[] |
object |
intelligence.regulator_allocations[].authority |
string |
intelligence.regulator_allocations[].country |
string |
intelligence.regulator_allocations[].matched_prefix |
string |
intelligence.regulator_allocations[].matched_range_end |
string | null |
intelligence.regulator_allocations[].match_kind |
string |
intelligence.regulator_allocations[].category |
string |
intelligence.regulator_allocations[].status |
string |
intelligence.regulator_allocations[].original_assignee |
string | null |
intelligence.regulator_allocations[].operator_code |
string | null |
intelligence.regulator_allocations[].region |
string | null |
intelligence.regulator_allocations[].service_description |
string | null |
intelligence.regulator_allocations[].assigned_on |
string | null |
intelligence.regulator_allocations[].effective_on |
string | null |
intelligence.regulator_allocations[].expires_on |
string | null |
intelligence.regulator_allocations[].current_operator |
boolean |
intelligence.regulator_allocations[].portability_included |
boolean |
intelligence.regulator_allocations[].individual_number_assignment_checked |
boolean |
intelligence.regulator_allocations[].source_id |
string |
intelligence.regulator_allocations[].source_file |
string | null |
intelligence.regulator_allocations[].details |
object |
intelligence.sources[] |
object[] |
intelligence.sources[] |
object |
intelligence.sources[].id |
string |
intelligence.sources[].name |
string |
intelligence.sources[].type |
string |
intelligence.sources[].version |
string | null |
intelligence.sources[].updated_at |
string | null |
intelligence.sources[].retrieved_at |
string | null |
intelligence.sources[].age_days |
integer | null |
intelligence.sources[].record_count |
integer | null |
intelligence.sources[].license |
string | null |
intelligence.sources[].license_url |
string | null |
intelligence.sources[].url |
string |
intelligence.sources[].attribution |
string | null |
intelligence.warnings[] |
string[] |
intelligence.relay |
object |
intelligence.relay.configured |
boolean |
intelligence.relay.used |
boolean |
intelligence.relay.persisted |
boolean |
limitations[] |
string[] |
metadata |
object |
metadata.engine |
string |
metadata.metadata_basis |
string |
credits_used |
integer |
curl -X POST "https://domscan.net/v1/phone/validate" \
-H "Content-Type: application/json" \
-H "X-API-Key: $DOMSCAN_API_KEY" \
-d '{
"phone": "+34 612 345 678",
"default_country": "ES",
"expected_country": "ES",
"dialing_from_country": "ES",
"language": "es"
}'const response = await fetch("https://domscan.net/v1/phone/validate", {
method: "POST",
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
"phone": "+34 612 345 678",
"default_country": "ES",
"expected_country": "ES",
"dialing_from_country": "ES",
"language": "es"
}),
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.post(
"https://domscan.net/v1/phone/validate",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
json={
"phone": "+34 612 345 678",
"default_country": "ES",
"expected_country": "ES",
"dialing_from_country": "ES",
"language": "es",
},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"phone": "+34 612 345 678",
"default_country": "ES",
"expected_country": "ES",
"dialing_from_country": "ES",
"language": "es"
}`)
req, err := http.NewRequest(http.MethodPost, "https://domscan.net/v1/phone/validate", body)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/phone/validate")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({
"phone" => "+34 612 345 678",
"default_country" => "ES",
"expected_country" => "ES",
"dialing_from_country" => "ES",
"language" => "es"
})
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body)){
"input": "+44 20 7946 0123",
"normalized_input": "+44 20 7946 0123",
"validation_level": "numbering_plan",
"live_checks": {
"assignment": "not_checked",
"reachability": "not_checked",
"current_carrier": "not_checked",
"subscriber_identity": "not_checked",
"porting": "not_checked"
},
"privacy": {
"upstream_requests": 0,
"telecom_provider_queried": false,
"persisted": false,
"domscan_edge_relay_used": true,
"third_party_requests": 0
},
"intelligence": {
"status": "available",
"kind": "phone_number",
"reason": null,
"coverage": {
"country": "GB",
"level": "global_numbering_metadata",
"global_numbering_metadata": true,
"official_snapshot_available": false,
"official_allocation_match": false,
"official_source_ids": [],
"matching_source_ids": [],
"current_carrier_lookup": false
},
"location": {
"label": "London",
"country_name": "United Kingdom",
"country": "GB",
"language": "en",
"granularity": "numbering_plan_area",
"current_physical_location": false
},
"possible_time_zones": {
"values": [
"Europe/London"
],
"current_location": false,
"inference": "number_prefix"
},
"original_prefix_carrier": {
"name": null,
"source_id": null,
"evidence": "unavailable",
"current_carrier": false,
"portability_may_change_carrier": true
},
"portability": {
"region_supported": true,
"current_port_checked": false
},
"dialing": {
"from_country": "US",
"international": "011 44 20 7946 0123",
"mobile": "+44 20 7946 0123",
"internationally_diallable": true
},
"number_details": {
"geographical": true,
"geographical_area_code": "20",
"geographical_area_code_length": 2,
"national_destination_code": "20",
"national_destination_code_length": 2,
"subscriber_number_length": 8,
"mobile_token": null
},
"service_signals": {
"number_type": "fixed_line",
"geographical": true,
"toll_free": false,
"premium_rate": false,
"shared_cost": false,
"voip": false,
"personal_number": false,
"likely_sms_capable": null
},
"short_number": null,
"regulator_allocations": [],
"sources": [
{
"id": "google_libphonenumber",
"name": "Google libphonenumber metadata",
"type": "offline_metadata",
"version": "9.0.34",
"license": "Apache-2.0",
"url": "https://github.com/google/libphonenumber"
}
],
"warnings": [
"LOCATION_IS_NUMBERING_PLAN_AREA_NOT_DEVICE_LOCATION",
"CARRIER_IS_ORIGINAL_PREFIX_CARRIER_NOT_CURRENT_CARRIER",
"ALLOCATION_DOES_NOT_PROVE_INDIVIDUAL_ASSIGNMENT",
"NO_CURRENT_PORTABILITY_LOOKUP",
"NO_LIVE_TELECOM_CHECKS"
],
"relay": {
"configured": true,
"used": true,
"persisted": false
}
},
"limitations": [
"NUMBERING_PLAN_ONLY",
"DOES_NOT_PROVE_ASSIGNMENT",
"NO_LIVE_TELECOM_CHECKS"
],
"metadata": {
"engine": "libphonenumber-js/max",
"metadata_basis": "Google libphonenumber numbering plans"
},
"kind": "phone_number",
"valid": true,
"possible": true,
"status": "valid",
"recommendation": "accept",
"reason": null,
"warnings": [],
"number": {
"e164": "+442079460123",
"international": "+44 20 7946 0123",
"national": "020 7946 0123",
"rfc3966": "tel:+442079460123",
"national_number": "2079460123",
"extension": null,
"country": "GB",
"country_name": "United Kingdom",
"country_calling_code": "44",
"possible_countries": [
"GB"
],
"country_match": true,
"type": "fixed_line",
"non_geographic": false
},
"credits_used": 1
}
200 OK400 Bad Request401 Unauthorized402 Payment Required409 HTTP 409422 HTTP 422429 Too Many Requests500 Server ErrorUse the API reference for Phone Number Intelligence to review parameters, response fields, examples, status codes, and supported operation modes.
Unknown or partial results mean that the requested evidence could not be fully determined. Keep the result state, confidence, freshness, and limitations in downstream decisions.
Pricing depends on the operation and execution mode. Check the endpoint reference for the current credit cost, authentication requirement, and per-item rules.
Used by people at these companies