easypost
EasyPost Shipping API Client Library for Python
What it is and what it does
EasyPost is a Python wrapper around the EasyPost shipping API that abstracts the complexity of integrating with multiple carriers. It lets you create shipment objects with origin and destination addresses plus package dimensions, retrieve available shipping rates from different carriers, and purchase labels programmatically—all through a single client interface. The library handles HTTP communication via requests and provides hooks for monitoring request and response lifecycle events.
The package is production-stable (Development Status 5), actively maintained, and tested against Python 3.9 through 3.13. It's designed for developers building shipping workflows into applications—from e-commerce platforms to logistics management tools—who need to avoid building their own carrier integrations. The API is straightforward: instantiate a client with your credentials, call methods on shipment/address/parcel objects, and work with the returned data structures.
Use it for:
- E-commerce platforms that need to offer real-time shipping rate quotes and label generation at checkout.
- Logistics management dashboards that consolidate shipment creation and tracking across multiple carriers.
- Batch shipment processing for fulfillment centers that need to programmatically buy labels in bulk.
- Subscription box services that automate recurring shipment creation and carrier selection based on cost or speed.
- Third-party logistics providers integrating carrier APIs into their own platform.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Python client library for the EasyPost shipping API, enabling programmatic creation, management, and purchase of shipments with carrier rate comparison.
Yes. The package is production-stable, actively maintained, has low install friction, carries a permissive MIT license, and solves a real integration problem for anyone building shipping functionality. No known vulnerabilities. Install if you need to integrate EasyPost's shipping API into a Python application.
Install
easypost on PyPI
pip
pip install easypostuv
uv add easypostpoetry
poetry add easypostInstalling easypost
Before you install
Low install friction with a single runtime dependency (requests). Actively maintained with a release within the last 50 days and an active repository. Supports Python 3.9 through 3.13.
License in practice
MIT license permits unrestricted use, modification, and distribution with minimal restrictions—suitable for both commercial and open-source projects.
Quickstart
pip install easypost
import os
import easypost
client = easypost.EasyPostClient(os.getenv('EASYPOST_API_KEY'))
shipment = client.shipment.create(
from_address={"name": "Sender", "street1": "118 2nd Street", "city": "San Francisco", "state": "CA", "zip": "94105", "country": "US"},
to_address={"name": "Recipient", "street1": "179 N Harbor Dr", "city": "Redondo Beach", "state": "CA", "zip": "90277", "country": "US"},
parcel={"length": 10.2, "width": 7.8, "height": 4.3, "weight": 21.2}
)
bought = client.shipment.buy(shipment.id, rate=shipment.lowest_rate())
Requires a valid EasyPost API key passed via environment variable or directly to EasyPostClient.
Verify before relying
- Whether the library supports real-time rate shopping across all major carriers or a subset.
- Specific carrier integrations and coverage beyond what the description states.
- Rate limiting or throughput constraints for high-volume shipment operations.
- Whether address validation and correction is included or requires a separate service.
Package facts
| License | The MIT License Copyright (c) 2013 EasyPost (Simpler Postage, Inc) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — requests |
| Maintenance | actively maintained — 50 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 220,717/month — #9,293 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: easypost-10.7.0-py3-none-any.whl
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
shippoPython SDK for the Shippo shipping API,…
permissive · top 15,000 on PyPI
WooCommerceA Python wrapper for the WooCommerce REST API…
permissive · top 15,000 on PyPI
vonage-numbersProvides Python bindings to Vonage's Numbers…
permissive · top 15,000 on PyPI
method-pythonPython client library for the Method API,…
permissive · top 15,000 on PyPI
taxjarPython client library for the TaxJar Sales Tax…
permissive · top 15,000 on PyPI
ipinfoQueries the IPinfo.io API to retrieve…
permissive · top 15,000 on PyPI
phonenumbersParse, validate, format, and analyze…
permissive · top 1,000 on PyPI
pyairtablePython client library for interacting with the…
permissive · top 5,000 on PyPI
keboola.vcrRecords, sanitizes, and validates HTTP…
permissive · top 15,000 on PyPI