How to Export Your Polymarket Trade History (CSV or JSON for Taxes and Tracking)

Step-by-step: pull every Polymarket trade, deposit, withdrawal and redemption for your wallet using the public Data API, turn it into a CSV in Google Sheets or Excel, and understand each column. No login or API key needed.

New to Polymarket? Create an account and place your first trade in a few minutes.

Get Started

Polymarket records everything you do on-chain and exposes it through a public, read-only API. That means you can pull your entire history, every trade, deposit, withdrawal and redemption, without logging in, without an API key, and without waiting for a support ticket. Here is the fastest way to do it and how to read what comes back.

Need an account first?

Sign Up on Polymarket

Step 1: Copy Your Wallet Address

  1. Open polymarket.com and sign in.
  2. Click your profile icon in the top-right corner.
  3. Copy the wallet address shown in the menu. It starts with 0x and is 42 characters long.

This is your Polymarket account wallet, the address that holds your positions. If you signed in with MetaMask or another external wallet, do not use the MetaMask address itself; Polymarket created a separate smart wallet for you, and that is the one to export. More on the difference in How to Find Your Polymarket Wallet Address.

Step 2: Open the Activity Feed in Your Browser

Paste this into your address bar, replacing the zeros with your address:

https://data-api.polymarket.com/activity?user=0x0000000000000000000000000000000000000001&limit=500&offset=0

Your browser shows a JSON list. Each item is one event in your history. If you have more than 500 events, change offset=0 to offset=500, then 1000, and so on until the list comes back empty.

To get only trades, add &type=TRADE. Other types you can filter for:

TypeWhat it is
TRADEA buy or sell fill in a market
REDEEMWinning shares converted to cash after a market resolved
DEPOSIT / WITHDRAWALFunds moving in or out of your account
SPLIT / MERGECash converted into a full Yes + No set, or back again
REWARDLiquidity or holding rewards paid to you

Step 3: Save It and Convert to CSV

Three options, from simplest to most flexible:

Option A: Google Sheets. Save the browser page as a .json file (File → Save Page As). Then in a new Google Sheet use Extensions → Apps Script, or simpler, open a free "JSON to CSV" converter site, paste the text, download the CSV and import it with File → Import.

Option B: Excel. Excel's Data → Get Data → From File → From JSON handles the file directly. Click "To Table", expand the record column, and you have one row per event.

Option C: Python, if you want it repeatable. This pulls every page and writes a CSV:

import csv, requests

ADDRESS = "0x0000000000000000000000000000000000000001"   # your account wallet
rows, offset = [], 0
while True:
    batch = requests.get("https://data-api.polymarket.com/activity",
                         params={"user": ADDRESS, "limit": 500, "offset": offset}, timeout=20).json()
    if not batch:
        break
    rows += batch
    offset += 500

keys = sorted({k for r in rows for k in r})
with open("polymarket-history.csv", "w", newline="") as f:
    w = csv.DictWriter(f, fieldnames=keys)
    w.writeheader(); w.writerows(rows)
print(len(rows), "events saved")

Step 4: Read the Columns

The fields you will actually use:

FieldMeaning
timestampUnix seconds. In Sheets: =A2/86400 + DATE(1970,1,1) and format as date.
typeTRADE, REDEEM, DEPOSIT, etc.
title / slugThe market question and its URL slug
outcomeYes or No (or the named outcome in multi-outcome markets)
sideBUY or SELL
sizeNumber of shares
pricePrice per share in dollars, 0 to 1
usdcSizeDollar value of the fill (size × price)
transactionHashPolygon transaction. Paste into polygonscan.com to verify.

For realized profit per market, pull the closed-positions view instead:

https://data-api.polymarket.com/positions?user=0x...&status=CLOSED

Each row includes your average entry price, total cost and realized PnL for that market, which is usually what an accountant wants.

Using the Export for Taxes

Tax tools like Koinly or CoinTracker can read your Polygon address directly, but they often show Polymarket's outcome tokens as unknown assets. The CSV above is cleaner because every row already has a dollar value. Import it as a custom transaction file, or hand the per-market realized PnL table to your accountant.

How those numbers are taxed depends on where you live. Our tax implications guide covers the main scenarios for U.S., UK, EU and other readers.

Exporting Perps History

Perpetual futures use a separate system with its own ledger. Your fills, funding payments and liquidations are at GET /v1/account/fills and GET /v1/account/funding on the perps API, but those endpoints need an authenticated session created with the official @polymarket/client or polymarket-client SDK. The Portfolio page in the Perps tab shows the same data on screen. See the Perps guide for how the margin and funding columns work.

Troubleshooting

The URL returns an empty list. Double-check the address. The most common mistake is pasting a signer address instead of the account wallet shown in your Polymarket profile.

Some trades are missing. You hit the 500-per-page limit. Increase the offset and append the next page.

Deposits and withdrawals don't appear. Add &exclude_deposits_withdrawals=false to the URL. Some API versions hide them by default.

Timestamps look like big numbers. They are Unix seconds. Convert them with the formula above.

Trade events and perps from one account

Get Started on Polymarket