Skip to main content

All-In-One Sellers API

Python License: Apache 2.0

Asynchronous Python wrapper for working with digital trading platforms. Currently implemented module for PlayerOK.

Python


Installation

pip install aiosellers

or via uv:

uv add aiosellers

Requirements: Python 3.12+


Configuration

Token can be passed to the constructor or via environment variable:

export PLAYEROK_ACCESS_TOKEN="your_token_here"

Quick Start

import asyncio
from aiosellers.playerok import Playerok

async def main():
    async with Playerok() as client:
        me = await client.account.me()
        profile = await client.account.profile()

        print(f"User: {me.username} ({me.email})")
        print(f"Rating: {profile.rating} | Reviews: {profile.reviews_count}")
        print(f"Balance: {profile.balance.available} (pending: {profile.balance.pending_income})")
        print(f"Unread chats: {me.unread_chats_counter}")

asyncio.run(main())

Examples

1. Account Information

async with Playerok() as client:
    me = await client.account.me()
    profile = await client.account.profile()

    print(f"{me.username} | {me.email}")
    print(f"Rating: {profile.rating} ({profile.reviews_count} reviews)")
    print(f"Available: {profile.balance.available}")
    print(f"Pending: {profile.balance.pending_income}")

2. Market Analysis: Average Item Price

from statistics import mean

async with Playerok() as client:
    games = await client.games.list(search="dota", limit=1)
    game = games[0]

    items = await client.items.list(game_id=game.id, search="mmr", limit=100)
    prices = [i.price for i in items if i.price]

    print(f"{game.name}: avg price = {mean(prices):.2f}")

3. Working with Chats

async with Playerok() as client:
    user = await client.account.get_user(username="some_user")
    chat = await user.get_chat()

    if not chat:
        print("No chat found")
        return

    messages = await chat.get_messages(limit=20)
    for msg in messages:
        print(f"{msg.sent_at} | {msg.user.username if msg.user else 'system'}: {msg.text}")
        await msg.mark_as_read()

    await chat.send_text("Hello!")

4. Automatic Item Position Upgrade

async with Playerok() as client:

    async for item in client.items.iter_self():
        pos = item.priority_position or 999
        if pos < 15:
            await item.set_premium_priority()
            print(f"Upgraded: {item.name}")

5. Batch Deal Processing

from aiosellers.playerok.schemas import ItemDealStatuses

async with Playerok() as client:
    # Send all paid orders
    paid = await client.deals.list(statuses=[ItemDealStatuses.PAID])
    for deal in paid:
        await deal.complete()
        print(f"Sent: {deal.id}")

    # Confirm all sent orders
    sent = await client.deals.list(statuses=[ItemDealStatuses.SENT])
    for deal in sent:
        await deal.confirm()
        print(f"Confirmed: {deal.id}")

6. Creating an Item with Image

async with Playerok() as client:
    category = await client.games.get_category(slug="skins", game_id="...")
    obtaining_types = await category.get_obtaining_types()
    obtaining_type = obtaining_types[0]

    # Get options (server, region, etc.)
    options = await category.get_options()
    for opt in options:
        opt.set_value(opt.possible_values[0].value)  # select first value

    # Get data fields (fields for seller)
    data_fields = await obtaining_type.get_data_fields()
    for field in data_fields:
        if field.required:
            field.set_value("item data")

    item = await client.items.create(
        category=category.id,
        obtaining_type=obtaining_type.id,
        name="Rare Skin",
        price=1500,
        description="Instant delivery",
        options=options,
        data_fields=data_fields,
        attachments=["https://example.com/preview.jpg"]
    )

    await item.publish(premium=False)
    print(f"Created: {item.id}")

7. Sniper: Buying the Cheapest Item

import asyncio

async with Playerok() as client:
    games = await client.games.list(search="dota", limit=1)
    items = await client.items.list(game_id=games[0].id, search="arcana", limit=50)

    cheapest = min([i for i in items if i.price], key=lambda x: x.price)

    # Fill in item obtaining fields
    fields = await cheapest.get_obtaining_fields()
    for f in fields:
        if f.required:
            f.set_value("your_data_here")

    deal = await cheapest.create_deal(obtaining_fields=fields)
    await asyncio.sleep(1) # Wait for chat creation on server
    chat = await deal.get_chat()
    await chat.send_text("Hello!")

    print(f"Bought {cheapest.name} for {cheapest.price}")

Runnable samples live in examples/: a decorator bot in examples/playerok_bot.py and a transaction list in examples/transactions.py.

import asyncio

from aiosellers.playerok import Playerok
from aiosellers.playerok.events import NewMessageEvent

client = Playerok()

@client.on_message(text="!команды")
async def commands(event: NewMessageEvent) -> None:
    await event.client.chats.send_message(event.chat.id, text="!привет")

asyncio.run(client.start_polling())

Development Status: PlayerOK

Module Raw API High-level
Account ✅ ✅
Games / Categories ✅ ✅
Items ✅ ✅
Deals ✅ ✅
Chats ✅ ✅
Transactions ✅ ✅
Event Feed ✅ ✅

Acknowledgments

Based on ideas from PlayerokAPI


Built by developers for developers.

Metadata

Release files for aiosellers 0.1.3

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

Source distribution (sdist)

Source distribution for aiosellers 0.1.3
File Size Uploaded
aiosellers-0.1.3.tar.gz 210.4 kB Details

Built distribution (wheel)

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

Total release size: 283.6 kB

Release files / aiosellers-0.1.3.tar.gz

Download URL aiosellers-0.1.3.tar.gz
Size 210.4 kB
Tags Source
SHA-256 checksum
How to use checksums
554d85d64bddff70f243ffdbdb883e0a0cb4603c5ba77bf5c8412ab6e24f1b43
BLAKE2b-256 checksum
How to use checksums
2da4a2e866bbf1dabd7d9902df617c5574e593cf23bd84af459414eed320cb06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.1

Release files / aiosellers-0.1.3-py3-none-any.whl

Download URL aiosellers-0.1.3-py3-none-any.whl
Size 73.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a983c8f4dca28b27ebdfec6e5b8c810257a6a5f75ce162977e07f4bb9cb88fba
BLAKE2b-256 checksum
How to use checksums
5819115a5503479bc863b90b422ec9d1a61422b5d6cf64a94924c9f7d0d04cd3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.1

Release history Release notifications | RSS feed

0.1.4

2 release files

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.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