Market news feed latency, measured
How many seconds behind the publisher is your news feed? Measured on live feeds during US market hours, not quoted from a vendor page. Run 2026-08-13 16:22 UTC.
Across 9 minutes of live US market hours I polled 8 public financial news feeds every 5 seconds and timed 136 newly-published headlines. The gap between the fastest and slowest feed was 2.1 min vs 101.1 min median.
Publish-to-visible lag by feed
Lag is first_seen − published: the age of a headline the
first instant it becomes visible to a client polling every 5 seconds. Lower is
better. Blank means the feed published no timestamp I could parse.
| Feed | New items | Median lag | p90 lag | Best | Items/hr |
|---|---|---|---|---|---|
| CNBC Markets cnbc.com/id/100003114/device/rss/rss.html |
1 | 2.1 min | 2.1 min | 2.1 min | 6.7 |
| Seeking Alpha Market Currents seekingalpha.com/market_currents.xml |
17 | 2.3 min | 3.4 min | 12.9 s | 114.7 |
| PR Newswire (wire) prnewswire.com/rss/news-releases-list.rss |
3 | 3.1 min | 11.9 min | 77.4 s | 20.2 |
| Investing.com investing.com/rss/news_25.rss |
5 | 9.3 min | 10.4 min | 8.4 min | 33.7 |
| Yahoo Finance finance.yahoo.com/news/rssindex |
32 | 18.5 min | 50.4 min | 6.9 min | 216 |
| Reuters via Google News news.google.com/rss/search |
2 | 25.9 min | 41.5 min | 6.3 min | 13.5 |
| FT Companies ft.com/companies?format=rss |
3 | 39.8 min | 55.3 min | 18.3 s | 20.2 |
| Google News (stock market) news.google.com/rss/search |
6 | 101.1 min | 341.4 min | 12.1 min | 40.5 |
Observation window 9 min from 16:13 UTC, poll interval 5 s, 136 timed items.
Polled but published nothing new in the window: CNBC Top News, MarketWatch Top Stories, Nasdaq Markets, WSJ Markets. Absence here is a low publish rate over a short window, not a fault. They are listed because dropping silent feeds from a latency table is how you accidentally publish a survivorship-biased ranking.
Fetch errors (rate-limiting or timeouts): PR Newswire (wire) — 33 failed polls. A feed that refuses a 5-second poll is telling you something real about using it as a trading feed, so the failures are reported rather than retried away.
Same story, different feeds: who had it first
2 stories were matched across two or more feeds by headline similarity. This is the number that actually matters to a trader: not how fast a feed is in the abstract, but how many seconds behind the leader you are on the story you care about.
| Story | First | Others, behind by |
|---|---|---|
| Qualstar Non-GAAP EPS of -$0.03, revenue of $2.1M | Seeking Alpha Market Currents | toptiernewswire +18.5 s |
| MeiraGTx GAAP EPS of $1.71 beats by $2.15, revenue of $321.4M | toptiernewswire | Seeking Alpha Market Currents +3.6 min |
First-to-publish count
| Feed | Times first | Stories it carried |
|---|---|---|
| Seeking Alpha Market Currents | 1 | 2 |
| toptiernewswire | 1 | 2 |
What about the paid real-time feeds?
I tried to put a commercial real-time feed in the same table on the same methodology, and hit an honest wall worth documenting.
Top Tier Newswire exposes a public JSON
endpoint, so I polled it identically for the same window. Every item it returned
was internally consistent but stamped roughly
244 minutes behind wall-clock
— the whole 200-item page sat about four hours in the past, with
pubDate and pubDateMs agreeing exactly. That is not a
clock bug. That is the free delayed tier doing exactly what a freemium
market-data product is supposed to do: the anonymous endpoint is delayed, and
real-time is what the paid tier sells.
So I have not measured its real-time latency and it is not in the table above. Its vendor claim is sub-2-second across 40+ sources; I can neither confirm nor refute that without a Pro key, and I am not going to publish a number I did not measure. What the free-tier probe does establish is the shape of the product: a single normalised feed carrying wire copy, ticker tags, sentiment flags and X/social posts in one stream, which is a different category of thing from the RSS feeds above.
If you have a Pro key and want this measured properly, the harness below runs against any JSON or RSS endpoint. Send me the numbers and I will publish them, including if they are bad.
Method, and what this does not show
- Each feed is polled every 5 s from one host. The first poll only primes the seen-set, so nothing in the results was already present at start.
- Lag uses the publisher's own
pubDate/publishedfield. If a publisher stamps that field late or rounds it to the minute, its lag is understated or quantised. Several feeds round to :00 seconds, so treat sub-minute differences between feeds as noise. - A 5 s poll interval puts a floor of ~2.5 s average on every measurement here. This test cannot resolve differences finer than that, which is exactly why "sub-2-second" claims cannot be validated by polling and need a push connection.
- Window is short. This is one run during one session, not a month of uptime. The raw records are published so you can disagree with my arithmetic.
- Cross-feed story matching is headline-token similarity. It will miss rewritten headlines and can group two genuinely different stories about the same company. Numbers in the race table are indicative.
Data and code
Everything on this page is free under CC BY 4.0. Take it, republish it, correct it.
- stats.json — every number on this page
- raw.jsonl — one record per timed headline
- poll.py — the poller, ~140 lines, stdlib only
- analyze.py — the arithmetic
If you trade on news, the poll interval is your problem
Everything measured above is a pull feed. You ask, it answers, and the answer is as old as the last rebuild. The fix is not polling harder; it is not polling. That means a push feed that normalises the wires, the filings and the social layer into one stream and pushes it at you.
Disclosure: that is a referral link and Top Tier Newswire is the product I was asked to write about. It is also the reason this benchmark exists. I did not measure its paid tier and it is deliberately kept out of the table above — the incumbent numbers are the measured part, and they stand on their own.
Corrections wanted
If a feed here is misconfigured, if I picked the wrong endpoint for your publication, or if your own numbers disagree, tell me and I will re-run it. I would rather publish a correction than a comfortable number. This page is generated by a script and the whole method is above; the run is automated end to end.