Skip to content

Core Concepts

Polystrike keeps a per-post record of Polymarket’s post-count markets for three accounts:

AccountPlatformAPI {user}How often we read it
Elon Musk (@elonmusk)Xelonevery 1 s
Ted Cruz (@tedcruz)Xcruzevery 5 s
Donald Trump (@realDonaldTrump)Truth Socialtrumpevery ~15 s, falling back to about every 5 minutes when Truth Social blocks the fast reader

We sell the record: counts, posts, bucket prices and their history. We do not sell forecasts, trading signals, position sizing or portfolio advice; those were retired on 2026-11-08.

For every open market window we keep three numbers:

CounterFieldMeaning
Our countreal_counterQualifying posts we captured in the window, under the rules below.
XTracker countpolymarket_xtracker_counterThe settlement oracle’s count. XTracker updates about every 5 minutes. This is the number the market pays on.
Page countpolymarket_ui_counterThe number the Polymarket market page shows. Display only; it can lag or freeze.

And the gaps between them:

FieldFormula
settlement_deltareal_counter - polymarket_xtracker_counter
display_deltareal_counter - polymarket_ui_counter
internal_deltapolymarket_ui_counter - polymarket_xtracker_counter

The gaps are timing, not a trading signal. A positive settlement_delta usually means XTracker has not scraped a new post yet; after a deletion it can also mean XTracker missed a post we kept. The order book prices off the settling count, and our own research found trading the page-vs-oracle gap roughly breakeven.

  • X (Elon Musk, Ted Cruz): main-feed posts, quote posts, reposts and main-feed replies count; in-thread replies and community reposts don’t.
  • Truth Social (Donald Trump): Truths, quote Truths and ReTruths count; replies don’t.

Every post in the API carries is_counted, our verdict under these rules.

When the window closes, the bucket containing XTracker’s final in-window count resolves YES; every other bucket resolves NO. Our count does not settle anything; it is a second, independent record.

Rule in force since 2026-08-06:

  • Our count keeps every qualifying post we captured while it was live, even after it is deleted. The post is flagged is_deleted and keeps is_counted: true.
  • XTracker still counted about 7 in 10 of the deletions we caught (52 measured). A post deleted before XTracker’s next scrape (about every 5 minutes) can be missed, so after a deletion our count can read 1-3 above XTracker’s.
  • The Truth Social market counts deleted posts once they were captured.
  • On X we re-read the full timeline every 10 minutes, and a post must be missing from two re-reads in a row before we flag it, so is_deleted appears about 20 minutes after the deletion. The post keeps counting either way.

The recent-posts feeds (/api/v1/meta/elon/tweets, /api/v1/meta/cruz/tweets, /api/v1/meta/trump/posts) leave deleted posts out. The full record, deletions included, is /api/v1/history/{user}/tweets.

WhatFigure
@elonmusk: post published to countedmedian 11.5 s, p90 12.6-15.1 s, p99 28.2 s, worst logged 631 s (measured on production 2026-07-29, for @elonmusk only)
X’s timeline indexneeds about 10.8 s to list a new post, so polling harder does not move the median
@tedcruzpolled every 5 s; the 11.5 s figure was measured for Elon only and does not apply here
@realDonaldTrump (Truth Social)read every ~15 s, or about every 5 minutes when the fast reader is blocked; the 11.5 s figure does not apply here
XTracker (not ours)updates about every 5 minutes
API with a Data key or x402counters live ("freshness": "live")
Counter pages on polystrike.xyzpublic and server-rendered, about 30 minutes behind; each page shows the UTC time it was generated

These figures tell you how current a number is, nothing more. In our own paper testing, when a post pushed the count past a bucket boundary, the price had finished moving within about 2-3 seconds, before our feed had the post.

Data keyPay per call (x402)Public archive
Price$29 for 30 days, $290 for a year$0.01 per callopen
AuthX-API-Key headerx402 payment, no keynone
Rate limit10,000 requests/hourno hourly cap-
Counterslivelivesnapshots older than 30 days
Postsup to 100 per page with is_counted, plus the full archivesame as Datano
History (/api/v1/history/*)yesyesno
Bulk parquetfull archivenofiles older than 30 days
WebSocket /wsyesnono

There is no free tier and no free key. A data endpoint called without a key or payment answers HTTP 402. See API Overview for how to pay.