Open RSS
App · Feeds & Read-Later · 4 actions
Get the newest posts from any website, even one that publishes no feed of its own. Type the address the way you'd type it in a browser - a news site, a blog, a YouTube channel, a subreddit, a Bluesky account, a GitHub project's releases - and Open RSS finds the feed. Read one website or merge several into a single digest, keep only what's new since the last run, and get every post the same way: headline, link, author, date, a plain-text summary and a picture. Open RSS is a nonprofit and the service is free, with no account and no API key.
Actions
| Action | What it does |
|---|---|
| Find a website's feed | Check whether Open RSS has a feed for a website, and get its address to paste into a reader app - along with the website's name, icon, when it last published, and anything Open RSS wants you to know about it, such as that the website already publishes a feed of its own. |
| Get latest posts | Get the newest posts from any website - a news site, a blog, a YouTube channel, a subreddit, a Bluesky account, a GitHub project's releases. |
| Get latest posts from several websites | Read several websites at once and get one list of posts, newest first, each tagged with where it came from - a daily digest, a competitor watch, a reading list, in one step instead of a loop. |
| Get Open RSS news | Read Open RSS's own writing: the blog, for news about RSS and the open web, or the changelog, for what the service itself changed. |
Find a website's feed
Check whether Open RSS has a feed for a website, and get its address to paste into a reader app - along with the website's name, icon, when it last published, and anything Open RSS wants you to know about it, such as that the website already publishes a feed of its own. This never stops a run: a website with no feed yet comes back as an answer, not an error, so a workflow can branch on it. And asking is not wasted - Open RSS adds a website it has no feed for to its backlog to build one.
Inputs
- Website
websitetextRequired - The website you want posts from, exactly as you'd type it in a browser - a whole site ('theverge.com'), or one page of it ('reddit.com/r/rss', 'youtube.com/@veritasium'). Open RSS finds the feed; you never need to hunt for a feed address.
Outputs
already_has_its_own_feedtrue/false- Whether the website publishes a feed of its own. Reading it through Open RSS still repairs and speeds it up.
descriptiontext- How the website describes itself.
feed_urltext- The Open RSS address of this feed - what to paste into a reader app, or to subscribe a teammate to.
foundtrue/false- Whether there is a feed to read right now. Branch on this.
icon_urltext- The website's icon, when it has one.
languagetext- The language it publishes in, when it says.
newest_postobject- The most recent post, for a quick look at what the feed carries. Nothing when it's empty.
noticeslist- What Open RSS wants you to know about this feed.
own_feed_urltext- That feed's address, when the website has one.
post_countnumber- How many posts the feed holds right now.
recheck_aftertext- When it's worth asking again, as a UTC timestamp, when Open RSS said. Nothing when there's already a feed.
statustext- 'available' - there's a feed, and 'feed url' is its address. 'no_feed_yet' - there isn't one yet, and asking has added the website to Open RSS's backlog. 'website_unavailable' - the website itself is having trouble right now, so try again shortly.
summarytext- The result as a sentence, ready to put in a message.
titletext- The website's name.
updatedtext- When the feed last changed, as a UTC timestamp.
websitetext- The website, as it was asked for.
website_urltext- A link to the website itself.
Example output
{
"already_has_its_own_feed": true,
"description": "",
"feed_url": "https://openrss.org/feed/www.theverge.com",
"found": true,
"icon_url": "https://platform.theverge.com/wp-content/uploads/verge-rss.png",
"language": "",
"newest_post": {
"published": "2026-09-13T19:41:48Z",
"title": "Trump and Mike Johnson think the AI industry is overreacting",
"url": "https://www.theverge.com/ai/994441/trump-mike-johnson-ai-overreacting"
},
"notices": [
{
"links": [
"https://www.theverge.com/rss/index.xml"
],
"message": "This feed already exists at https://www.theverge.com/rss/index.xml. But accessing it through openrss.org allows our systems to detect and resolve any possible issues, improve its performance, and increase its reliability over time.",
"type": "info"
}
],
"own_feed_url": "https://www.theverge.com/rss/index.xml",
"post_count": 10,
"recheck_after": null,
"status": "available",
"summary": "Open RSS has a feed for The Verge: https://openrss.org/feed/www.theverge.com (10 posts). The Verge already publishes its own feed at https://www.theverge.com/rss/index.xml; reading it through Open RSS still repairs and speeds it up.",
"title": "The Verge",
"updated": "2026-09-13T20:54:00Z",
"website": "theverge.com",
"website_url": "https://www.theverge.com"
}Get latest posts
Get the newest posts from any website - a news site, a blog, a YouTube channel, a subreddit, a Bluesky account, a GitHub project's releases. Type the address the way you'd type it in a browser; Open RSS finds the feed, whether or not the website publishes one. Every post comes back the same way - headline, link, author, when it went up, a plain-text summary and a picture - so nothing downstream has to care what kind of website it came from. Ask for only what's new since a moment, or only posts mentioning a word.
Inputs
- Website
websitetextRequired - The website you want posts from, exactly as you'd type it in a browser - a whole site ('theverge.com'), or one page of it ('reddit.com/r/rss', 'youtube.com/@veritasium'). Open RSS finds the feed; you never need to hunt for a feed address.
- How many posts
limitnumber - Optional. How many of the newest posts to return. A feed holds only the most recent posts - usually about ten - so this trims what's there rather than asking for more; 'total in feed' says how many there were. Defaults to 10.From 1 to 100. Default:
10. - Published after
published_afterdate and time - Optional. Only posts published after this moment - which is how a workflow that runs on a schedule picks up just what's new. Pick a date and time, or pass the 'newest published' from an earlier run straight back in. A post whose feed gave it no date can't be shown to be newer, so it's left out and counted.
- Only posts mentioning
containstext - Optional. Only posts whose title, author, summary or body mention this word or phrase. Capitals are ignored.
- Include the full post
include_contenttrue/false - Include each post's whole body, as plain text and as HTML, on top of the summary every post already carries. Turn this on to summarise or translate the posts in a later step; leave it off to keep the result small.Default:
false.
Outputs
countnumber- How many posts came back.
feedobject- The feed the posts came from.
newest_publishedtext- When the newest of them went up, as a UTC timestamp. Pass it to 'Published after' next run to pick up only what's new.
oldest_publishedtext- When the oldest of them went up.
postslist- The posts, newest first.
skipped_without_a_datenumber- How many posts were left out because their website published no date for them and so they couldn't be judged against 'Published after'. Zero unless that filter was used.
summarytext- The result as a sentence, ready to put in a message.
total_in_feednumber- How many posts the feed held, before the limit and any filters. A feed carries only the most recent posts, so this is the whole of what Open RSS can offer for this website right now.
websitetext- The website, as it was asked for.
Example output
{
"count": 1,
"feed": {
"description": "",
"feed_url": "https://openrss.org/feed/www.theverge.com",
"icon_url": "https://platform.theverge.com/wp-content/uploads/verge-rss.png",
"language": "",
"notices": [
{
"links": [
"https://www.theverge.com/rss/index.xml"
],
"message": "This feed already exists at https://www.theverge.com/rss/index.xml. But accessing it through openrss.org allows our systems to detect and resolve any possible issues, improve its performance, and increase its reliability over time.",
"type": "info"
}
],
"title": "The Verge",
"updated": "2026-09-13T20:54:00Z",
"website_url": "https://www.theverge.com"
},
"newest_published": "2026-09-13T19:41:48Z",
"oldest_published": "2026-09-13T19:41:48Z",
"posts": [
{
"attachment": null,
"author": "Terrence O'Brien",
"categories": [
"AI",
"Policy",
"Politics"
],
"image_url": "https://platform.theverge.com/wp-content/uploads/stk466.jpg",
"published": "2026-09-13T19:41:48Z",
"published_display": "13 Sep 2026 at 19:41 UTC",
"summary": "Yesterday, Anthropic CEO Dario Amodei published a lengthy open letter saying it was time to \u201cpace the frontier\u201d and slow down AI development.",
"title": "Trump and Mike Johnson think the AI industry is overreacting",
"url": "https://www.theverge.com/ai/994441/trump-mike-johnson-ai-overreacting"
}
],
"skipped_without_a_date": 0,
"summary": "1 post from The Verge, the newest of the 10 in its feed; newest 13 Sep 2026 at 19:41 UTC.",
"total_in_feed": 10,
"website": "theverge.com"
}Get latest posts from several websites
Read several websites at once and get one list of posts, newest first, each tagged with where it came from - a daily digest, a competitor watch, a reading list, in one step instead of a loop. A website Open RSS has no feed for yet doesn't stop the run: it's reported beside the posts, so one dead source doesn't cost you the others. Only if every website fails does the step stop.
Inputs
- Websites
websiteslistRequired - The websites to read, one per entry, as you'd type them in a browser. Up to 10 at a time. A website Open RSS has no feed for doesn't stop the step - it's reported beside the posts.
- How many posts per website
limit_per_websitenumber - Optional. How many of each website's newest posts to include, so one busy site doesn't crowd out the rest. Defaults to 5.From 1 to 100. Default:
5. - Published after
published_afterdate and time - Optional. Only posts published after this moment - which is how a workflow that runs on a schedule picks up just what's new. Pick a date and time, or pass the 'newest published' from an earlier run straight back in. A post whose feed gave it no date can't be shown to be newer, so it's left out and counted.
- Only posts mentioning
containstext - Optional. Only posts whose title, author, summary or body mention this word or phrase. Capitals are ignored.
- Include the full post
include_contenttrue/false - Include each post's whole body, as plain text and as HTML, on top of the summary every post already carries. Turn this on to summarise or translate the posts in a later step; leave it off to keep the result small.Default:
false.
Outputs
countnumber- How many posts came back.
newest_publishedtext- When the newest of them went up, as a UTC timestamp. Pass it to 'Published after' next run to pick up only what's new.
oldest_publishedtext- When the oldest of them went up.
postslist- The posts, newest first.
problemslist- The websites that couldn't be read, and why. Empty when every one of them answered.
skipped_without_a_datenumber- How many posts were left out because their website published no date for them and so they couldn't be judged against 'Published after'. Zero unless that filter was used.
sourceslist- One row per website asked for, in the order they were given, whether or not it could be read.
summarytext- The result as a sentence, ready to put in a message.
websites_asked_fornumber- How many were asked for.
websites_readnumber- How many websites answered.
Example output
{
"count": 2,
"newest_published": "2026-09-13T19:41:48Z",
"oldest_published": "2026-08-28T22:14:07Z",
"posts": [
{
"attachment": null,
"author": "Terrence O'Brien",
"categories": [
"AI",
"Policy",
"Politics"
],
"feed_title": "The Verge",
"image_url": "https://platform.theverge.com/wp-content/uploads/stk466.jpg",
"published": "2026-09-13T19:41:48Z",
"published_display": "13 Sep 2026 at 19:41 UTC",
"summary": "Yesterday, Anthropic CEO Dario Amodei published a lengthy open letter saying it was time to \u201cpace the frontier\u201d and slow down AI development.",
"title": "Trump and Mike Johnson think the AI industry is overreacting",
"url": "https://www.theverge.com/ai/994441/trump-mike-johnson-ai-overreacting",
"website": "theverge.com"
},
{
"attachment": null,
"author": "Jon Brodkin",
"categories": [
"Policy"
],
"feed_title": "Ars Technica",
"image_url": "https://cdn.arstechnica.net/kalshi.jpg",
"published": "2026-08-28T22:14:07Z",
"published_display": "28 Aug 2026 at 22:14 UTC",
"summary": "A federal appeals court ruled against the prediction market.",
"title": "Court rules Kalshi sports bets aren't \u201cswaps\u201d",
"url": "https://arstechnica.com/tech-policy/2026/08/kalshi-ruling/",
"website": "arstechnica.com"
}
],
"problems": [
{
"feed_url": "https://openrss.org/feed/example.com/blog",
"has_no_feed_yet": true,
"reason": "Open RSS has no feed for example.com/blog yet. Asking for it has added it to their backlog, so try again later.",
"website": "example.com/blog"
}
],
"skipped_without_a_date": 0,
"sources": [
{
"count": 1,
"feed_url": "https://openrss.org/feed/www.theverge.com",
"newest_published": "2026-09-13T19:41:48Z",
"read": true,
"title": "The Verge",
"total_in_feed": 10,
"website": "theverge.com"
},
{
"count": 1,
"feed_url": "https://openrss.org/feed/arstechnica.com",
"newest_published": "2026-08-28T22:14:07Z",
"read": true,
"title": "Ars Technica",
"total_in_feed": 10,
"website": "arstechnica.com"
},
{
"count": 0,
"feed_url": "https://openrss.org/feed/example.com/blog",
"has_no_feed_yet": true,
"read": false,
"reason": "Open RSS has no feed for example.com/blog yet. Asking for it has added it to their backlog, so try again later.",
"title": "",
"website": "example.com/blog"
}
],
"summary": "2 posts from 2 websites (1 could not be read); newest 13 Sep 2026 at 19:41 UTC.",
"websites_asked_for": 3,
"websites_read": 2
}Get Open RSS news
Read Open RSS's own writing: the blog, for news about RSS and the open web, or the changelog, for what the service itself changed. Handy for posting their updates to a channel - and for watching the changelog after asking for a feed that didn't exist yet, since that's where new feeds are announced.
Inputs
- Which feed
sourcetext - Which of Open RSS's own two feeds to read.One of:
blog(Blog - news and writing about RSS),changelog(Changelog - what Open RSS changed). Default:blog. - How many posts
limitnumber - Optional. How many of the newest posts to return. Defaults to 10.From 1 to 100. Default:
10. - Only posts mentioning
containstext - Optional. Only posts whose title, author, summary or body mention this word or phrase. Capitals are ignored.
- Include the full post
include_contenttrue/false - Include each post's whole body, as plain text and as HTML, on top of the summary every post already carries. Turn this on to summarise or translate the posts in a later step; leave it off to keep the result small.Default:
false.
Outputs
countnumber- How many posts came back.
feedobject- The feed the posts came from.
newest_publishedtext- When the newest of them went up, as a UTC timestamp. Pass it to 'Published after' next run to pick up only what's new.
oldest_publishedtext- When the oldest of them went up.
postslist- The posts, newest first.
sourcetext- Which feed was read: 'blog' or 'changelog'.
summarytext- The result as a sentence, ready to put in a message.
total_in_feednumber- How many posts the feed held, before the limit and any filter.
Example output
{
"count": 1,
"feed": {
"description": "A log of all changes made on Open RSS",
"feed_url": "https://openrss.org/changelog.rss",
"icon_url": "https://openrss.org/media/open-rss-logo-poster.png",
"language": "en-us",
"notices": [],
"title": "Open RSS",
"updated": "2026-08-24T14:54:00Z",
"website_url": "https://openrss.org/changelog"
},
"newest_published": "2026-08-24T14:54:00Z",
"oldest_published": "2026-08-24T14:54:00Z",
"posts": [
{
"attachment": null,
"author": "",
"categories": [],
"image_url": "",
"published": "2026-08-24T14:54:00Z",
"published_display": "24 Aug 2026 at 14:54 UTC",
"summary": "Improved feed detection for sites behind Cloudflare.",
"title": "08-24-2026",
"url": "https://openrss.org/changelog#08-24-2026"
}
],
"source": "changelog",
"summary": "1 post from Open RSS changelog, the newest of the 6 in its feed; newest 24 Aug 2026 at 14:54 UTC.",
"total_in_feed": 6
}