postal
Python bindings to libpostal for fast international address parsing/normalization
Decision gist · record as of 2026-08-14
Yes, if you need robust international address parsing and can handle the compilation overhead. The high install friction (system C library build, platform-specific setup, several GB data) is a real cost, but the package is stable, permissive-licensed, and solves a hard problem well. Not suitable for environments where you cannot compile C libraries or manage system dependencies. Maintenance is aging but not abandoned; last release was recent.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- libpostal C library must be compiled and installed system-wide before pip install postal will work.
- Requires build tools (autoconf, automake, libtool, pkg-config) and several GB of disk space.
- CPython only; PyPy not supported.
License · maintenance · safety
MIT License (permissive) — MIT License (permissive). You can use, modify, and distribute this package freely in commercial or private projects, with minimal restrictions.
last release 2025-10-29 (289 days) · last repo commit 2025-11-01 · 881 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 84,331 downloads/mo, #14,007 on PyPI
Alternatives
Verify before relying
# Install libpostal C library first (see platform-specific instructions in docs)
# Then: pip install postal
from postal.expand import expand_address
expand_address('Quatre vingt douze Ave des Champs-Élysées')
from postal.parser import parse_address
parse_address('The Book Club 100-106 Leonard St, Shoreditch, London')- Whether libpostal data files are automatically downloaded during installation or must be manually configured
- Current state of Windows support and whether MSYS2 setup remains the recommended path
- Performance characteristics and typical latency for address parsing operations
- Whether the package works with modern Python versions beyond 3.5 despite unspecified support
What it is and what it does
postal is a Python wrapper around libpostal, a standalone C library for parsing and normalizing street addresses in any language or format worldwide. It provides two main functions: expand_address() generates normalized variations of an address (useful for fuzzy matching), and parse_address() breaks an address into its semantic components (street, city, country, postal code, etc.).
The package is designed for developers building geocoding pipelines, address validation systems, or search indexing that must handle international addresses. Installation requires compiling libpostal from source with system build tools and allocating disk space for linguistic and geographic data. The bindings are CPython-only and support Python 3.5 and later.
Use it for
- Normalize and standardize address data from multiple sources before geocoding or database storage
- Extract address components (street, city, postal code) from unstructured text for form validation or data enrichment
- Generate address variations for fuzzy matching in search or deduplication workflows
- Preprocess international addresses in multiple languages for mapping or logistics applications
- Index addresses in search engines by expanding and normalizing variants
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need robust international address parsing and can handle the compilation overhead.
The high install friction (system C library build, platform-specific setup, several GB data) is a real cost, but the package is stable, permissive-licensed, and solves a hard problem well. Not suitable for environments where you cannot compile C libraries or manage system dependencies. Maintenance is aging but not abandoned; last release was recent.
Install
postal on PyPI
Before you install
High install friction: requires compiling the libpostal C library before the Python bindings can work. Needs system build tools (autoconf, automake, libtool, pkg-config) and several GB of disk space for libpostal's data. Platform-specific setup is required (Ubuntu/Debian, CentOS/RHEL, macOS, or Windows with MSYS2). Last release was 289 days ago; maintenance is aging.
libpostal C library must be compiled and installed system-wide before pip install postal will work. Requires build tools (autoconf, automake, libtool, pkg-config) and several GB of disk space. CPython only; PyPy not supported.
License in practice
MIT License (permissive). You can use, modify, and distribute this package freely in commercial or private projects, with minimal restrictions.
Quickstart
# Install libpostal C library first (see platform-specific instructions in docs)
# Then: pip install postal
from postal.expand import expand_address
expand_address('Quatre vingt douze Ave des Champs-Élysées')
from postal.parser import parse_address
parse_address('The Book Club 100-106 Leonard St, Shoreditch, London')
Verify before relying
- Whether libpostal data files are automatically downloaded during installation or must be manually configured
- Current state of Windows support and whether MSYS2 setup remains the recommended path
- Performance characteristics and typical latency for address parsing operations
- Whether the package works with modern Python versions beyond 3.5 despite unspecified support
Package facts
| License | MIT License permissive |
| Python support | Not specified |
| Install friction | High. Source build required |
| Runtime dependencies | 1 packagesix |
| Maintenance | Aging 289 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 84,331 / month, #14,007 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Intended Audience :: DevelopersIntended Audience :: Information TechnologyLicense :: OSI Approved :: MIT LicenseOperating System :: MacOS :: MacOS XOperating System :: POSIX :: LinuxProgramming Language :: CProgramming Language :: Python :: 3Programming Language :: Python :: 3.5Topic :: Internet :: WWW/HTTP :: Indexing/SearchTopic :: Scientific/Engineering :: GISTopic :: Software Development :: Libraries :: Python ModulesTopic :: Text Processing :: Linguistic |
Evidence: postal-1.1.11.tar.gz
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “address parsing”
- postalPython bindings to libpostal, a C library for parsing and normalizing…
- usaddressusaddress parses unstructured US address strings into labeled…
- ipaddrProvides utilities for parsing, validating, and manipulating IPv4 and…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also lob · pyap2 · pyap · usaddress-scourgify · usaddress · google-i18n-address · pypostalcode · opencage · smartystreets-python-sdk · pgeocode