Skip to main content

py-near

Financial Contributors on Open Collective PyPi Package Version Supported python versions Documentation Status Github issues MIT License Twitter

py-near is a Async client for NEAR Blockchain with native HOT Protocol & NEAR Intents support

Examples

📚 Click to see some basic examples

Few steps before getting started...

  • Install the latest stable version of py-near, simply running pip install py-near
  • Create NEAR account and get your private key wallet

Simple money transfer

from py_near.account import Account
import asyncio
from py_near.dapps.core import NEAR

ACCOUNT_ID = "bob.near"
PRIVATE_KEY = "ed25519:..."


async def main():
   acc = Account(ACCOUNT_ID, PRIVATE_KEY)

   await acc.startup()
   print(await acc.get_balance() / NEAR)
   print(await acc.get_balance("bob.near") / NEAR)

   tr = await acc.send_money("bob.near", NEAR * 2)
   print(tr.transaction.hash)
   print(tr.logs)


asyncio.run(main())

Working with NEAR Intents (OmniBalance)

from py_near.omni_balance import OmniBalance
import asyncio

ACCOUNT_ID = "bob.near"
PRIVATE_KEY = "ed25519:..."


async def main():
   omni = OmniBalance(ACCOUNT_ID, PRIVATE_KEY)
   await omni.startup()

   # Create intent with multiple actions: transfer, token swap, and auth call
   commitment = omni.transfer(
      tokens={"nep141:wrap.near": "5"},
      receiver_id="alice.near",
      memo="Test transfer",
   )._token_diff({
      "nep141:wrap.near": "-5",
   }).auth_call("contract.near", msg="test").sign()

   # Simulate intent before submitting
   sim = await omni.simulate_intent(commitment)
   print(sim.logged_intents)

   # Submit intent to solver network
   intent_hash = await omni.publish_intents(commitment)
   print(f"Intent hash: {intent_hash}")

   # Wait for transaction hash
   tr_hash = await omni.get_tr_hash_from_intent(intent_hash)
   print(f"Transaction hash: {tr_hash}")

   await omni.shutdown()


asyncio.run(main())

Working with HeX Orderbook

HeX is a decentralized orderbook for trading tokens on NEAR. It supports limit orders, market orders, and order management.

from py_near.omni_balance import OmniBalance
from py_near.dapps.hex import OrderbookClient
import asyncio

ACCOUNT_ID = "bob.near"
PRIVATE_KEY = "ed25519:..."

async def main():
    async with OmniBalance(ACCOUNT_ID, PRIVATE_KEY) as omni:
        # Initialize orderbook for HOT/USDT pair
        ob = OrderbookClient(
            omni,
            base="nep245:v2_1.omni.hot.tg:4444119_wyixUKCL",
            decimal_base=9,
        )
        
        # Get and print orderbook
        orderbook = await ob.get_orderbook()
        orderbook.print()
        
        # Simulate market order to get quote
        amount_in = int(0.1 * 10**9)  # 0.1 HOT
        result = await ob.simulate_market_order(
            str(amount_in),
            token_in="nep245:v2_1.omni.hot.tg:4444119_wyixUKCL",
            min_amount_out="0",
        )
        print(f"Expected output: {result.book_fill_result.taker_receive_total}")
        
        # Place limit order
        tx = await ob.place_limit_order(
            price=ob.get_price(1.50),  # $1.50 per HOT
            amount=str(int(0.35 * 10**6)),
            token_in="nep141:usdt.tether-token.near",
        )
        print(f"Limit order: {tx}")
        
        # Place market order
        tx = await ob.place_market_order(
            amount=str(int(0.1 * 10**9)),
            token_in="nep245:v2_1.omni.hot.tg:4444119_wyixUKCL",
        )
        print(f"Market order: {tx}")
        
        # Cancel orders
        orders = await ob.get_orders()
        for order in orders:
            if order.order.maker == omni.account_id:
                await ob.cancel_order(order.hash)

asyncio.run(main())

Parallel requests

Only one parallel request can be made from one private key. All transaction calls execute sequentially. To make several parallel calls you need to use several private keys

acc = Account("bob.near", private_key1)

for i in range(2):
  signer = InMemorySigner.from_random(AccountId("bob.near"), KeyType.ED25519)
  await acc.add_full_access_public_key(str(signer.public_key))
  print(signer.secret_key)

Now we can call transactions in parallel

acc = Account("bob.near", [private_key1, private_key2, private_key3])
# request time = count transactions / count public keys
tasks = [
  asyncio.create_task(acc.send_money("alisa.near", 1)),
  asyncio.create_task(acc.send_money("alisa.near", 1)),
  asyncio.create_task(acc.send_money("alisa.near", 1)),
]
for t in tasks:
  await t

Official py-near resources:

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Code of conduct].

Metadata

Release files for py-near 1.2.22

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

Source distribution (sdist)

Source distribution for py-near 1.2.22
File Size Uploaded
py_near-1.2.22.tar.gz 50.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-near 1.2.22
File Interpreter ABI Platform
py_near-1.2.22-py3-none-any.whl Python 3 none any Details

Total release size: 110.5 kB

Release files / py_near-1.2.22.tar.gz

Download URL py_near-1.2.22.tar.gz
Size 50.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ac65298cad84f2c6dbe0043ba38368c07f5cb82d1b54a4461793b4ea294c66cd
BLAKE2b-256 checksum
How to use checksums
37febcbfa262b5d7bcc9df5410c50159e54f5e986746b37a57559569a835fd01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release files / py_near-1.2.22-py3-none-any.whl

Download URL py_near-1.2.22-py3-none-any.whl
Size 59.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
97d177301fc4cbc6ab125702728e3353f102bfd097c58387091ba9ba407d6904
BLAKE2b-256 checksum
How to use checksums
acd36a3be13738e8cadf5c2a0285e72b63aad8fa953d0af1282bf5e2b8d776b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.22 This release

2 release files

1.2.21

2 release files

1.2.20

2 release files

1.2.19

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.1.59

2 release files

1.1.58

2 release files

1.1.57

2 release files

1.1.56

2 release files

1.1.55

2 release files

1.1.54

2 release files

1.1.53

2 release files

1.1.51

2 release files

1.1.50

2 release files

1.1.49

2 release files

1.1.48

2 release files

1.1.47

2 release files

1.1.46

2 release files

1.1.45

2 release files

1.1.44

2 release files

1.1.43

2 release files

1.1.42

2 release files

1.1.41

2 release files

1.1.40

2 release files

1.1.38

2 release files

1.1.30

2 release files

1.1.24

2 release files

1.1.22

2 release files

1.1.21

2 release files

1.1.16

2 release files

1.1.12

2 release files

1.1.11

2 release files

1.1.10

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

1 release file

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

0.1.4

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