<?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: Scrapify</title>
    <description>The latest articles on DEV Community by Scrapify (@scrapifyhq).</description>
    <link>https://dev.to/scrapifyhq</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%2F4207015%2F5c3607bd-f279-4470-8525-007161b6c5db.png</url>
      <title>DEV Community: Scrapify</title>
      <link>https://dev.to/scrapifyhq</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scrapifyhq"/>
    <language>en</language>
    <item>
      <title>Scrape UK jobs from Reed.co.uk with salary filters (Python and JavaScript)</title>
      <dc:creator>Scrapify</dc:creator>
      <pubDate>Thu, 29 Oct 2026 02:37:05 +0000</pubDate>
      <link>https://dev.to/scrapifyhq/scrape-uk-jobs-from-reedcouk-with-salary-filters-python-and-javascript-1c8a</link>
      <guid>https://dev.to/scrapifyhq/scrape-uk-jobs-from-reedcouk-with-salary-filters-python-and-javascript-1c8a</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure: I built this.&lt;/strong&gt; I built the Apify Actor used in this post. It is pay-per-use and the prices are listed below, along with what rivals charge, so you can compare before you try anything.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Reed.co.uk is one of the biggest UK job boards, and it is a good source if you want to track salaries, build a "new jobs" feed or collect hiring-company lists. Reed does offer a free official API (key required, with its own terms and limits); this post covers a no-key route that also returns per-year salary estimates and works on a schedule. This post shows how to pull jobs with salary filters into a dataset using a few lines of code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;Each job comes back as one row with the title, employer, location, salary range, contract type, working pattern and posting date. Hourly, daily, weekly and monthly pay also gets a per-year estimate (&lt;code&gt;salaryFromPerYearEst&lt;/code&gt;, est.: 40 h x 50 weeks, 250 days) so you can sort a mixed list.&lt;/p&gt;

&lt;p&gt;Real rows from a run (trimmed, taken from the Actor's &lt;code&gt;sample-output.json&lt;/code&gt;):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Title&lt;/th&gt;
&lt;th&gt;Company&lt;/th&gt;
&lt;th&gt;Location&lt;/th&gt;
&lt;th&gt;Salary from&lt;/th&gt;
&lt;th&gt;Salary to&lt;/th&gt;
&lt;th&gt;Period&lt;/th&gt;
&lt;th&gt;Contract&lt;/th&gt;
&lt;th&gt;Posted&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Senior Python Software Engineer - Security Cleared&lt;/td&gt;
&lt;td&gt;Searchability NS&amp;amp;D&lt;/td&gt;
&lt;td&gt;London&lt;/td&gt;
&lt;td&gt;65000&lt;/td&gt;
&lt;td&gt;100000&lt;/td&gt;
&lt;td&gt;per annum&lt;/td&gt;
&lt;td&gt;Permanent&lt;/td&gt;
&lt;td&gt;2026-10-23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python Software Engineer - SC Cleared&lt;/td&gt;
&lt;td&gt;Searchability NS&amp;amp;D&lt;/td&gt;
&lt;td&gt;London&lt;/td&gt;
&lt;td&gt;40000&lt;/td&gt;
&lt;td&gt;50000&lt;/td&gt;
&lt;td&gt;per annum&lt;/td&gt;
&lt;td&gt;Permanent&lt;/td&gt;
&lt;td&gt;2026-10-23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical Lead Python Engineer&lt;/td&gt;
&lt;td&gt;Spectrum IT Recruitment&lt;/td&gt;
&lt;td&gt;London&lt;/td&gt;
&lt;td&gt;90000&lt;/td&gt;
&lt;td&gt;100000&lt;/td&gt;
&lt;td&gt;per annum&lt;/td&gt;
&lt;td&gt;Permanent&lt;/td&gt;
&lt;td&gt;2026-10-20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Senior Full-Stack Engineer - Python / React&lt;/td&gt;
&lt;td&gt;Bond Williams&lt;/td&gt;
&lt;td&gt;London&lt;/td&gt;
&lt;td&gt;70000&lt;/td&gt;
&lt;td&gt;90000&lt;/td&gt;
&lt;td&gt;per annum&lt;/td&gt;
&lt;td&gt;Permanent&lt;/td&gt;
&lt;td&gt;2026-10-22&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Run it from Python
&lt;/h2&gt;

&lt;p&gt;Install the client with &lt;code&gt;pip install apify-client&lt;/code&gt; and put your Apify API token in the &lt;code&gt;APIFY_TOKEN&lt;/code&gt; environment variable.&lt;br&gt;
&lt;/p&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;from&lt;/span&gt; &lt;span class="n"&gt;apify_client&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ApifyClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ApifyClient&lt;/span&gt;&lt;span class="p"&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;run_input&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;keywords&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;python developer&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;locations&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;London&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;minSalary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;          &lt;span class="c1"&gt;# GBP per year
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hideJobsWithoutSalary&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;permanent&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;maxAgeDays&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;             &lt;span class="c1"&gt;# exact posting-date cut-off
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;maxItems&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="c1"&gt;# hard cap on cost
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;actor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;scrapefy/reed-jobs-scraper-uk&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run_input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;run_input&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;job&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;defaultDatasetId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nf"&gt;iterate_items&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;job&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&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;job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company&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;|&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;salaryFrom&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;-&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;salaryTo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;salaryPeriod&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;h2&gt;
  
  
  Run it from JavaScript
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ApifyClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;apify-client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ApifyClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;APIFY_TOKEN&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;actor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;scrapefy/reed-jobs-scraper-uk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;keywords&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;python developer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;locations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;London&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;minSalary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;hideJobsWithoutSalary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;permanent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;maxAgeDays&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;maxItems&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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;defaultDatasetId&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;listItems&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;job&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;|&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;|&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;salaryFrom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;salaryTo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;salaryPeriod&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also paste any Reed search URL into &lt;code&gt;startUrls&lt;/code&gt; instead of using keywords and places, which is handy if you have already set up the filters in your browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  The filters that matter
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Salary:&lt;/strong&gt; &lt;code&gt;minSalary&lt;/code&gt;, &lt;code&gt;maxSalary&lt;/code&gt; and &lt;code&gt;hideJobsWithoutSalary&lt;/code&gt;. Reed applies the salary filter itself, so a 40-50k job can show up for a 50k minimum because the ranges overlap. If you need a strict cut, filter again on &lt;code&gt;salaryFromPerYearEst&lt;/code&gt; in your own code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract:&lt;/strong&gt; &lt;code&gt;permanent&lt;/code&gt;, &lt;code&gt;contract&lt;/code&gt;, &lt;code&gt;temp&lt;/code&gt;, &lt;code&gt;fullTime&lt;/code&gt;, &lt;code&gt;partTime&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working pattern:&lt;/strong&gt; &lt;code&gt;workingOption&lt;/code&gt; is &lt;code&gt;remote&lt;/code&gt;, &lt;code&gt;hybrid&lt;/code&gt; or &lt;code&gt;office&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who posts it:&lt;/strong&gt; &lt;code&gt;directEmployersOnly&lt;/code&gt; or &lt;code&gt;agencyOnly&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freshness:&lt;/strong&gt; &lt;code&gt;maxAgeDays&lt;/code&gt; is checked against each job's own posting date, not only Reed's date bucket.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Descriptions:&lt;/strong&gt; &lt;code&gt;includeDetails&lt;/code&gt; fetches the full description, sector, skills and reference for each job. It costs an extra event per job.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A daily new-jobs feed
&lt;/h2&gt;

&lt;p&gt;Set &lt;code&gt;onlyNew&lt;/code&gt; to true and schedule the Actor once a day in Apify. It remembers the job IDs it has already returned and skips them, and skipped jobs are not charged. Point a webhook at your own endpoint, or an integration such as Google Sheets, n8n or Make, and you have an alert for new matching jobs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs, and what rivals charge
&lt;/h2&gt;

&lt;p&gt;Current Actor pricing checked via the Apify API on 29 Oct 2026. Pay per event: &lt;strong&gt;$0.0006 per job&lt;/strong&gt;, &lt;strong&gt;$0.002 per detail page&lt;/strong&gt; if you switch details on, and $0.00005 per run start. 1,000 jobs is $0.60 (about $2.60 with descriptions). You are not charged for duplicates, jobs filtered out by age or only-new mode, or anything past &lt;code&gt;maxItems&lt;/code&gt;. If Reed blocks a run and nothing comes back, the run fails instead of finishing "successfully" with zero rows.&lt;/p&gt;

&lt;p&gt;Other Reed scrapers on the Apify Store, from our own benchmark (Store API data pulled 2026-10-22; prices as listed then, so check the pages for current ones; we did not run the rivals):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Actor&lt;/th&gt;
&lt;th&gt;Users (30 days)&lt;/th&gt;
&lt;th&gt;Charges (free tier)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;scrapersdelight/reed-jobs-scraper&lt;/td&gt;
&lt;td&gt;141&lt;/td&gt;
&lt;td&gt;$0.0005 per job, plus monitor/alert events&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;santamaria-automations/reed-uk-scraper&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;start $0.001 + $0.003 per result + $0.005 per detail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;shahidirfan/Reed-Job-Scraper&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;start $0.005 + $0.001 per result&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;memo23/reed-jobs-scraper&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;start $0.007 + $0.001 per result + extras&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fetch_cat/reed-co-uk-jobs-scraper&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;start $0.005 + $0.0000575 per item&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;scrapefy/reed-jobs-scraper-uk (ours)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;new&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.0006 per job, $0.00005 start&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The most-used rival is cheaper per job than we are. Ours is a small-run and filters story: the per-run start fee is nearly zero and the salary, date and only-new filters are applied before you are charged. If you are pulling hundreds of thousands of jobs and only price matters, compare the numbers above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits and legal notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Only publicly visible job-ad data is collected: no logins, no applying, and recruiter contact details are not collected.&lt;/li&gt;
&lt;li&gt;Posting times are Reed's UK local time, so a date check can be off by up to an hour in summer.&lt;/li&gt;
&lt;li&gt;Use the data in line with Reed's terms and UK/EU data-protection law. Job ads are mostly company data, but check before you build anything that stores personal details.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The Actor page, with the full input list and a free-tier run: &lt;a href="https://apify.com/scrapefy/reed-jobs-scraper-uk" rel="noopener noreferrer"&gt;https://apify.com/scrapefy/reed-jobs-scraper-uk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A runnable copy of the code above, with sample output, is in the example repo for this post: &lt;a href="https://github.com/scrapifyhq/reed-uk-jobs-example" rel="noopener noreferrer"&gt;https://github.com/scrapifyhq/reed-uk-jobs-example&lt;/a&gt;. If something breaks or a field is missing, open an issue on the Actor's Issues tab with the run link and I will look at it.&lt;/p&gt;

</description>
      <category>python</category>
      <category>webscraping</category>
      <category>api</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
