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 StartedPolymarket 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 PolymarketStep 1: Copy Your Wallet Address
- Open polymarket.com and sign in.
- Click your profile icon in the top-right corner.
- Copy the wallet address shown in the menu. It starts with
0xand 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:
| Type | What it is |
|---|---|
TRADE | A buy or sell fill in a market |
REDEEM | Winning shares converted to cash after a market resolved |
DEPOSIT / WITHDRAWAL | Funds moving in or out of your account |
SPLIT / MERGE | Cash converted into a full Yes + No set, or back again |
REWARD | Liquidity 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:
| Field | Meaning |
|---|---|
timestamp | Unix seconds. In Sheets: =A2/86400 + DATE(1970,1,1) and format as date. |
type | TRADE, REDEEM, DEPOSIT, etc. |
title / slug | The market question and its URL slug |
outcome | Yes or No (or the named outcome in multi-outcome markets) |
side | BUY or SELL |
size | Number of shares |
price | Price per share in dollars, 0 to 1 |
usdcSize | Dollar value of the fill (size × price) |
transactionHash | Polygon 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 PolymarketRelated Articles
Trade History
Learn how to view your Polymarket trade history, track open positions, and check your profit and loss (PnL). Step-by-step guide to the activity log, portfolio page, and return calculations.
Taxes
Do you need to pay taxes on your Polymarket winnings?
Find Wallet Address
Where to copy your Polymarket wallet address, the difference between your account wallet and your signer address, which one to use for deposits, lookups and support, and how to check it on Polygonscan.
Open Orders & Cancel
Where open limit orders live on Polymarket, how to cancel one or all of them, what partial fills mean, why a resting order never executes, and how cancellation works when a market is about to resolve. Covers prediction markets and perps.