Skip to main content

📦 pyseventeentrack: A Simple Python API for 17track.net

CI PyPi Version License Code Coverage Maintainability Say Thanks

pyseventeentrack is a simple Python library to track packages in 17track.net accounts.

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

Python Versions

pyseventeentrack is currently supported on:

  • Python 3.11
  • Python 3.12

Installation

pip install pyseventeentrack

Usage

import asyncio

from aiohttp import ClientSession

from pyseventeentrack import Client


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

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

    # Get the account ID:
    client.profile.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()
    # >>> [pyseventeentrack.package.Package(..), ...]

    # Package results are fetched across all available response pages.
    
    # Add new packages by tracking number
    await client.profile.add_package('<TRACKING NUMBER>', '<FRIENDLY NAME>')

    # Add a new package and specify the carrier code
    await client.profile.add_package(
        '<TRACKING NUMBER>',
        '<FRIENDLY NAME>',
        first_carrier=190625,
    )

    # Set the carrier for an existing package by tracking number
    await client.profile.set_carrier_by_tracking_number(
        '<TRACKING NUMBER>', first_carrier=190625
    )


asyncio.run(main())

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 pyseventeentrack import Client


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

        # ...


asyncio.run(main())

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
  • first_carrier: the first carrier code selected for 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)
  • second_carrier: the second carrier code selected for the package
  • 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

Package operations that need 17Track's internal package ID raise InvalidPackageDataError when the API returns a missing or empty ID. Looking up an unknown internal package ID raises PackageNotFoundError.

Contributing

  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 README.md with any new documentation.
  10. Add yourself to AUTHORS.md.
  11. Submit a pull request!

Metadata

Release files for pyseventeentrack 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyseventeentrack 1.2.0
File Size Uploaded
pyseventeentrack-1.2.0.tar.gz 13.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyseventeentrack 1.2.0
File Interpreter ABI Platform
pyseventeentrack-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.4 kB

Release files / pyseventeentrack-1.2.0.tar.gz

Download URL pyseventeentrack-1.2.0.tar.gz
Size 13.8 kB
Tags Source
SHA-256 checksum
How to use checksums
384c0e3f3418631f79548077a87e80c858dbbc2bf27e14d6c924a7a1d0df3a70
BLAKE2b-256 checksum
How to use checksums
e972078ddd1c1fd0150c00644c4d6bcb304ff1f021d696ebaf493d9df896c790
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / pyseventeentrack-1.2.0-py3-none-any.whl

Download URL pyseventeentrack-1.2.0-py3-none-any.whl
Size 14.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b3e94b06a03ca3c61cd9484182cc3ccc6900c2e9a963ff81c0dcb65c997cb5b7
BLAKE2b-256 checksum
How to use checksums
a76acd54a5be99fe442ae229152c0a6ad8a7aafc7759e201b3478b908bff840d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.10

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page