Open API.
The same data that feeds Open Current, free for anyone to build on. Read-only JSON, open CORS, no key, no sign-up. Every response is served from Netlify's cache, so it's fast for you and costs the project almost nothing.
Fair use & attribution
- Link back to the original source. Every item has a
u(URL) ands(source name). Show them, and send readers to the original. Please also mention “via Open Current” with a link tohttps://open-current-feed.netlify.app. - Be cache-friendly. Feeds refresh every 10 to 60 minutes (see each endpoint). Polling more often than every 5 minutes gets you the same cached answer. Extra query parameters are ignored by the cache, so don't try to bust it.
- Headlines and snippets only. We pass on titles, short descriptions and links from public feeds. The articles belong to their publishers.
- No personal data. We don't log requests, IPs or queries, and there are no keys to track you with.
- Best effort, no guarantees: a source can go quiet or change its feed at any time. Please don't use this for anything safety-critical or financial decisions.
Endpoints
GET/api/feed/{pack}
Newest headlines from an allowlisted, https-only set of feeds, deduplicated and sorted newest first. Each sources entry is the number of items that feed returned this refresh.
| pack | what | refresh |
|---|---|---|
global | World desks: 100+ newsrooms, 30+ languages, every region (items carry l language and r region) | 30 min |
world | Major English-language world news | 30 min |
techpress | Tech press | 30 min |
war | Conflict and humanitarian reporting | 20 min |
memes | Meme communities (image posts) | 20 min |
arxiv | New arXiv papers | 2 h |
ytchannels | New videos from public YouTube channels | 60 min |
substack | Independent newsletters | 2 h |
art | Art and design publications, NFT/crypto-art news and Lemmy art communities (NSFW and nudity-worded items removed) | 30 min |
GET/api/crypto-news
Headlines from 13 crypto newsrooms, newest first. Refreshes every 20 minutes.
GET/api/discover?q={query}
Independent-web search across Wiby, arXiv and Kagi Small Web, with big platforms, insecure and risky links removed. Cached for an hour per query. ?surprise=1 returns a list of random small-web pages. (On the Discover page, Marginalia, Hacker News, Lemmy, Mastodon, OpenAlex and Wikipedia are asked directly from the browser.)
Item format
{
"updated": 1794579407000, // when this response was built (ms since 1970, UTC)
"sources": { "DW English": 3, … }, // items per feed in this refresh
"items": [{
"s": "RTP Notícias", // source / outlet name
"t": "Headline", // title
"u": "https://…", // original link (https only, checked)
"d": "Short description", // snippet, may be empty
"i": "https://…jpg", // image, optional
"ts": 1794579407000, // published time (ms, UTC; never in the future)
"l": "pt", // language, when known
"r": "europe", // region (global pack)
"k": ["news"] // topics
}]
}
Discover returns { q, results:[{ u, t, d, e (engine), c (category) }], counts, dropped, errors }.
Live streams: connect directly
Open Current doesn't proxy the real-time firehoses: your app can connect to them straight away, exactly like our pages do in your browser.
WSSBluesky Jetstream
Every public Bluesky post as JSON. Add &cursor= (microseconds) to replay up to about a day.
wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=app.bsky.feed.post
WSSNostr relays
Send ["REQ","sub",{"kinds":[1],"since":<unix seconds>}] to any public relay.
wss://relay.primal.net · wss://nos.lol · wss://offchain.pub · wss://relay.nostr.net
SSEWikimedia EventStreams
Server-sent events for every new page, edit and upload across Wikimedia projects.
https://stream.wikimedia.org/v2/stream/page-create https://stream.wikimedia.org/v2/stream/recentchange
GETAlso public
Hacker News: https://hacker-news.firebaseio.com/v0/newstories.json · Mastodon: https://{server}/api/v1/timelines/public?local=true · Lemmy: https://{server}/api/v3/post/list?sort=New · Misskey: POST https://{server}/api/notes/local-timeline. Please respect each network's own rate limits and terms.
Example
const r = await fetch("https://open-current-feed.netlify.app/api/feed/global");
const { items } = await r.json();
for (const it of items.slice(0, 10))
console.log(`${it.t} (${it.s}) ${it.u}`); // always keep the source link
For AI tools and crawlers there's a plain-text guide at /llms.txt. Questions or a feed to suggest? See Sources.