MCC MNC List API - Mobile Network Codes Database

Complete MCC/MNC list • E.164 & E.212 mapping • Mobile country codes • Network identifiers

MCC MNC List API Documentation

Access the complete MCC MNC list through our free REST API. Get mobile country codes (MCC) and mobile network codes (MNC) for all global operators. Perfect for telecom systems, mobile apps, and network identification. Our MCC MNC database includes PLMN codes, IMSI prefixes, and carrier information.

Base URL: https://destinations-api.telecomsxchange.com

Rate Limit: 100 requests per minute

Authentication: Currently open access (no API key required)

Available APIs: Search destinations, billing updates history, community proposals, health check

Explore SEO-Optimized Directories

Every country, prefix, and MCC/MNC combination now has a dedicated landing page with structured data, FAQ schema, and machine-readable briefs for LLMs.

Search Destinations

GET /search/

Search for telecommunications destinations with various filters.

Example Request

curl "https://destinations-api.telecomsxchange.com/search/?country_name=CAMBODIA&limit=2"

Example Response

{
  "data": [
    {
      "i_destination": 7618595,
      "prefix": "8552346",
      "country_name": "CAMBODIA",
      "description": "Fixed - Metfone",
      "mccmnc": 0,
      "interval_1": 60,
      "interval_n": 1
    },
    {
      "i_destination": 7618596,
      "prefix": "8552446",
      "country_name": "CAMBODIA",
      "description": "Fixed - Metfone",
      "mccmnc": 0,
      "interval_1": 60,
      "interval_n": 1
    }
  ],
  "page": 1,
  "limit": 2,
  "total": 419,
  "total_pages": 210
}

Query Parameters

Parameter Type Description Example
prefix string Phone number prefix (digits and + only) 44, 855, 1
country_name string Country name (exact match, uppercase) CAMBODIA, SUDAN
description string Service description (partial match) Mobile, Fixed
mccmnc integer Mobile Country/Network Code 310260
page integer Page number (default: 1) 1, 2, 3
limit integer Results per page (max: 1000, default: 100) 50, 100, 200

Response Format

{
  "data": [
    {
      "i_destination": 7618643,
      "prefix": "855",
      "country_name": "CAMBODIA",
      "description": "Fixed - Roc",
      "mccmnc": 0,
      "interval_1": 60,
      "interval_n": 1
    }
  ],
  "page": 1,
  "limit": 100,
  "total": 419,
  "total_pages": 5
}

Field Descriptions

Field Description
i_destination Unique identifier for the destination
prefix Phone number prefix
country_name Country name in uppercase
description Service type description
mccmnc Mobile Country Code + Mobile Network Code
interval_1 Initial billing interval (seconds)
interval_n Subsequent billing interval (seconds)

Code Examples

cURL Example

# Search for Cambodia destinations
curl "https://destinations-api.telecomsxchange.com/search/?country_name=CAMBODIA&limit=10"

# Search by prefix
curl "https://destinations-api.telecomsxchange.com/search/?prefix=44&limit=50&page=1"

# Multiple filters
curl "https://destinations-api.telecomsxchange.com/search/?country_name=SUDAN&description=Fixed"

# Get recent billing updates for 2025
curl "https://destinations-api.telecomsxchange.com/updates/?year=2025&limit=20"

# Get updates summary statistics
curl "https://destinations-api.telecomsxchange.com/updates/summary"

# Get updates from last 30 days
curl "https://destinations-api.telecomsxchange.com/updates/recent?days=30"

# Submit a proposal for data change
curl -X POST "https://destinations-api.telecomsxchange.com/proposals/submit" \
  -H "Content-Type: application/json" \
  -d '{
    "i_destination": 7618643,
    "proposed_interval_1": 60,
    "proposal_type": "update",
    "reason_for_change": "Billing changed as of Nov 2024",
    "submitter_email": "user@example.com"
  }'

Python Example

import requests
import json

# API base URL
base_url = "https://destinations-api.telecomsxchange.com"

# Example 1: Search destinations
params = {
    "country_name": "CAMBODIA",
    "limit": 50,
    "page": 1
}

response = requests.get(f"{base_url}/search/", params=params)

if response.status_code == 200:
    data = response.json()
    print(f"Total results: {data['total']}")

    for destination in data['data']:
        print(f"Prefix: {destination['prefix']}, "
              f"Country: {destination['country_name']}, "
              f"Billing: {destination['interval_1']}/{destination['interval_n']}")

# Example 2: Get billing updates
updates_response = requests.get(f"{base_url}/updates/?year=2025")

if updates_response.status_code == 200:
    updates = updates_response.json()

    for update in updates['updates']:
        print(f"{update['update_date']}: {update['country_name']} - "
              f"{update['network_description']} changed to "
              f"{update['new_interval_1']}/{update['new_interval_n']}")

# Example 3: Submit a proposal
proposal_data = {
    "i_destination": 7618643,
    "proposed_interval_1": 60,
    "proposal_type": "update",
    "reason_for_change": "Billing changed",
    "submitter_email": "user@example.com"
}

proposal_response = requests.post(
    f"{base_url}/proposals/submit",
    json=proposal_data
)

if proposal_response.status_code == 201:
    result = proposal_response.json()
    print(f"Proposal submitted: ID {result['id']}")

JavaScript Example

// Using Fetch API
const baseUrl = 'https://destinations-api.telecomsxchange.com';

async function searchDestinations() {
    const params = new URLSearchParams({
        country_name: 'CAMBODIA',
        limit: 50,
        page: 1
    });

    try {
        const response = await fetch(`${baseUrl}/search/?${params}`);
        const data = await response.json();

        console.log(`Total results: ${data.total}`);
        console.log(`Page ${data.page} of ${data.total_pages}`);

        data.data.forEach(destination => {
            console.log(
                `Prefix: ${destination.prefix}, ` +
                `Country: ${destination.country_name}, ` +
                `Billing: ${destination.interval_1}/${destination.interval_n}`
            );
        });
    } catch (error) {
        console.error('Error:', error);
    }
}

searchDestinations();

PHP Example

<?php
$baseUrl = 'https://destinations-api.telecomsxchange.com';

// Search parameters
$params = [
    'country_name' => 'CAMBODIA',
    'limit' => 50,
    'page' => 1
];

// Build URL with query parameters
$url = $baseUrl . '/search/?' . http_build_query($params);

// Make request
$response = file_get_contents($url);
$data = json_decode($response, true);

if ($data) {
    echo "Total results: " . $data['total'] . "\n";
    echo "Page " . $data['page'] . " of " . $data['total_pages'] . "\n\n";

    foreach ($data['data'] as $destination) {
        echo "Prefix: " . $destination['prefix'] . ", ";
        echo "Country: " . $destination['country_name'] . ", ";
        echo "Billing: " . $destination['interval_1'] . "/" . $destination['interval_n'] . "\n";
    }
} else {
    echo "Error fetching data\n";
}
?>

Automating Data Synchronization

Keep your internal records updated by implementing periodic synchronization:

#!/bin/bash
# Example cron job for daily synchronization
# Add to crontab: 0 2 * * * /path/to/sync_destinations.sh

API_URL="https://destinations-api.telecomsxchange.com/search/"
OUTPUT_FILE="/var/data/destinations_$(date +%Y%m%d).json"

# Fetch all destinations with pagination
page=1
while true; do
    response=$(curl -s "${API_URL}?limit=1000&page=${page}")

    # Extract total pages on first iteration
    if [ $page -eq 1 ]; then
        total_pages=$(echo $response | jq '.total_pages')
    fi

    # Save data
    echo $response >> $OUTPUT_FILE

    # Check if more pages exist
    if [ $page -ge $total_pages ]; then
        break
    fi

    page=$((page + 1))
    sleep 1  # Rate limiting
done

echo "Synchronization complete: $OUTPUT_FILE"

Error Handling

Status Code Description Solution
200 Success Request processed successfully
400 Bad Request Provide at least one search parameter
422 Validation Error Check parameter format (e.g., prefix should contain only digits)
429 Rate Limit Exceeded Wait before making more requests (max 100/minute)
500 Internal Server Error Server issue - retry after a few moments

Billing Updates Endpoints

GET /updates/

Get historical billing updates and changes.

Example Request

curl "https://destinations-api.telecomsxchange.com/updates/?year=2025&limit=3"

Example Response

{
  "updates": [
    {
      "id": 2,
      "update_date": "2025-10-01",
      "country_name": "Mauritania",
      "network_description": "Chinguitel Mobile & Other",
      "prefix_affected": "+222",
      "new_interval_1": 60,
      "new_interval_n": 60,
      "change_type": "increase",
      "year_period": 2025,
      "notes": "Billing increment increased"
    },
    {
      "id": 1,
      "update_date": "2025-10-01",
      "country_name": "Sudan",
      "network_description": "Fixed Networks",
      "new_interval_1": 60,
      "new_interval_n": 60,
      "change_type": "increase",
      "year_period": 2025
    }
  ],
  "total": 14,
  "year_filter": 2025
}

Query Parameters

Parameter Type Description Example
year integer Filter by year 2024, 2025
country string Filter by country name (partial match) Cambodia, Sudan
change_type enum Filter by change type increase, decrease, improved, mixed
limit integer Maximum results (max: 500) 50, 100
GET /updates/summary

Get aggregated statistics about billing updates by year and change type.

Example Request

curl "https://destinations-api.telecomsxchange.com/updates/summary"

Example Response

{
  "total_updates": 20,
  "recent_updates": 3,
  "by_year": {
    "2025": {
      "total": 14,
      "by_type": {
        "increase": 8,
        "improved": 5,
        "mixed": 1
      },
      "countries_affected": 3
    },
    "2024": {
      "total": 6,
      "by_type": {
        "increase": 4,
        "improved": 2
      },
      "countries_affected": 2
    }
  },
  "last_updated": "2025-09-26 21:30:26 UTC"
}
GET /updates/recent

Get updates from the last N days.

Example Request

curl "https://destinations-api.telecomsxchange.com/updates/recent?days=30"

Example Response

{
  "updates": [
    {
      "id": 2,
      "update_date": "2025-10-01",
      "country_name": "Mauritania",
      "network_description": "Chinguitel Mobile & Other",
      "prefix_affected": "+222",
      "new_interval_1": 60,
      "new_interval_n": 60,
      "change_type": "increase",
      "year_period": 2025
    }
  ],
  "total": 13,
  "days_included": 30,
  "message": "Showing updates from the last 30 days"
}

Query Parameters

Parameter Type Description Example
days integer Number of days to look back (1-365, default: 30) 7, 30, 90

Community Proposals

POST /proposals/submit

Submit a proposal for data changes. Requires JSON body with proposal details.

Example Request

curl -X POST "https://destinations-api.telecomsxchange.com/proposals/submit" \
  -H "Content-Type: application/json" \
  -d '{
    "i_destination": 7618643,
    "proposed_interval_1": 60,
    "proposed_interval_n": 1,
    "proposal_type": "update",
    "reason_for_change": "Cambodia operator changed billing to 60/1",
    "supporting_evidence": "Carrier notification dated 2024-11-01",
    "submitter_email": "user@example.com",
    "submitter_name": "John Doe",
    "company_name": "Telco Inc"
  }'

Example Response

{
  "id": 1,
  "status": "pending",
  "message": "Thank you for your contribution! Your proposal has been submitted and will be reviewed by our team.",
  "created_at": "2025-09-26T21:10:52.720210"
}
GET /proposals/stats

Get statistics about community proposals.

Example Request

curl "https://destinations-api.telecomsxchange.com/proposals/stats"

Example Response

{
  "total_proposals": 2,
  "pending_review": 2,
  "approved": 0,
  "implemented": 0,
  "recent_submissions": 2,
  "message": "Community contributions help keep our data accurate and up-to-date"
}

System Endpoints

GET /health

Check API and database health status.

Example Request

curl "https://destinations-api.telecomsxchange.com/health"

Example Response

{
  "status": "healthy",
  "database": "connected"
}
GET /api

Get API information and available endpoints.

Example Request

curl "https://destinations-api.telecomsxchange.com/api"

Example Response

{
  "status": "OK",
  "message": "Welcome to the Destination Search API",
  "documentation": "/docs",
  "web_interface": "/web",
  "endpoints": {
    "search": "/search/",
    "health": "/health",
    "updates": "/updates/",
    "proposals": "/proposals/",
    "docs": "/docs",
    "openapi": "/openapi.json",
    "web": "/web",
    "api": "/api"
  }
}
GET /docs

Interactive API documentation (Swagger UI).

GET /openapi.json

OpenAPI 3.0 specification for code generation.

Need Help? For technical support or to report issues, please visit www.telecomsxchange.com/contact

Updates: Billing intervals are regularly updated. Check the API for the latest rates.

TMF685 Resource Inventory Management API

TMF685-compliant API providing comprehensive telecommunications numbering data including E.164/E.212 mappings, up-to-date billing increments per country, international dial codes, mobile country codes (MCC), mobile network codes (MNC), and destination prefixes. Delivered through standardized TMF685 Resource Inventory Management endpoints for seamless enterprise integration.

Base URL: https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4

Standard: TMF685 Resource Inventory Management v4.0

Data Provided: E.164/E.212 mappings, billing increments, MCC/MNC codes, dial codes, prefixes

Resource Type: NumberingMapping (Telecommunications numbering resources)

Authentication: HTTP Basic Authentication required

Credentials: Contact administrator for TMF685 API credentials

Authentication

All TMF685 API endpoints require HTTP Basic Authentication. Include your credentials with each request:

# Authentication format
curl -u "USERNAME:PASSWORD" [URL]

# Or using headers
curl -H "Authorization: Basic [BASE64_ENCODED_CREDENTIALS]" [URL]

Note: Replace USERNAME:PASSWORD with your provided TMF685 API credentials.

API Endpoints

GET /resource

Search Telecommunications Numbering Data - Retrieve E.164/E.212 mappings, billing increments, MCC/MNC codes, dial codes, and destination prefixes through TMF685-compliant NumberingMapping resources with advanced filtering capabilities

Request Parameters

Parameter Type Description Example
fields string Comma-separated fields to return (sparse fieldsets) id,name,resourceCharacteristic
offset integer Number of items to skip (pagination) 0
limit integer Maximum items to return (1-1000) 100
place.name string Filter by country/place name CAMBODIA
relatedParty.name string Filter by operator/network provider Zain
resourceCharacteristic.name string Characteristic name for advanced filtering e164Prefix, mcc, networkType
resourceCharacteristic.value string Characteristic value (requires name) 855, Mobile, 60/60

Search by Country

curl -u "USERNAME:PASSWORD" \
  "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/resource?place.name=CAMBODIA&limit=2"

Search by E.164 Prefix

curl -u "USERNAME:PASSWORD" \
  "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/resource?resourceCharacteristic.name=e164Prefix&resourceCharacteristic.value=855&limit=1"

Search by Billing Format

curl -u "USERNAME:PASSWORD" \
  "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/resource?resourceCharacteristic.name=billingFormat&resourceCharacteristic.value=60/60&limit=2"

Sparse Fields (Specific Fields Only)

curl -u "USERNAME:PASSWORD" \
  "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/resource?fields=id,name,resourceCharacteristic&limit=1"

Response Example

[
  {
    "id": "res-855-7618643",
    "href": "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/resource/res-855-7618643",
    "name": "E164/E212 Mapping – 855 (Fixed - Roc)",
    "description": "E.164 prefix 855 mapped to network Fixed - Roc with billing increments 60/1",
    "category": "NumberingMapping",
    "resourceStatus": "available",
    "lifecycleStatus": "active",
    "version": "2025-10-01",
    "lastUpdate": "2025-10-01T21:24:02.087285Z",
    "validFor": {
      "startDateTime": "2023-01-01T00:00:00Z",
      "endDateTime": null
    },
    "resourceSpecification": {
      "id": "spec-numbering-mapping",
      "href": "https://destinations-api.telecomsxchange.com/tmf/resourceCatalogManagement/v4/resourceSpecification/spec-numbering-mapping",
      "name": "Numbering & Network Mapping Spec",
      "@referredType": null,
      "version": null
    },
    "place": [{
      "id": "country-CAMBODIA",
      "href": null,
      "name": "CAMBODIA",
      "@referredType": null,
      "role": "country"
    }],
    "relatedParty": [{
      "id": "operator-fixed",
      "href": null,
      "name": "Fixed",
      "@referredType": null,
      "role": "operator"
    }],
    "resourceCharacteristic": [
      {"name": "e164Prefix", "value": "855", "valueType": null},
      {"name": "countryName", "value": "CAMBODIA", "valueType": null},
      {"name": "operator", "value": "Fixed - Roc", "valueType": null},
      {"name": "interval_1", "value": 60, "valueType": null},
      {"name": "interval_n", "value": 1, "valueType": null},
      {"name": "billingFormat", "value": "60/1", "valueType": null},
      {"name": "networkType", "value": "Fixed", "valueType": null}
    ],
    "@type": "Resource",
    "@baseType": "LogicalResource"
  }
]

Response Headers

Header Description Example
X-Total-Count Total number of matching resources 239566
X-Result-Count Number of resources returned 1
GET /resource/{id}

Get Specific Resource - Retrieve a single resource by TMF685 resource ID

Request Example

curl -u "USERNAME:PASSWORD" \
  "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/resource/res-855-7618643"

Response Example

{
  "id": "res-855-7618643",
  "href": "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/resource/res-855-7618643",
  "name": "E164/E212 Mapping – 855 (Fixed - Roc)",
  "description": "E.164 prefix 855 mapped to network Fixed - Roc with billing increments 60/1",
  "category": "NumberingMapping",
  "resourceStatus": "available",
  "lifecycleStatus": "active",
  ...
}
GET /resourceSpecification/spec-numbering-mapping

Get Resource Specification - Retrieve the specification that defines NumberingMapping resources

Request Example

curl -u "USERNAME:PASSWORD" \
  "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/resourceSpecification/spec-numbering-mapping"

Response Example

{
  "id": "spec-numbering-mapping",
  "href": "https://destinations-api.telecomsxchange.com/tmf/resourceCatalogManagement/v4/resourceSpecification/spec-numbering-mapping",
  "name": "Numbering & Network Mapping Spec",
  "description": "Specification for E.164↔E.212 mapping and wholesale billing increments",
  "version": "1.0.0",
  "lastUpdate": "2025-10-01T21:24:19.408489",
  "resourceSpecCharacteristic": [
    {
      "name": "e164Prefix",
      "valueType": "string",
      "configurable": false,
      "description": "E.164 telephone number prefix"
    },
    {
      "name": "countryName",
      "valueType": "string",
      "configurable": false,
      "description": "Country name"
    }
  ],
  "@type": "ResourceSpecification"
}

Event Management (Hub/Listener Pattern)

POST /hub

Register Event Listener - Register a callback URL to receive real-time resource change events

Request Example

curl -u "USERNAME:PASSWORD" -X POST \
  "https://destinations-api.telecomsxchange.com/tmf/resourceInventoryManagement/v4/hub" \
  -H "Content-Type: application/json" \
  -d '{
    "callback": "https://example.com/tmf-events",
    "query": "category=NumberingMapping"
  }'

Response Example

{
  "id": "5951873f-55f4-4bc8-acd4-618ca95f5159",
  "callback": "https://example.com/tmf-events",
  "query": "category=NumberingMapping"
}
GET /hub

List Event Listeners - Get all registered hub callbacks

DELETE /hub/{id}

Unregister Event Listener - Remove a registered callback URL

Resource Characteristics Reference

Characteristic Type Description Example
e164Prefix string E.164 telephone number prefix 855, 1, 44
countryName string Country name CAMBODIA, UNITED STATES
operator string Network operator description Fixed - Roc, Verizon Mobile
mcc string Mobile Country Code 456, 310, 234
mnc string Mobile Network Code 01, 260, 15
networkType string Network type classification Mobile, Fixed, Satellite
interval_1 integer Initial billing interval (seconds) 60, 6, 1
interval_n integer Subsequent billing interval (seconds) 60, 6, 1
billingFormat string Billing format (initial/subsequent) 60/60, 6/6, 1/1

Standard Comparison

Legacy API TMF685 API Notes
/search/?country_name=CAMBODIA /resource?place.name=CAMBODIA Country filtering
/search/?prefix=855 /resource?resourceCharacteristic.name=e164Prefix&resourceCharacteristic.value=855 Prefix search
/search/?mccmnc=41601 /resource?resourceCharacteristic.name=mccmnc&resourceCharacteristic.value=41601 MCC/MNC search
/updates/ Event notifications via /hub Real-time updates

Enterprise Integration: The TMF685 API follows TM Forum Open API standards, making it ideal for integration with BSS/OSS systems, network management platforms, and enterprise applications that require standardized telecommunications APIs.

Coexistence: Both legacy and TMF685 APIs work simultaneously on the same data. Choose the format that best fits your integration needs.

Recent Billing Increment Updates

Stay informed about the latest billing increment changes from major carriers. These updates reflect recent modifications to minimum billing intervals and increment rates across global destinations.

Note: Billing increments shown as "X/Y" where X is the initial interval (seconds) and Y is the subsequent interval (seconds).

Effective Date Country/Destination Description New Billing Change Type
Oct 7, 2025 Australia Territories ALL (+672) 60/60 Increased
Oct 7, 2025 Mauritania ALL (+222) 60/60 Updated
Oct 1, 2025 Sudan Fixed Networks 60/60 Increased
Sep 18, 2025 Sudan Sudatel Mobile (Sudani) (+24910, +24911, +24912) 60/60 Increased
Aug 25, 2025 Cambodia ALL (+855) 60/1 Modified
Aug 4, 2025 Sudan Zain Mobile (+24990, +24991, +24996) 60/1 Improved
Aug 4, 2025 Macau All Networks 60/1 Improved
Aug 4, 2025 St. Lucia All Networks 60/1 Improved
Aug 4, 2025 Mali All Networks 60/60 Increased
Aug 4, 2025 Diego Garcia All Networks 60/60 Increased
Aug 4, 2025 Anguilla All Networks 60/60 Increased
Jul 10, 2025 St. Helena All Networks (+290) 60/60 Increased
Jul 4, 2025 São Tomé & Príncipe All Networks (+239) 60/60 Increased
Jul 1, 2025 Cambodia Cellcard Mobile 60/1 Improved
May 2, 2025 Cambodia All Networks 15/15 Improved
2024 Updates
Dec 20, 2024 Azerbaijan All Networks (+994) 60/1 Improved
Dec 9, 2024 Saudi Arabia STC (from Micronesia +691, Suriname +597, Comoros +269) 60/60 Increased
Dec 1, 2024 Ethiopia Safaricom Mobile 60/1 Improved
Dec 1, 2024 Comoros All Networks (+269) 60/60 Increased
Nov 1, 2024 Micronesia All Networks (+691) 60/60 Increased
Oct 8, 2024 Nepal NT Mobile 60/60 Increased

Key Observations

  • Latest Updates (Oct 7, 2025): Australia Territories (+672) changed from 1/1 to 60/60 due to third-party supplier changes. Mauritania (+222) billing confirmed at 60/60 for all networks.
  • Sudan Destinations: Mixed changes with Fixed & Sudatel networks moving to 60/60, while Zain Mobile improved to 60/1
  • Cambodia: Varies by network - general traffic at 15/15, Cellcard and all (+855) at 60/1
  • Mauritania: Standardized at 60/60 for all networks
  • Island Nations: Small/low-traffic destinations (St. Helena, São Tomé, Anguilla, Diego Garcia) maintained at 60/60
  • Favorable Changes: Macau and St. Lucia improved to 60/1 billing

Understanding Billing Increments:

  • 60/60: Minimum 60 seconds charged, then per-minute billing
  • 60/1: Minimum 60 seconds charged, then per-second billing (more favorable)
  • 15/15: Minimum 15 seconds charged, then 15-second increments
  • 1/1: Per-second billing from start (most favorable)