Skip to main content

ProxyHat Python SDK

The official Python SDK for the ProxyHat residential proxy API.

CI PyPI Python License: MIT

Features

  • One-call proxy connection — client.connection_url() turns your API key into a ready-to-use residential proxy URL
  • Full coverage of the ProxyHat API
  • Local gateway URL builder (build_connection_url) — no network needed
  • Sync (ProxyHat) and async (AsyncProxyHat) clients
  • Typed responses using dataclasses
  • Comprehensive error handling with typed exceptions
  • Pagination support for location endpoints

Installation

pip install proxyhat

Quick Start

from proxyhat import ProxyHat

client = ProxyHat(api_key="ph_your_api_key")

# List sub-users
users = client.sub_users.list()
for user in users:
    print(user.proxy_username, user.lifecycle_status)

# Create a sub-user
new_user = client.sub_users.create(
    proxy_password="secure_pass",
    is_traffic_limited=True,
    traffic_limit="5GB",
    name="Scraper",
)
print(new_user.uuid)

Async Usage

import asyncio
from proxyhat import AsyncProxyHat

async def main():
    async with AsyncProxyHat(api_key="ph_your_api_key") as client:
        users = await client.sub_users.list()
        for user in users:
            print(user.proxy_username)

asyncio.run(main())

Connecting to a proxy

From an API key to actually routing traffic in one call — the SDK looks up an active sub-user and builds the gateway URL for you:

from proxyhat import ProxyHat

proxy = ProxyHat(api_key="ph_your_api_key")

# Rotating residential IP, US exit:
url = proxy.connection_url(country="us")
# → http://<user>-country-us:<pass>@gate.proxyhat.com:8080

# Sticky session (same IP for 30m), city-targeted, SOCKS5:
sticky = proxy.connection_url(country="de", city="berlin", sticky="30m", protocol="socks5")

# Use it with any HTTP client:
import httpx
resp = httpx.get("https://api.ipify.org", proxy=url)

Offline builder — if you already have a sub-user's credentials, build the URL with no network call:

from proxyhat import build_connection_url

url = build_connection_url(username="ph-8f2a1c", password="PxSecret123", country="gb", filter="high")

Server-built descriptor — let the API assemble it (validates the sub-user is active):

d = proxy.proxy_descriptors.create(
    sub_user_uuid=user.uuid,
    protocol="http",
    location={"country": "us", "city": "new_york"},
    session={"mode": "sticky", "ttl": "30m"},
)
print(d.url)

Authentication

Get your API key from the ProxyHat Dashboard.

See the Authentication Guide for details.

API Reference

Resource Methods
client.auth register, login, user, logout, supported_providers, social_accounts, disconnect_social, oauth_redirect
client.sub_users list, create, get, update, delete, reset_usage, bulk_delete, bulk_move_to_group
client.sub_user_groups list, create, get, update, delete
client.locations countries, regions, cities, isps, zipcodes
client.analytics traffic, traffic_total, requests, requests_total, domain_breakdown
client.proxy_presets list, create, get, update, delete
client.proxy_descriptors create
client.connection_url(...) build a ready proxy URL from an active sub-user
client.profile get_preferences, update_preferences, list_api_keys, create_api_key, delete_api_key, regenerate_api_key
client.two_factor status, enable, confirm, disable, qr_code, recovery_codes, disable_by_recovery, change_password
client.email request_change, confirm_change, cancel_change, resend_verification
client.coupons validate, apply, redeem
client.plans list_regular, list_subscriptions, get_regular, get_subscription, pricing_regular, pricing_subscriptions
client.payments list, create, get, check, invoice, cryptocurrencies

Error Handling

from proxyhat import ProxyHat, ProxyHatError, NotFoundError, RateLimitError, ValidationError

client = ProxyHat(api_key="ph_your_api_key")

try:
    user = client.sub_users.get("nonexistent-id")
except NotFoundError as e:
    print(f"Not found: {e.message}")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except ValidationError as e:
    print(f"Validation failed: {e.errors}")
except ProxyHatError as e:
    print(f"API error {e.status_code}: {e.message}")

See the Error Handling Guide for the full list of error codes.

Documentation

  • ProxyHat — Residential & mobile proxy network
  • Dashboard — Manage proxies, sub-users, and API keys
  • GitHub — Source code & issue tracker

License

MIT — see LICENSE for details.

Metadata

Release files for proxyhat 0.2.2

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

Source distribution (sdist)

Source distribution for proxyhat 0.2.2
File Size Uploaded
proxyhat-0.2.2.tar.gz 20.9 kB Details

Built distribution (wheel)

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

Total release size: 50.9 kB

Release files / proxyhat-0.2.2.tar.gz

Download URL proxyhat-0.2.2.tar.gz
Size 20.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e6a75801cad4fe48cb9aa5dfcd2782ac8fa946f7158c55a2057290caca176e09
BLAKE2b-256 checksum
How to use checksums
85ac1372950f12d15180825e842d4b63f7d3a178fc2d772e37be21dc1b6358b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release files / proxyhat-0.2.2-py3-none-any.whl

Download URL proxyhat-0.2.2-py3-none-any.whl
Size 30.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
18e045a7411eae6e2cca8bb2bbd9eb0801e27514617213e0618a87c7458ea125
BLAKE2b-256 checksum
How to use checksums
9d54eaaeb074f354b5bf72e0918a68f5924c3f77fb07ad362f0ee1333f0543c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

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