PMWallets
EN

交易历史导出

按日期区间一次购买,每个钱包每天一个文件。

交易历史:一次性

按天收费,区间越长,日费率越低。费率按边际方式分档:90 天的区间,前 30 天按 $0.07/天算,中间 30 天 $0.06,最后 30 天 $0.05,合计 $5.40 。后续档位不影响前面天数的价格。

每个实体按天计费,多个实体的费用相加:

天数每天
1–30$0.07
31–60$0.06
61–90$0.05
91–180$0.03
181–365$0.02
366+$0.01

前 90 天费率最高,因为近期活动更能反映钱包当前的表现。

最少 30 天,单笔订单最多 25 个实体。一次购买即可保留数据,无需续费。

导出:先报价

POST/v1/account/exports/quoteAPI key

报价不扣费、不保存记录,也不查询所填钱包的数据。价格只取决于日期区间和实体数量。不返回行数:某段日期的精确行数可能暴露钱包身份,免费报价因此可能用于匹配地址与榜单 handle。购买后可在订单中查看实际行数。

shell
curl -X POST https://api.pmwallets.com/v1/account/exports/quote \
  -H 'content-type: application/json' \
  -H "Authorization: Bearer $PMW_KEY" \
  -d '{"entityIds":["0x9a3f…21e8"],"from":"2026-06-01","to":"2026-08-29"}'
# → 201 (a POST, although nothing is created)
json
{
  "window":   { "from": "2026-05-04", "to": "2026-09-19", "days": 139 },
  "from": "2026-06-01", "to": "2026-08-29", "days": 90,
  "sellable": true,
  "entities": 1,
  "orderPriceCents": 540,
  "perEntityCents": 540,
  "discount": 1,
  "price": { "cents": 540, "usd": 5.4, "cny": 35 },
  "breakdown": [
    { "fromDay": 1,  "toDay": 30, "days": 30, "perDayCents": 7, "cents": 210 },
    { "fromDay": 31, "toDay": 60, "days": 30, "perDayCents": 6, "cents": 180 },
    { "fromDay": 61, "toDay": 90, "days": 30, "perDayCents": 5, "cents": 150 }
  ]
}

不可售区间返回 sellable: false 和原因: below_minimum 或 no_data,不作为错误处理。日期选择器可以显示该区间并说明不可售原因。window 是实际有数据的日期范围,请求区间超出时会缩到此范围内。

GET /v1/account/exports/window 返回该日期范围,以及四个快捷区间 (30、60、90 天和全部)的报价。

导出:下单与下载

POST/v1/account/exportsAPI key

请求体与报价接口相同。服务端按费率表重新计算价格,客户端显示的报价不参与扣款计算。 文件已生成,无需等待:订单返回时就是 ready,因为你买的是对已有文件的访问权。 每个 UTC 日结束后,我们为当天每个有成交的钱包生成一个文件,所以可买的最新一天是昨天。 下单时每个实体占用 1 次每日不同实体额度(超出返回 403);报价不占额度。

shell
# same body as the quote, plus the price you accepted as a ceiling — the price is recomputed here,
# and if it is now above maxPriceCents nothing is charged: 409 price_changed with the new quote
curl -X POST https://api.pmwallets.com/v1/account/exports \
  -H 'content-type: application/json' -H "Authorization: Bearer $PMW_KEY" \
  -d '{"entityIds":["0x9a3f…21e8"],"from":"2026-06-01","to":"2026-08-29","maxPriceCents":540}'
# → 201 {"id":"7c1e…","priceCents":540,"days":90,"rows":12483,"status":"ready"}

# the files it grants: one per wallet per UTC day (a wallet with no fill that day has none)
curl https://api.pmwallets.com/v1/account/exports/7c1e…/files -H "Authorization: Bearer $PMW_KEY"
# → {"files":[{"wallet":"0x5b71…0cd2","day":"2026-06-01","rows":212,"bytes":9841,
#              "path":"/v1/account/data/0x5b71…0cd2/2026-06-01"}, …]}

# each path answers with a 302 to a short-lived link; -L follows it
curl -L -o 0x5b71…0cd2-2026-06-01.csv.zst \
  https://api.pmwallets.com/v1/account/data/0x5b71…0cd2/2026-06-01 -H "Authorization: Bearer $PMW_KEY"

GET /v1/account/exports/:id/files 列出一个订单包含的文件;GET /v1/account/data/:wallet/:day 检查账户是否已购买该钱包当天的数据,然后 302 到一个有效 5 分钟的签名链接。两个接口都支持 API key。每次请求都会生成新的签名链接,链接不保存; 文件不会过期,需要时可重新下载。某个钱包某天没有成交就没有文件,请求它和请求未购买的日期一样返回 404。

文件是 zstd 压缩的 CSV(.csv.zst),按时间正序。 钱包和日期已经在路径里,每行不再重复;金额是账本整数(6 位小数)。pandas、polars、DuckDB 都能直接读.csv.zst。

csv
ts,block,blockHash,txHash,logIndex,exchange,side,role,tokenId,price,shares,usdc,fee
2026-06-01 14:02:11,93912410,0x8f2c…,0x4d0e…,41,pm_ctf_v2,BUY,taker,3200000000…,0.57,3200000000,1824000000,0

导出包含完整链上账本,不做 API 采样。Polymarket 自己的成交接口每个钱包最多给到 10,000 条历史成交; 这里没有这个上限,数据来自我们采集的 Polygon 日志。导出包含实体名下的全部地址,每个地址一个文件。