Power Automate’s built-in RSS connector is fine, but it doesn’t support any custom fields in the RSS feed. All you get is a small set of standard RSS fields that you can access via the connector. But a lot of RSS feeds, for example a YouTube channel’s RSS feed, include a bunch of custom fields that you can’t access using it. In this post, I’ll show you how to access and work with custom RSS fields.

Example Feed - YouTube

Let’s look at an example RSS feed that contains custom fields. This is an example output from the RSS feed for my YouTube channel. The URL for that feed is: https://www.youtube.com/feeds/videos.xml?channel_id=UCaciQifLSjfFijQUHrfA6yg. I’ve removed all but the first “entry” block for simplicity’s sake.

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<feed xmlns:yt="http://www.youtube.com/xml/schemas/2015" xmlns:media="http://search.yahoo.com/mrss/" xmlns="http://www.w3.org/2005/Atom">
<link rel="self" href="http://www.youtube.com/feeds/videos.xml?channel_id=UCaciQifLSjfFijQUHrfA6yg"/>
<id>yt:channel:aciQifLSjfFijQUHrfA6yg</id>
<yt:channelId>aciQifLSjfFijQUHrfA6yg</yt:channelId>
<title>Barret Codes</title>
<link rel="alternate" href="https://www.youtube.com/channel/UCaciQifLSjfFijQUHrfA6yg"/>
<author>
<name>Barret Codes</name>
<uri>https://www.youtube.com/channel/UCaciQifLSjfFijQUHrfA6yg</uri>
</author>
<published>2022-08-08T00:57:13+00:00</published>
<entry>
<id>yt:video:7bcR6V5jXxI</id>
<yt:videoId>7bcR6V5jXxI</yt:videoId>
<yt:channelId>UCaciQifLSjfFijQUHrfA6yg</yt:channelId>
<title>Function Friday - DateTime in Power Automate</title>
<link rel="alternate" href="https://www.youtube.com/watch?v=7bcR6V5jXxI"/>
<author>
<name>Barret Codes</name>
<uri>https://www.youtube.com/channel/UCaciQifLSjfFijQUHrfA6yg</uri>
</author>
<published>2025-02-07T13:00:12+00:00</published>
<updated>2025-02-07T13:00:13+00:00</updated>
<media:group>
<media:title>Function Friday - DateTime in Power Automate</media:title>
<media:content url="https://www.youtube.com/v/7bcR6V5jXxI?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
<media:thumbnail url="https://i4.ytimg.com/vi/7bcR6V5jXxI/hqdefault.jpg" width="480" height="360"/>
<media:description>In this YouTube video, I show you some of the quirks of working with DateTime values in Power Automate. #powerautomate #flow #functionfriday</media:description>
<media:community>
<media:starRating count="0" average="0.00" min="1" max="5"/>
<media:statistics views="10"/>
</media:community>
</media:group>
</entry>
</feed>

You can see that the feed contains a bunch of custom fields such as the “media:group” and “yt:videoId”. Using the built-in RSS connector, you’ll never be able to access those fields to use in your flow. So we’ll need to use a little bit of a roundabout method to get that data and access it.

Trigger

We still want to know when a new feed item is published, so we are going to use the RSS connector’s “When a feed item is published” trigger to start our flow. But that will be its only purpose in our flow. We aren’t going to use any of its outputs. Go ahead and create a flow and set your trigger using that action. Give it the URL for the RSS feed you want to pull information from.

RSS feed trigger showing RSS feed URL

That’s all we need from our trigger.

HTTP Action To Fetch RSS Feed

Next thing we’ll add is an HTTP action. We want to fetch the full XML output of our RSS feed so that we can pull out the fields that we’re interested in. For this HTTP action, we’ll just do a GET that calls the same URL as our RSS feed. If you want, you can add a Content header for XML, but it really isn’t necessary.

HTTP action to pull XML from RSS feed

Compose Action To Convert XML to JSON

We want to work with our output as JSON. So the next thing we’ll add is a Compose action to convert the XML output of the RSS feed into JSON that’s easier to work with in Power Automate. Fortunately, there are two built in functions that make it really easy to convert the XML to JSON in Power Automate. So add a Compose action and give it the following formula.

json(xml(body('Get_Youtube_Feed')))

The inner function, “xml”, is used to identify the output body of our HTTP action as XML content. The outer function, “json”, will convert the XML content into JSON content for us. Nothing else is needed. For normal XML you don’t need to use any 3rd party tools to do that conversion. Now, if your XML contains more complex content or makes use of XSLT, the “json” function may or may not work for you. It just depends. But for an RSS feed, this pairing should work just great.

Parse JSON Action

Now that we have JSON content, the next step is to parse it to pull out the values we need. For that, we’ll throw in a Parse JSON action. But, before we do, we need a sample JSON payload to use to generate the schema. So go ahead and run your flow and copy out the output JSON from the Compose step. Of course, you’re going to need to publish an item to your RSS feed to trigger it to run if you don’t have a previous run to test with.

Once you have that, add a “Parse JSON” action to our flow and use that sample output as the sample payload from which to generate a schema. The Content of the action should be the output from the Compose action. We’ll end up with something like the following.

Adding a parse json action to our flow

When we run our flow, we’ll get outputs that will include all of our RSS items, and not just the standard default RSS fields. So we can see those custom fields in our content.

Sample parse JSON output highlighting a custom field

One thing I will note here about the Parse JSON step. In the example here from my YouTube channel RSS feed, you’ll see some fields with an @ symbol at the start, like “@href” in the link content.

RSS field with an @ symbol

When you try to reference these later in your flow, for some reason Power Automate will add an extra @ before that, so the reference will look like:

body('parse_first_item')?['link']?['@@href']

It didn’t always happen, but it happened most of the time when I tried to reference such items. If you have such a reference, when you run the flow, it will fail because the reference will return a null value. The solution was to write the reference in the formula input instead of using the dynamic reference. So I would write it as:

body('parse_first_item')?['link']?['@href']

This would run correctly. Just something to watch for.

Next Steps

So where do you go from here? That’s up to you. For me, I was creating a flow to automatically post about my new video to my LinkedIn, BluSky, and Mastadon feeds. I used a “first” function to get just the first item in my YouTube RSS feed, pull out the title, link, description, and any hashtags, then post to my socials from there.

But whatever you’re trying to do with your RSS feed content, you’ve now got access to ALL the output from the feed, and not just the standard fields that the built-in connector provides to you. Now go forth and use that RSS feed content the way as it was intended!