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

ActionWhat it does
Find a website's feedCheck 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 postsGet 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 websitesRead 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 newsRead 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

WebsitewebsitetextRequired
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

WebsitewebsitetextRequired
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 postslimitnumber
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 afterpublished_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 mentioningcontainstext
Optional. Only posts whose title, author, summary or body mention this word or phrase. Capitals are ignored.
Include the full postinclude_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

WebsiteswebsiteslistRequired
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 websitelimit_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 afterpublished_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 mentioningcontainstext
Optional. Only posts whose title, author, summary or body mention this word or phrase. Capitals are ignored.
Include the full postinclude_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 feedsourcetext
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 postslimitnumber
Optional. How many of the newest posts to return. Defaults to 10.From 1 to 100. Default: 10.
Only posts mentioningcontainstext
Optional. Only posts whose title, author, summary or body mention this word or phrase. Capitals are ignored.
Include the full postinclude_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
}

On this page