<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tikhon Slasten</title>
    <description>The latest articles on DEV Community by Tikhon Slasten (@jokly).</description>
    <link>https://dev.to/jokly</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4231694%2F0542bfd3-963e-4e6c-afc0-8df8e8f28fe2.jpg</url>
      <title>DEV Community: Tikhon Slasten</title>
      <link>https://dev.to/jokly</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jokly"/>
    <language>en</language>
    <item>
      <title>Reddit RSS ends Nov 13: a Reddit RSS alternative for n8n and scripts</title>
      <dc:creator>Tikhon Slasten</dc:creator>
      <pubDate>Mon, 09 Nov 2026 10:05:21 +0000</pubDate>
      <link>https://dev.to/jokly/reddit-rss-ends-nov-13-a-reddit-rss-alternative-for-n8n-and-scripts-2kec</link>
      <guid>https://dev.to/jokly/reddit-rss-ends-nov-13-a-reddit-rss-alternative-for-n8n-and-scripts-2kec</guid>
      <description>&lt;p&gt;On &lt;strong&gt;2026-11-13&lt;/strong&gt; Reddit turns off RSS. Every &lt;code&gt;reddit.com/.../.rss&lt;/code&gt; URL in your n8n workflows, cron scripts and feed readers stops, and Reddit says there is no replacement unless you moderate the community. The public Data API follows in 2027, so "just use the API" is a stopgap.&lt;/p&gt;

&lt;p&gt;This guide finds every Reddit feed you have, shows what survives, and swaps the feed URL for one HTTP call that returns the same items your RSS Read node did: only new posts, billed per post. I built the Apify Actor used in the hands-on part, &lt;a href="https://apify.com/kumo-data/reddit-scraper" rel="noopener noreferrer"&gt;kumo-data/reddit-scraper&lt;/a&gt;; the first two parts do not depend on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stops, and when
&lt;/h2&gt;

&lt;p&gt;Reddit announced the cutoff in r/modnews on 2026-09-30. &lt;a href="https://thenextweb.com/news/reddit-rss-feeds-shut-down-old-reddit-ai-scraping" rel="noopener noreferrer"&gt;TNW&lt;/a&gt; quotes the post: "If you use RSS for feeds outside of a community you moderate, there is no replacement." Moderators get the Discord Relay app on Reddit's Developer Platform; everyone else gets nothing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope is not spelled out.&lt;/strong&gt; Reddit names no feed types and no exceptions, so plan as if subreddit, search, user and comment &lt;code&gt;.rss&lt;/code&gt; URLs all stop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Old Reddit is not a fallback.&lt;/strong&gt; It already requires login and is being limited to moderators and recent users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The API is closing too.&lt;/strong&gt; New public Data API requests stopped on 2026-10-31; access starts closing on 2027-01-12 and ends for everyone else in March 2027. PRAW and n8n's built-in Reddit node sit on that API. Reddit's migration target is Devvit, TypeScript apps that run on Reddit itself, which does not replace an external script or an n8n workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://community.n8n.io/t/replacing-the-rss-read-node-for-reddit-before-nov-13/322545" rel="noopener noreferrer"&gt;n8n community thread&lt;/a&gt; on this expects RSS Read nodes to fail quietly rather than throw, so add a "zero items for N hours" alert to every feed workflow this week, whatever you migrate to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 0: find every Reddit feed you have
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# n8n: export workflows, then grep&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rl&lt;/span&gt; &lt;span class="s1"&gt;'reddit.com/.*\.rss'&lt;/span&gt; ~/n8n-exports/

&lt;span class="c"&gt;# scripts, cron jobs, configs&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*.py'&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*.js'&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*.sh'&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*.toml'&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*.yaml'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s1"&gt;'reddit.com.*\.rss'&lt;/span&gt; ~/projects/

&lt;span class="c"&gt;# feed readers: export OPML and grep it&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="s1"&gt;'xmlUrl="[^"]*reddit[^"]*"'&lt;/span&gt; subscriptions.opml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For each URL note where it feeds into (Slack, a sheet, a database) and roughly how many new posts a day it produces; the second number sets what a replacement costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your options
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;After Nov 13&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Official Data API, PRAW, n8n Reddit node&lt;/td&gt;
&lt;td&gt;Only with credentials you already hold&lt;/td&gt;
&lt;td&gt;Access closes between 2027-01-12 and March 2027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Devvit / Discord Relay&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Reddit's own path, for moderators and bots. Not a feed, not Python, not external&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSS bridges&lt;/td&gt;
&lt;td&gt;Do not plan on it&lt;/td&gt;
&lt;td&gt;RSSHub has no Reddit route and closed the &lt;a href="https://github.com/DIYgod/RSSHub/issues/23725" rel="noopener noreferrer"&gt;request&lt;/a&gt; as "not planned"; others unverified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unauthenticated &lt;code&gt;.json&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Unreliable&lt;/td&gt;
&lt;td&gt;Conflicting reports of 403s during 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feed readers&lt;/td&gt;
&lt;td&gt;Mostly stop&lt;/td&gt;
&lt;td&gt;Readers that fetch &lt;code&gt;.rss&lt;/code&gt; directly stop (&lt;a href="https://hushread.com/blog/reddit-rss-readers-still-working" rel="noopener noreferrer"&gt;HushRead's list&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apify Actors that read public pages&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No Reddit API key or RSS involved. See below&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Several Actors on the Store cover the last row, among them harshmaur/reddit-scraper, automation-lab/reddit-scraper and headply/reddit-rss-feed; they differ in output shape and features, and I have not run them. Mine is built for the swap below: old feed URL in, RSS Read items out, only new posts each run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hands-on: swap the RSS URL for one HTTP call
&lt;/h2&gt;

&lt;p&gt;Paste the old feed URL into &lt;code&gt;targets&lt;/code&gt;. With &lt;code&gt;outputFormat: "rss"&lt;/code&gt; each post has the eight keys n8n's RSS Read node produced from a Reddit feed (&lt;code&gt;title&lt;/code&gt;, &lt;code&gt;link&lt;/code&gt;, &lt;code&gt;pubDate&lt;/code&gt;, &lt;code&gt;author&lt;/code&gt;, &lt;code&gt;content&lt;/code&gt;, &lt;code&gt;contentSnippet&lt;/code&gt;, &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;isoDate&lt;/code&gt;). With &lt;code&gt;newSinceLastRun: true&lt;/code&gt; each run returns only posts it has not returned before: no overlap, no date math. You need an Apify API token; the full input reference is on &lt;a href="https://apify.com/kumo-data/reddit-scraper" rel="noopener noreferrer"&gt;the Actor page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgy6fz4333c0ep66nx7wd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgy6fz4333c0ep66nx7wd.png" alt="Before: a Reddit RSS feed read by n8n RSS Read or feedparser. After: one Actor run with the same URL in targets, outputFormat rss, newSinceLastRun true. Same 8 item keys, downstream workflow unchanged." width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  curl
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://api.apify.com/v2/acts/kumo-data~reddit-scraper/run-sync-get-dataset-items"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$APIFY_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "targets": ["https://www.reddit.com/r/n8n/new/.rss"],
    "outputFormat": "rss",
    "newSinceLastRun": true,
    "maxPostsPerTarget": 50
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On 2026-11-07 this call (with &lt;code&gt;maxPostsPerTarget: 3&lt;/code&gt;) returned HTTP 201 and three items in 5.9 seconds. The endpoint waits for the run and answers with the dataset as a JSON array: no polling.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;newSinceLastRun&lt;/code&gt; keeps its state (per target: last run time and the IDs already returned) in the key-value store &lt;code&gt;reddit-scraper-state&lt;/code&gt; in your own Apify account. The first run has no state and returns up to &lt;code&gt;maxPostsPerTarget&lt;/code&gt; posts (default 100); to start from now, cap it or add &lt;code&gt;"postedAfter": "2 hours"&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Python
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;APIFY_TOKEN&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;APIFY_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.apify.com/v2/acts/kumo-data~reddit-scraper/run-sync-get-dataset-items&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;targets&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.reddit.com/r/n8n/new/.rss&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;outputFormat&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rss&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;newSinceLastRun&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;maxPostsPerTarget&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;APIFY_TOKEN&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# run-sync endpoints wait for the run; give them the full window
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;isoDate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;link&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a &lt;code&gt;feedparser&lt;/code&gt; script, &lt;code&gt;entry.title&lt;/code&gt;, &lt;code&gt;entry.link&lt;/code&gt;, &lt;code&gt;entry.id&lt;/code&gt; and &lt;code&gt;entry.author&lt;/code&gt; map one to one; &lt;code&gt;entry.published&lt;/code&gt; becomes &lt;code&gt;pubDate&lt;/code&gt; and &lt;code&gt;isoDate&lt;/code&gt; (ISO 8601 with milliseconds). I compared against n8n's parser, not feedparser.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scheduling
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apify Schedules.&lt;/strong&gt; Save the input above as a task in the Apify Console and attach a schedule; hourly is typical. A run that finds nothing costs $0.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;n8n.&lt;/strong&gt; Replace the RSS Read node with an HTTP Request node on a Schedule Trigger: POST to the URL above, header &lt;code&gt;Authorization: Bearer &amp;lt;token&amp;gt;&lt;/code&gt;, JSON body as in the curl call. Or use Apify's community node &lt;a href="https://docs.apify.com/platform/integrations/n8n" rel="noopener noreferrer"&gt;&lt;code&gt;n8n-nodes-apify&lt;/code&gt;&lt;/a&gt; and its "Run Actor and get dataset" operation. I have not run either inside an n8n instance with this Actor yet, so test the wiring before cutting over.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What the output looks like
&lt;/h3&gt;

&lt;p&gt;One item from the real run above, &lt;code&gt;content&lt;/code&gt; and &lt;code&gt;contentSnippet&lt;/code&gt; trimmed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"What actually changed when I moved a client workflow from Sheets to a real database"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"link"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.reddit.com/r/n8n/comments/1xpe08r/what_actually_changed_when_i_moved_a_client/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pubDate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-11-06T14:21:48.000Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/u/easybits_ai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;md&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;&amp;lt;p&amp;gt;👋 Hey n8n Community,&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;I spent today moving a client approval workflow ...&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt; &amp;amp;#32; submitted by &amp;amp;#32; &amp;lt;a href=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;https://www.reddit.com/user/easybits_ai&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt; /u/easybits_ai &amp;lt;/a&amp;gt; ..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"contentSnippet"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"👋 Hey n8n Community,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;I spent today moving a client approval workflow ...&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;   submitted by    /u/easybits_ai  &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt; [link]   [comments]"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"t3_1xpe08r"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"isoDate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-11-06T14:21:48.000Z"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/u/&lt;/code&gt; on &lt;code&gt;author&lt;/code&gt;, &lt;code&gt;t3_&lt;/code&gt; on &lt;code&gt;id&lt;/code&gt; and the &lt;code&gt;submitted by&lt;/code&gt; wrapper in &lt;code&gt;content&lt;/code&gt; are kept on purpose: downstream nodes written against the real feed expect them.&lt;/p&gt;

&lt;h3&gt;
  
  
  How compatible, exactly
&lt;/h3&gt;

&lt;p&gt;Checked on 50 posts from two real feeds snapshotted before the cutoff (r/Python and r/pics), parsed with the &lt;code&gt;rss-parser&lt;/code&gt; version n8n's RSS Read node uses, against the Actor's &lt;code&gt;rss&lt;/code&gt; output for the same posts:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Result on 50 posts&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;title&lt;/code&gt;, &lt;code&gt;link&lt;/code&gt;, &lt;code&gt;author&lt;/code&gt;, &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;pubDate&lt;/code&gt;, &lt;code&gt;isoDate&lt;/code&gt;, key set and order&lt;/td&gt;
&lt;td&gt;Identical, 50 of 50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;contentSnippet&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Same text once whitespace is normalized (23 of 25 text posts); line breaks between blocks differ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;content&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Equivalent HTML, not byte-identical (&lt;code&gt;&amp;amp;#39;&lt;/code&gt; vs &lt;code&gt;'&lt;/code&gt;, &lt;code&gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&lt;/code&gt; vs &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;, a different &lt;code&gt;preview.redd.it&lt;/code&gt; URL for the same picture)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Keyword filters, dedup by &lt;code&gt;id&lt;/code&gt;, date math and anything that renders &lt;code&gt;content&lt;/code&gt; keep working; an exact string comparison of &lt;code&gt;content&lt;/code&gt; against old stored values does not. Not compared yet: Make and Zapier RSS modules and Reddit's comment feeds. &lt;code&gt;score&lt;/code&gt; and &lt;code&gt;commentCount&lt;/code&gt; are in the Actor's &lt;code&gt;default&lt;/code&gt; format, not in &lt;code&gt;rss&lt;/code&gt;. Posts marked 18+ are never collected; private communities are not readable without login.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before you cut over&lt;/strong&gt;, run the old feed and the new call side by side for a day and compare the &lt;code&gt;id&lt;/code&gt; sets for the window both cover. Then switch the downstream node and keep the zero-items alert.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost
&lt;/h3&gt;

&lt;p&gt;Pay per post saved to the dataset: $1.50 per 1,000 on the Free plan, $1.20 on paid plans. No start fee, no charge for duplicates or filtered posts, and empty runs cost $0. An hourly schedule for a month that yields 3,000 new posts comes to about $4.50 on the Free plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Inventory your feeds this week. Existing API credentials carry PRAW or the n8n Reddit node into early 2027; moderators have Discord Relay. For everything else, the swap above is one HTTP call: old feed URL in, the same items out, only new posts each run, $0 when nothing is new. Start here: &lt;strong&gt;&lt;a href="https://apify.com/kumo-data/reddit-scraper" rel="noopener noreferrer"&gt;apify.com/kumo-data/reddit-scraper&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>reddit</category>
      <category>rss</category>
      <category>n8n</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
