{"library":"phonenumbers","title":"Python-phonenumbers","description":"Python-phonenumbers is a Python port of Google's `libphonenumber` library, providing robust functionality for parsing, formatting, storing, and validating international phone numbers. It is actively maintained and regularly updated to reflect upstream changes from the original Java library. The current version is 9.0.26.","language":"python","status":"active","last_verified":"Tue May 19","install":{"commands":["pip install phonenumbers"],"cli":null},"imports":["import phonenumbers","import phonenumbers\nparsed_number = phonenumbers.parse(\"+12133734253\", \"US\")","from phonenumbers import PhoneNumberFormat\nformatted_number = phonenumbers.format_number(number_obj, PhoneNumberFormat.INTERNATIONAL)","is_valid = phonenumbers.is_valid_number(number_obj)","from phonenumbers import carrier","from phonenumbers import geocoder","from phonenumbers import timezone"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import phonenumbers\nfrom phonenumbers import geocoder, carrier, timezone, PhoneNumberFormat\n\n# 1. Parse a phone number\n#   - The second argument ('GB') provides a default region if the number is not in E.164 format.\n#   - If the number is E.164 (e.g., '+44...'), None can be used as the default region.\nphone_number_str = \"+442083661177\"\ncountry_code = \"GB\" # Default region for parsing, if number is not in international format\n\ntry:\n    parsed_number = phonenumbers.parse(phone_number_str, country_code)\n    print(f\"Parsed Number: {parsed_number}\")\n\n    # 2. Validate the phone number\n    is_valid = phonenumbers.is_valid_number(parsed_number)\n    is_possible = phonenumbers.is_possible_number(parsed_number)\n    print(f\"Is Valid: {is_valid}, Is Possible: {is_possible}\")\n\n    if is_valid:\n        # 3. Format the phone number in various ways\n        national_format = phonenumbers.format_number(parsed_number, PhoneNumberFormat.NATIONAL)\n        international_format = phonenumbers.format_number(parsed_number, PhoneNumberFormat.INTERNATIONAL)\n        e164_format = phonenumbers.format_number(parsed_number, PhoneNumberFormat.E164)\n\n        print(f\"National Format: {national_format}\")\n        print(f\"International Format: {international_format}\")\n        print(f\"E.164 Format: {e164_format}\")\n\n        # 4. Get carrier, region, and timezone information\n        #    Note: These lookups depend on the data included in the phonenumbers library.\n        carrier_name = carrier.name_for_number(parsed_number, \"en\")\n        region_description = geocoder.description_for_number(parsed_number, \"en\")\n        timezones = timezone.time_zones_for_number(parsed_number)\n\n        print(f\"Carrier: {carrier_name}\")\n        print(f\"Region: {region_description}\")\n        print(f\"Timezones: {timezones}\")\n\nexcept phonenumbers.NumberParseException as e:\n    print(f\"Error parsing number: {e}\")\n","lang":"python","description":"This quickstart demonstrates how to parse, validate, format, and retrieve auxiliary information (carrier, region, timezone) for a phone number. It handles potential parsing errors using a try-except block.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","last_tested":"2026-05-19","installed_version":"9.0.30","pypi_latest":"9.0.30","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4.7,"avg_import_s":0.1,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":1.4,"disk_size":"100.7M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.07,"mem_mb":1.4,"disk_size":"99.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.4,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"101M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"100M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.18,"mem_mb":1.4,"disk_size":"67.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":1.4,"disk_size":"67.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.4,"import_time_s":0.15,"mem_mb":1.4,"disk_size":"68M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":1.4,"disk_size":"68M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.11,"mem_mb":1.1,"disk_size":"56.7M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.12,"mem_mb":1.1,"disk_size":"56.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.7,"import_time_s":0.13,"mem_mb":1.1,"disk_size":"57M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.12,"mem_mb":1.1,"disk_size":"57M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.1,"mem_mb":1.4,"disk_size":"56.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.12,"mem_mb":1.4,"disk_size":"56.0M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.5,"import_time_s":0.11,"mem_mb":1.2,"disk_size":"57M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.12,"mem_mb":1.2,"disk_size":"57M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":1.4,"disk_size":"50.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.07,"mem_mb":1.4,"disk_size":"50.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.4,"import_time_s":0.05,"mem_mb":1.4,"disk_size":"51M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"phonenumbers","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":1.4,"disk_size":"51M"}]}}