Skip to content

tierproxy/python-sdk

Repository files navigation

tierproxy — Python SDK

🚧 Preview release. Gateway is not yet generally available. Join the waitlist at hello@tierproxy.com. SDK is functional but tierproxy doctor against a live gateway requires invitation.

PyPI version Python versions Downloads CI codecov License: Apache 2.0 OpenAPI 3.1 MCP compatible

Premium multi-provider proxy infrastructure for AI/ML pipelines. Built for engineers who measure cost, latency, and success rate twice — and write Python.

Install

pip install tierproxy

Quickstart — five-second flavor

import tierproxy
r = tierproxy.get("https://example.com", country="US")
print(r.text)

That's it. (Set TIERPROXY_API_KEY env var first.)

Three lines, persistent session

from tierproxy import TierProxy
with TierProxy() as g:
    print(g.me.get().client_id)
    r = g.get("https://example.com", country="US", session_id="s1")

Auto-pick the cheapest healthy upstream every request

g = TierProxy(routing="cheapest")  # also: "fastest", "most_reliable", "balanced"
g.get("https://example.com")     # picks via /v1/health/upstreams under the hood

Cost guardrails

g = TierProxy(
    monthly_budget_usd=200.0,    # raises BudgetExceededError before going over
)

Power-user knobs

import httpx
from tierproxy import TierProxy
from tierproxy.retry import RetryPolicy

g = TierProxy(
    api_key="tp_live_...",
    base_url="https://my-self-hosted-gw:8444",
    timeout=10.0,
    retry_policy=RetryPolicy(max_retries=5, retry_on_status=frozenset({500, 502})),
    http_client=httpx.Client(verify=False),  # custom transport
    user_agent_suffix="my-app/2.3",          # attribution
)

Raw modes (Playwright, curl, etc.)

from tierproxy import ProxyURL

p = ProxyURL(api_key="tp_live_...", country="US", mode="username_encoding")
print(p.http_url())  # http://customer-tp_live_...-cc-US:x@gw.tierproxy.com:443

How tierproxy compares

tierproxy Smartproxy SDK Bright Data SDK Oxylabs SDK DataImpulse
Multi-provider routing
Client-side smart selector (cost-aware)
Live usage streaming (SSE)
MCP server (Claude/Cursor/Cline)
OpenTelemetry built-in
Sync + async parity partial partial partial partial
AI/ML framework examples shipped 8 0 1 0 0
Type-safe (Pydantic v2 + mypy strict) partial
OpenAPI 3.1 spec
Pip-installable CLI (tierproxy doctor)
Per-request cost attribution (lazy)
JA3/JA4 TLS fingerprint rotation
Rate-limit learning + auto-failover
License Apache 2.0 proprietary proprietary proprietary proprietary

Features

  • Five-second quickstartimport tierproxy; tierproxy.get(url, country="US")
  • Layered API — five integration levels from one-liner to power-user knobs
  • Smart routingrouting="cheapest" auto-picks healthy upstream per request
  • Cost guardrailsmonthly_budget_usd= refuses requests that would exceed budget
  • Per-request cost attributionclient.cost_for(resp) returns USD; lazy 30s cache, no per-request overhead
  • Client-side response cachingcache_ttl=300, cache_max_response_size=262144 LRU with size cap
  • Multi-provider auto-failoverauto_failover=True retries with next-best upstream on 429/5xx
  • Rate-limit learningclient.rate_limits.get() surfaces gateway-aggregated 429s per target domain
  • JA3/JA4 TLS rotation — per-upstream fingerprint randomization (gateway side; see tls-fingerprint guide)
  • Cookie persistence — cookies stick to session_id across multi-step crawls
  • Streaming responsesclient.get(url, stream=True) returns iterator (large files, SSE)
  • Live SSE streamfor delta in g.usage.stream() tails month-to-date bytes
  • MCP servertierproxy-mcp exposes proxy as tools to Claude/Cursor/Cline
  • 8 framework integrations — LangChain, LlamaIndex, Crawl4AI, Playwright, Firecrawl, Browser-Use, CrewAI
  • OpenTelemetry opt-inpip install tierproxy[otel] for distributed tracing
  • Geo + sticky sessions — countries, cities, 1-1440min session pins
  • Dual URL syntax — headers (httpx/requests) AND username-encoding (Playwright)
  • Type-safe end-to-end — Pydantic v2 models, mypy strict, full IDE autocomplete

See examples/ for LangChain/LlamaIndex/Crawl4AI/Playwright and examples/levels.py for a runnable demo of every level.

Use with your favorite AI/agent framework

Framework Example Notes
LangChain with_langchain.py RAG document loaders through proxy
LlamaIndex with_llamaindex.py SimpleWebPageReader through proxy
Crawl4AI with_crawl4ai.py Playwright crawler + tierproxy
Firecrawl (hot) with_firecrawl.py Self-hosted Firecrawl + residential IPs
Browser-Use (hot) with_browser_use.py LLM-driven autonomous browser
CrewAI (hot) with_crewai.py Multi-agent scraper crew + cost-aware routing
Playwright with_playwright.py Direct Playwright with tierproxy
MCP (Claude/Cursor/Cline/Windsurf) (unique) mcp_claude_desktop.md Native tool integration via tierproxy-mcp

MCP server (Claude Desktop / Cursor / Cline / Windsurf)

pip install tierproxy[mcp]

Then add to your MCP client config:

{
  "mcpServers": {
    "tierproxy": {
      "command": "tierproxy-mcp",
      "env": { "TIERPROXY_API_KEY": "tp_live_..." }
    }
  }
}

Now your AI assistant can call fetch_url(url, country="US"), inspect health and usage, and route through the cheapest healthy upstream — no glue code, no httpx imports, no boilerplate.

About

Premium multi-provider proxy infrastructure SDK for AI/ML pipelines. LangChain, LlamaIndex, Crawl4AI, MCP server. Apache 2.0.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors