Identity & Verification ยท DomScan product

Phone Number Intelligence API

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.

What you get

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.

SynchronousBulkRESTMCPSDKInteractive tool

Choose this product when

Who it is for

Use the suite to improve form handling, prioritize manual review, enrich organizations, and connect website-declared assets.

Choose this product when

Choose this to parse, format, and assess public numbering and line-type signals. It does not prove reachability, ownership, or user identity.

What you get

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.

Endpoints

Review the supported operations, inputs, outputs, execution modes, and response limits before integrating.

POST /v1/phone/validate View API reference
POST /v1/phone/validate/bulk View API reference

Credits and authentication

1 Authentication required. Check the operation reference for the exact cost and any per-item pricing.

Example operation

Use documented operations to collect, assess, enrich, verify, compare, protect, or monitor public evidence.

POST /v1/phone/validate

Body Parameters

Parameter Type required
phone string required
default_country string optional
expected_country string optional
dialing_from_country string optional
language string optional

Response Fields

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

Example Request

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"
}'

Example Response

{
  "credits_used": 1,
  "input": "example",
  "normalized_input": "example",
  "kind": "phone_number",
  "valid": true,
  "possible": false,
  "status": "valid",
  "recommendation": "accept",
  "validation_level": "numbering_plan",
  "reason": "DEFAULT_COUNTRY_REQUIRED",
  "warnings": [
    "COUNTRY_MISMATCH"
  ],
  "number": {
    "e164": "+34612345678",
    "international": "+34 612 34 56 78",
    "national": "612 34 56 78",
    "rfc3966": "tel:+34612345678",
    "national_number": "612345678",
    "extension": null,
    "country": "ES",
    "country_name": "Spain",
    "country_calling_code": "34",
    "possible_countries": [
      "ES"
    ],
    "country_match": false,
    "type": "fixed_line",
    "non_geographic": false
  },
  "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": false,
    "third_party_requests": 0
  },
  "intelligence": {
    "status": "available",
    "kind": "phone_number",
    "reason": "example",
    "coverage": {
      "country": "US",
      "level": "global_numbering_metadata",
      "global_numbering_metadata": false,
      "official_snapshot_available": true,
      "official_allocation_match": false,
      "official_source_ids": [
        "example"
      ],
      "matching_source_ids": [
        "example"
      ],
      "current_carrier_lookup": false
    },
    "location": {
      "label": "Madrid",
      "country_name": "Spain",
      "country": "ES",
      "language": "es",
      "granularity": "numbering_plan_area",
      "current_physical_location": false
    },
    "possible_time_zones": {
      "values": [
        "Europe/Madrid"
      ],
      "current_location": false,
      "inference": "number_prefix"
    },
    "original_prefix_carrier": {
      "name": "Vodafone",
      "source_id": "nanpa_us",
      "evidence": "offline_prefix_metadata",
      "current_carrier": false,
      "portability_may_change_carrier": false
    },
    "portability": {
      "region_supported": false,
      "current_port_checked": false
    },
    "dialing": {
      "from_country": "US",
      "international": "011 34 612 34 56 78",
      "mobile": "+34 612 34 56 78",
      "internationally_diallable": false
    },
    "number_details": {
      "geographical": false,
      "geographical_area_code": "example",
      "geographical_area_code_length": 1,
      "national_destination_code": "example",
      "national_destination_code_length": 1,
      "subscriber_number_length": 1,
      "mobile_token": "example"
    },
    "service_signals": {
      "number_type": "fixed_line",
      "geographical": false,
      "toll_free": false,
      "premium_rate": false,
      "shared_cost": false,
      "voip": false,
      "personal_number": false,
      "likely_sms_capable": false
    },
    "short_number": {
      "region": "ES",
      "possible": false,
      "valid": true,
      "emergency": false,
      "connects_to_emergency": false,
      "sms_service": false,
      "carrier_specific": false,
      "expected_cost": "toll_free"
    },
    "regulator_allocations": [
      {
        "authority": "CNMC",
        "country": "ES",
        "matched_prefix": "912",
        "matched_range_end": "example",
        "match_kind": "prefix",
        "category": "geographic",
        "status": "assigned",
        "original_assignee": "Example Telecom",
        "operator_code": "example",
        "region": "Madrid",
        "service_description": "example",
        "assigned_on": "2026-08-27",
        "effective_on": "2026-08-27",
        "expires_on": "2026-08-27",
        "current_operator": false,
        "portability_included": false,
        "individual_number_assignment_checked": false,
        "source_id": "cnmc",
        "source_file": "example",
        "details": {}
      }
    ],
    "sources": [
      {
        "id": "google_libphonenumber",
        "name": "Google libphonenumber metadata",
        "type": "offline_metadata",
        "url": "https://example.com",
        "version": "9.0.34",
        "updated_at": "2026-08-27T12:00:00Z",
        "retrieved_at": "2026-08-27T12:00:00Z",
        "age_days": 1,
        "record_count": 1,
        "license": "Apache-2.0",
        "license_url": "https://example.com",
        "attribution": "example"
      }
    ],
    "warnings": [
      "example"
    ],
    "relay": {
      "configured": false,
      "used": false,
      "persisted": false
    }
  },
  "limitations": [
    "example"
  ],
  "metadata": {
    "engine": "libphonenumber-js/max",
    "metadata_basis": "Google libphonenumber numbering plans"
  }
}

Limits and evidence boundaries

Results describe observed public evidence and its provenance.
Bulk operations process multiple supported inputs while preserving documented item-level outcomes.
Coverage is bounded by the documented inputs, budgets, sources, and response limits.
Public signals do not prove legal identity or ownership.
Validation does not prove that a phone number is active, reachable, or assigned to a subscriber.

Reviewed 2026-08-22

Frequently asked questions

Where can I find the Phone Number Intelligence request and response reference?

Use the API reference for Phone Number Intelligence to review parameters, response fields, examples, status codes, and supported operation modes.

How should I interpret unknown or incomplete results from Phone Number Intelligence?

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.

How is Phone Number Intelligence priced?

Pricing depends on the operation and execution mode. Check the endpoint reference for the current credit cost, authentication requirement, and per-item rules.