Skip to main content

A Simple Python API for

Project description

📦 py17track: A Simple Python API for

CI PyPi Version License Code Coverage Maintainability Say Thanks

py17track is a simple Python library to track packages in accounts.

Since this is uses an unofficial API, there's no guarantee that will provide every field for every package, all the time. Additionally, this API may stop working at any moment.

Python Versions

py17track is currently supported on:

  • Python 3.6
  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10


pip install py17track


import asyncio

from aiohttp import ClientSession

from py17track import Client

async def main() -> None:
    client = Client()

    # Login to
    await client.profile.login('<EMAIL>', '<PASSWORD>')

    # Get the account ID:
    # >>> 1234567890987654321

    # Get a summary of the user's packages:
    summary = await client.profile.summary()
    # >>> {'In Transit': 3, 'Expired': 3, ... }

    # Get all packages associated with a user's account:
    packages = await client.profile.packages()
    # >>> [py17track.package.Package(..), ...]
    # Add new packages by tracking number
    await client.profile.add_package('<TRACKING NUMBER>', '<FRIENDLY NAME>')

By default, the library creates a new connection to 17track with each coroutine. If you are calling a large number of coroutines (or merely want to squeeze out every second of runtime savings possible), an aiohttp ClientSession can be used for connection pooling:

import asyncio

from aiohttp import ClientSession

from py17track import Client

async def main() -> None:
    async with ClientSession() as session:
        client = Client(session=session)

        # ...

Each Package object has the following info:

  • destination_country: the country the package was shipped to
  • friendly_name: the human-friendly name of the package
  • info: a text description of the latest status
  • location: the current location (if known)
  • timestamp: the timestamp of the latest event
  • origin_country: the country the package was shipped from
  • package_type: the type of package (if known)
  • status: the overall package status ("In Transit", "Delivered", etc.)
  • tracking_info_language: the language of the tracking info
  • tracking_number: the all-important tracking number


  1. Check for open features/bugs or initiate a discussion on one.
  2. Fork the repository.
  3. (optional, but highly recommended) Create a virtual environment: python3 -m venv .venv
  4. (optional, but highly recommended) Enter the virtual environment: source ./.venv/bin/activate
  5. Install the dev environment: script/setup
  6. Code your new feature or bug fix.
  7. Write tests that cover your new functionality.
  8. Run tests and ensure 100% code coverage: script/test
  9. Update with any new documentation.
  10. Add yourself to
  11. Submit a pull request!

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py17track-2021.12.2.tar.gz (11.0 kB view hashes)

Uploaded source

Built Distribution

py17track-2021.12.2-py3-none-any.whl (10.5 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page