bidkit¶
A modern, typed Python SDK for the eBay REST APIs — sync and async, generated from eBay's OpenAPI contracts.
Unofficial
This project is not affiliated with or endorsed by eBay Inc. "eBay" is a trademark of eBay Inc. See NOTICE.
Installation¶
uv add bidkit # or: pip install bidkit
Requires Python 3.11+.
Quickstart¶
from bidkit import EbayClient, EbayConfig
client = EbayClient(EbayConfig(app_id="...", cert_id="...")) # or EbayClient.from_env()
results = client.buy.browse.search(q="vintage radio", limit=5)
for item in results.item_summaries or []:
print(item.title, item.price.value if item.price else "?")
Every one of the 455 operations across 41 eBay APIs is a typed method with Pydantic request/response models — see Supported eBay APIs.
Why bidkit¶
- Typed end to end — Pydantic v2 models generated from eBay's own contracts; unknown
fields and new enum values never break validation;
raw_response=Truenarrows tohttpx.Responsein your type checker. - Sync and async on httpx, with orjson serialization.
- OAuth built in — client-credentials and user tokens, stampede-proof refresh caching,
a persistent
FileTokenCache, and the authorization-code flow as three lines of code. - Automatic retries with
Retry-Aftersupport and full-jitter backoff — tunable per call. - eBay digital signatures (RFC 9421-style) applied exactly where eBay requires them — Finances API and refund operations.
- Push notification verification for webhook endpoints, including the mandatory marketplace-account-deletion topic — guide.
- Fast imports — lazy-loaded model modules keep client construction at tens of milliseconds.
Scope¶
bidkit covers eBay's REST APIs (Sell, Buy, Commerce, Developer, Post-Order). The legacy XML APIs are out of scope by design — see bidkit vs ebaysdk.