You already know how to get an RSS feed for all jobs posted to an SAP SuccessFactors Recruiting Marketing site (or you can learn about that in this post). But what if you want to filter which jobs appear in the feed? Get a feed of jobs that match a certain keyword or jobs in a specific region? You can! This time, the tool for the job is not the sitemal.xml
. Instead, we will be using an RSS service provided by Recruiting Marketing’s default search functionality.
On some RMK sites, an option to share jobs via RSS will show up when you search for jobs via a keyword or location.
There seem to be two conditions for the RSS sharing option to appear: The search sharing options bust be enabled and a keyword or location must be set. However, these conditions really only affect whether the icon is visible on the site. Once you understand the filtering syntax used by the RSS service, you can build RSS feed links without the sharing option – even on instances that do not show any search result sharing options.
The result limit
Before we get into how to write search queries to get a filtered RSS feed, there is one import limitation I need to mention: The feed will contain a maximum of 20 jobs – no matter how many jobs actually match your query. I have not (yet) found a way to retrieve more jobs or spotted any pagination options. So, you can either write queries matching 20 jobs or less or you can accept that the search engine will return 20 jobs it deems most relevant for your query.
The query syntax
Let’s start by looking at the RSS feed link for the search shown in the above screenshot: https://jobs.sap.com/services/rss/job/?locale=en_US&keywords=(solution%20sales)
. Only a locale and our two keywords are sent to the RSS service. The space between the keywords gets URL-encoded to %20
, though I will write unencoded queries for better readability. Any browser will perform the encoding for you once you paste the resulting query/URL into the address bar and hit enter.
By default, Recruiting Marketing’s search engine connects keywords using OR rather than AND. Thus, our query of keywords=(solution sales)
will return jobs that contain either or both keywords. The search engine will return the same results given a more explicit query such as keywords=(solution OR sales)
. You can, however, force the search engine to only return jobs containing both keywords. The easiest way to do that is by explicitly connecting the keywords with AND: keywords=(solution AND sales)
. This query will return only jobs containing both keywords, without taking the order into account. Since the order is not relevant for such a query, you would get the same results using keywords=(sales AND solution)
. If you instead want to only match jobs containing solution
immediately followed by sales
, you need to link the keywords with a dash: keywords=(solution-sales)
. You can of course use any variant with more than two keywords.
The RSS feed service supports one more filtering option apart from keywords
. The locationSearch
filter allows you to filter jobs by, well, location. A simple example: keywords=(solution AND sales) AND locationSearch:(Berlin)
will return jobs containing both keywords that are available in Berlin. The locationSearch
filter matches not only the primary but all posting locations. Thus, if a job’s primary posting location is Frankfurt, but Berlin is one of the secondary posting locations, the above query will match that job. You can filter by countries, regions (only on some sites), cities and even zip codes, though the search engine does seem to only return job that exactly match the provided zip code. An easy way to figure out which location “layers” are available is to look at any job title for the site in in question. If the title ends with (Newtown Square, PA, US)
for example, you can filter by region (Pennsylvania is this case). If the title does not contain a region code, the region filter is not available: (Weiterstadt, DE, 64331)
.
You can combine multiple locations using the same operators that are available for keywords. To get solution sales jobs in Berlin and Frankfurt for example, you could use keywords=(solution AND sales) AND locationSearch:(Berlin Frankfurt)
or the more explicit equivalent keywords=(solution AND sales) AND locationSearch:(Berlin OR Frankfurt)
. Be careful with city names consisting of multiple words: locationSearch:(New York)
gets interpreted as locationSearch(New OR York)
, which is probably not what you were after. Instead, use locationSearch(New-York)
to only match jobs in New York. You might also need to be careful with country and region short-codes when filtering on international Recruiting Marketing sites. The short-code for Delaware is DE, which is the same as the 2-letter ISO code for Germany. You can, however, avoid such issues by using the full name in your query, the search engine understands both. Finally, you might need to combine location “layers” in some edge cases. For example, use locationSearch:(germany AND hamburg)
to avoid matching jobs in any of the other Hamburgs around the world.
The feed XML structure
Before we wrap this up, let’s take a quick look at the XML structure of the RSS feed returned by the service.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="https://jobs.sap.com/feeds/(solution AND sales) AND locationSearch:(Berlin OR Frankfurt)/?locale=en_US" rel="self" type="application/rss+xml" />
<title>SAP - Custom Search (solution AND sales) AND locationSearch:(Berlin OR Frankfurt)</title>
<link>https://jobs.sap.com/feeds/(solution AND sales) AND locationSearch:(Berlin OR Frankfurt)/?locale=en_US</link>
<description>Custom RSS Feed for SAP</description>
<lastBuildDate>Sun, 31 May 2020 10:36:28 GMT</lastBuildDate>
<language>en-us</language>
<image>
<url></url>
<title><![CDATA[SAP - Custom Search (solution AND sales) AND locationSearch:(Berlin OR Frankfurt)]]></title>
<link>https://jobs.sap.com/feeds/(solution AND sales) AND locationSearch:(Berlin OR Frankfurt)/?locale=en_US</link>
</image>
<ttl>720</ttl>
<item>
<title><![CDATA[(Senior) Software Developer (f/m/d) for Spotlight by SAP Job (Berlin, BE, DE)]]></title>
<description><![CDATA[...]]></description>
<pubDate>Sat, 09 May 2020 2:00:00 GMT</pubDate>
<link>https://jobs.sap.com/job/Berlin-%28Senior%29-Software-Developer-%28fmd%29-for-Spotlight-by-SAP-Job-BE/594439501/?feedId=null&utm_source=J2WRSS&utm_medium=rss&utm_campaign=J2W_RSS</link>
<guid>https://jobs.sap.com/job/Berlin-%28Senior%29-Software-Developer-%28fmd%29-for-Spotlight-by-SAP-Job-BE/594439501/?feedId=null&utm_source=J2WRSS&utm_medium=rss&utm_campaign=J2W_RSS</guid>
</item>
</channel>
</rss>
The channel details (title
, description
, …) are not really all that interesting. The only aspect to mention here is that these text values are generated according to the provided locale value, with en_US
set as the default if no (other) locale has been provided. Job details are fairly self-explanatory as well. All you get is the the job’s title
, description
, pubDate
(publishing date) and link
(provided twice, in link
and guid
).
A few quick notes to wrap up
As far as SuccessFactors is concerned, this post is entirely based on my own research and testing. SAP, unfortunately, does not seem to provide any documentation on this feature or at least none that I could find – just like with the sitemal.xml RSS feed.
The RSS feed service does not support any custom filtering options, not even those visible after clicking “More Options” below the keyword and location inputs.
Finally and just to reiterate:
- Keep in mind that no matter your query, you will get an RSS feed containing no more than 20 jobs.
- You can use this feature on any Recruiting Marketing instance regardless of whether the search result RSS sharing option is visible.