Datasets

The price tape, free. Since 22 June 2026 three pollers on this box have written a row every time a Kalshi, Polymarket or Manifold market’s ask moved a cent — or once an hour when it did not. That is 45,111,780 rows in the 3 finished months published so far, one compressed CSV per month, with a checksum and the poller’s own day-by-day count so you can see any hour it was down. It is the same tape our bots are backtested on.

What is real here, and what is not. These are our observations of public prices, at the times our pollers asked — not the venues’ official history and not every trade. Only Kalshi rows carry a real bid; the Polymarket and Manifold pollers write the ask into both columns. A market that did not move is silent for up to an hour. A month is exported only after it ends; June 2026 begins on the 22nd, when collection started, so it is a partial month. License: CC BY 4.0 — use it, cite TinyCorp Signal, tinycorp.ai/datasets. Nothing here is investment advice.

The files

2026-09 — market-price-snapshots-2026-09.csv.gz

5,599,135 rows106 MB gzip412,464 markets — 343,342 Kalshi · 65,258 Polymarket · 3,864 Manifold2026-09-01T00:00:02 → 2026-09-30T23:58:01 UTC

Download 2026-09 (106 MB)   checksum

sha256 d57e3fbf6f630bc24ffdcbeafd03142d5fecda860e6ea64304d353a31f949451
Rows per day, 2026-09-01 → 2026-09-30. Every day has rows; a short dip is the pollers, not the markets. Exported 2026-10-01T02:05 UTC in 133 s.

2026-08 — market-price-snapshots-2026-08.csv.gz

15,719,040 rows302 MB gzip407,224 markets — 341,050 Kalshi · 62,205 Polymarket · 3,969 Manifold2026-08-01T00:00:02 → 2026-08-31T23:59:01 UTC

Download 2026-08 (302 MB)   checksum

sha256 5d16f485a7259a02b2294b18c8ef8c8db753247508f119fca9aa8c3539504a1b
Rows per day, 2026-08-01 → 2026-08-31. Every day has rows; a short dip is the pollers, not the markets. Exported 2026-09-17T05:19 UTC in 423 s.

2026-07 — market-price-snapshots-2026-07.csv.gz

23,793,605 rows461 MB gzip330,279 markets — 262,565 Kalshi · 63,670 Polymarket · 4,044 Manifold2026-07-01T00:00:02 → 2026-07-31T23:59:02 UTC

Download 2026-07 (461 MB)   checksum

sha256 def2cebd44d1a9ca2f2923000403084edc00ed3d7d7dd8ea7dc16b163f6798d7
Rows per day, 2026-07-01 → 2026-07-31. Every day has rows; a short dip is the pollers, not the markets. Exported 2026-09-17T05:12 UTC in 645 s.

Collection changes

The tape is an event feed, and the rule that decides when a row is written has changed. Anyone comparing months should know when.

2026-08-20 — Heartbeat row interval raised from 240 s to 3,600 s and rows byte-identical to the previous row for the same ticker are no longer written (predictive/kalshi_poller.py, polymarket_poller.py, manifold_poller.py). Rows per day fell from about 747,000 (1 Jul-19 Aug mean) to about 169,000 (21-31 Aug mean); 20 Aug itself is a half-and-half day (321,536 rows). A quiet market now goes silent for up to an hour instead of four minutes; the row rule in `schema.row_rule` describes the tape from this date on. Affects: every month from 2026-08; 2026-07 is entirely pre-change.

Who reads this data

Requests to tinycorp.ai in the 7 days 2026-10-01 to 2026-10-07 (UTC), by user-agent family. 22,267 requests in all; 6,011 from clients that named themselves an AI crawler or assistant (marked AI) — of those, 324 verified as coming from the operator’s own published address range, 78 claimed (the name without the address), and 5,609 from families whose operator publishes no range. Unit: requests, nginx access log, bots classified by user-agent — a family’s absence means it did not identify itself, not that it did not come. Requests, not visitors and not pageviews.

Verified means the request said it was that crawler and came from an IP address inside the range its operator publishes — Anthropic, OpenAI, Perplexity, Google and Microsoft each publish one. Claimed means the user-agent said so but the address was not on that list: anyone can type any user-agent, and the claimed rows are mostly scanners probing for /.env under a famous name. A family marked UA only has no published range, so its count is the name alone. In the bars, the solid part is verified, the amber part claimed, and a faint bar is UA only.

FamilyVerifiedClaimedTotal
human-ishUA only — no published range13,061
meta-externalagentAIUA only — no published range5,335
other-botUA only — no published range2,327
Bingbotverified 316claimed 5321
Googlebotverified 276claimed 12288
GoogleOtherverified 216claimed 0216
ClaudeBotAIverified 189claimed 19208
AmazonbotAIUA only — no published range196
OAI-SearchBotAIverified 79claimed 1897
ChatGPT-UserAIverified 48claimed 957
BytespiderAIUA only — no published range51
ApplebotUA only — no published range43
CCBotAIUA only — no published range21
PerplexityBotAIverified 2claimed 1820
GPTBotAIverified 6claimed 1016
cohere-aiAIUA only — no published range6
Google-ExtendedAIverified 0claimed 44

Address ranges last fetched 2026-10-07 01:44 UTC from 9 published lists. Rebuilt nightly; last built 2026-10-07 01:44 UTC. The same numbers, 14 days, the top paths per family, the claimed paths and the range sources, as JSON: /api/data/readers.json. It is a separate, read-only count over the web server’s log and feeds nothing else on the site.

Schema

Eight columns, UTF-8 CSV with a header row, sorted by polled_at then ticker. Read from the pollers’ own code, not from memory.

ticker
Kalshi: market ticker (KX...). Polymarket: market slug. Manifold: 'mf-' + slug.
polled_at
ISO-8601 UTC, second resolution, the poller's clock.
yes_bid, yes_ask, last_price
yes_bid, yes_ask, last_price in cents 0-100. Only Kalshi rows carry a real bid; the Polymarket and Manifold pollers write the ask into both bid and ask.
volume, volume_24h, open_interest
volume, volume_24h, open_interest as the platform reported them.

How it was collected

Reading it

zcat market-price-snapshots-2026-08.csv.gz | head — or in Python, pandas.read_csv("market-price-snapshots-2026-08.csv.gz"); the file is plain gzip. Prices are integers in cents, so divide by 100 for probabilities. Join Kalshi tickers to titles through the Kalshi API; Polymarket slugs are the URL path on polymarket.com.

Questions or a correction: contact. The bots that trade on this tape, and the ones that died trying, are in the Graveyard.