Skip to main content

Polymarket Python SDK

Official Python SDK for Polymarket.

The SDK gives Python developers one coherent, workflow-oriented interface for building on Polymarket across public data, authenticated account, trading, builder attribution, and wallet workflows.

Installation

uv add polymarket-client

or:

pip install polymarket-client

Usage

Synchronous client:

from polymarket import Market, PublicClient

with PublicClient() as client:
    market: Market = client.get_market(url="https://polymarket.com/event/example-market")

Asynchronous client:

import asyncio

from polymarket import AsyncPublicClient, Market


async def main() -> None:
    async with AsyncPublicClient() as client:
        market: Market = await client.get_market(
            url="https://polymarket.com/event/example-market"
        )


asyncio.run(main())

Batch position merges:

# Merge regular market positions by condition or market id.
handle = client.merge_multiple_positions(
    positions=[
        {"condition_id": condition_id_1},
        {"market_id": market_id_2, "amount": "max"},
        {"condition_id": condition_id_3, "amount": 500_000},
    ],
)

outcome = handle.wait()

# Or merge combo positions by position id. Do not mix market and combo
# requests in the same batch.
handle = client.merge_multiple_positions(
    positions=[
        {"position_id": combo_position_id_1},
        {"position_id": combo_position_id_2, "amount": "max"},
        {"position_id": combo_position_id_3, "amount": 500_000},
    ],
)

outcome = handle.wait()

API Compatibility

The SDK follows semantic versioning. Although minor releases on the 0.x line may include breaking changes, we aim to avoid them and, whenever possible, provide a deprecation path before removing or changing an API. Patch releases remain backward compatible except for APIs marked experimental, which may change in any release. All Perps APIs are currently experimental, including client methods, sessions, stream subscriptions, and models.

API Design

See SDK Direction for public API design principles and developer-experience decisions.

Development

Install dependencies:

make sync

Run checks:

make check

Build package artifacts:

make build

Build the Mintlify-compatible Sphinx JSON API-reference artifact:

make api-reference

The ZIP is written to build/api-reference/polymarket-client-sphinx.zip. The API Reference GitHub Actions workflow can also generate it manually for a selected branch or commit. Successful package releases attach a versioned copy to the corresponding GitHub Release.

The Makefile is a thin convenience wrapper around uv. Running the underlying commands directly is also fine.

Testing

Unit tests run by default:

make test

Run unit tests in watch mode:

make test-watch

This runs the tests once immediately, then reruns them when Python files change.

Integration tests are opt-in:

make test-integration

Integration tests can load local secrets from a gitignored .env copied from .env.example:

cp .env.example .env

See .env.example for the supported local and CI secret names.

Tests that require credentials should use the require_env fixture so they skip when secrets are unavailable:

import pytest


@pytest.mark.integration
def test_authenticated_flow(require_env):
    private_key = require_env("POLYMARKET_PRIVATE_KEY")
    builder_api_key = require_env("POLYMARKET_BUILDER_API_KEY")

    assert private_key
    assert builder_api_key

The SDK does not load .env files at runtime. The integration test fixture loads .env only for tests that request credentials, and existing environment variables take precedence over local .env values.

Tests that place orders, spend funds, or mutate live state must also use @pytest.mark.metered. Metered tests are skipped unless POLYMARKET_RUN_METERED_TESTS=1 is set:

import pytest


@pytest.mark.integration
@pytest.mark.metered
def test_order_lifecycle(require_env):
    private_key = require_env("POLYMARKET_PRIVATE_KEY")

    assert private_key
POLYMARKET_RUN_METERED_TESTS=1 make test-integration

Contributing

We welcome bug reports, feature requests, and feedback through GitHub Issues. See CONTRIBUTING.md before proposing code changes.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

polymarket_client-0.6.0.tar.gz (359.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

polymarket_client-0.6.0-py3-none-any.whl (314.9 kB view details)

Uploaded Python 3

File details

Details for the file polymarket_client-0.6.0.tar.gz.

File metadata

  • Download URL: polymarket_client-0.6.0.tar.gz
  • Upload date:
  • Size: 359.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for polymarket_client-0.6.0.tar.gz
Algorithm Hash digest
SHA256 e1c407298d6eec7bb255fda0e1d7a77577dbd6fce500a3083e50fbf340f500a9
MD5 b7d5459b10e96fed982e44f0528209dc
BLAKE2b-256 12ddc3017a3da0cc7e632c9016d14817879ac99f68d78a01957009b12456f4c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for polymarket_client-0.6.0.tar.gz:

Publisher: publish.yml on Polymarket/py-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file polymarket_client-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for polymarket_client-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fea3916a9bc7d038c80c76b15797411b1753af1940393e5c2ca17096e85dec0e
MD5 ebe7a59b6de0774ec3287cc06edff741
BLAKE2b-256 ffc98a87d82125f8f991a7d0edc59ab12373388860eb31ca09e358a66187c0d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for polymarket_client-0.6.0-py3-none-any.whl:

Publisher: publish.yml on Polymarket/py-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.
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