<?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: quietbyte</title>
    <description>The latest articles on DEV Community by quietbyte (@quietbytedev).</description>
    <link>https://dev.to/quietbytedev</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%2F4172548%2F6a28add8-0c8b-4808-a94f-86da7d553a41.jpg</url>
      <title>DEV Community: quietbyte</title>
      <link>https://dev.to/quietbytedev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/quietbytedev"/>
    <language>en</language>
    <item>
      <title>"Remote" doesn't mean "anywhere": I built an API that checks if you can actually apply</title>
      <dc:creator>quietbyte</dc:creator>
      <pubDate>Fri, 09 Oct 2026 07:50:34 +0000</pubDate>
      <link>https://dev.to/quietbytedev/remote-doesnt-mean-anywhere-i-built-an-api-that-checks-if-you-can-actually-apply-nf1</link>
      <guid>https://dev.to/quietbytedev/remote-doesnt-mean-anywhere-i-built-an-api-that-checks-if-you-can-actually-apply-nf1</guid>
      <description>&lt;p&gt;If you've looked for remote work from outside the US, you know the routine: find a great "remote" role, write a cover letter, scroll to the bottom of the ad, and read &lt;em&gt;"US residents only."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I measured it. In a sample of &lt;strong&gt;200 recent jobs on Jobicy, 118 were open to US residents only&lt;/strong&gt;. "Remote" usually means "remote within one country."&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Remote Jobs by Country&lt;/strong&gt;, an Apify Actor that pulls jobs from &lt;strong&gt;Himalayas, Remote OK, We Work Remotely and Jobicy&lt;/strong&gt; and answers one question for each job: &lt;strong&gt;can someone living in country X apply?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The hard part: every board says it differently
&lt;/h2&gt;

&lt;p&gt;The four boards describe "where can you work from" in four formats:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Board&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Himalayas&lt;/td&gt;
&lt;td&gt;A list of country names (empty means worldwide) plus a list of UTC offsets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jobicy&lt;/td&gt;
&lt;td&gt;Free text: &lt;code&gt;"APAC,  EMEA,  LATAM,  Canada,  USA"&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;We Work Remotely&lt;/td&gt;
&lt;td&gt;A region (&lt;code&gt;"Anywhere in the World"&lt;/code&gt;) &lt;em&gt;and&lt;/em&gt; a country field full of flag emojis: &lt;code&gt;🇺🇸 United States of America&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remote OK&lt;/td&gt;
&lt;td&gt;Free text that is often empty, or just &lt;code&gt;"Remote"&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So the core of the Actor is a small geo parser that turns all of these into the same shape:&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="nd"&gt;@dataclass&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Geo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;worldwide&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;
    &lt;span class="n"&gt;countries&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;      &lt;span class="c1"&gt;# ISO2 codes
&lt;/span&gt;    &lt;span class="n"&gt;regions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;        &lt;span class="c1"&gt;# APAC, EMEA, EU, LATAM, ...
&lt;/span&gt;    &lt;span class="n"&gt;excluded&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;       &lt;span class="c1"&gt;# "Anywhere (not in the US, CA, UK)"
&lt;/span&gt;    &lt;span class="n"&gt;timezones&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;     &lt;span class="c1"&gt;# UTC offsets
&lt;/span&gt;    &lt;span class="n"&gt;basis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;          &lt;span class="c1"&gt;# "listing" | "description" | "none"
&lt;/span&gt;    &lt;span class="n"&gt;evidence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then &lt;code&gt;open_to(geo, "DE", utc_offset=1)&lt;/code&gt; returns &lt;code&gt;yes&lt;/code&gt;, &lt;code&gt;no&lt;/code&gt; or &lt;code&gt;unclear&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things that tripped me up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"CA" is not Canada.&lt;/strong&gt; In free text, "CA" is far more often California, and "IN" is a preposition, not India. Two-letter codes only count from a small safe set (US, UK, UAE), in upper case. The one exception is inside an exclusion list like &lt;em&gt;"not in the US, CA, UK, NZ, or AU"&lt;/em&gt;, where they are clearly countries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Bosnia and Herzegovina" contains "and".&lt;/strong&gt; Splitting on " and " to handle &lt;em&gt;"Netherlands and United Kingdom"&lt;/em&gt; broke country names like &lt;em&gt;"Trinidad and Tobago"&lt;/em&gt;. The fix is to try the whole token as a country first, and split only if it doesn't match.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flag emojis are just two letters.&lt;/strong&gt; 🇩🇪 is the regional-indicator pair D + E, so you can decode it with arithmetic, no lookup table needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A list of every time zone is no restriction.&lt;/strong&gt; Some Himalayas jobs list all 24+ UTC offsets. Treating that as a filter would be silly, so it counts as "no time-zone limit."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When the board says nothing, read the ad, but carefully.&lt;/strong&gt; Remote OK's location is often empty. The Actor then looks for one sentence in the description that says where the person must live (&lt;em&gt;"You must be based in Europe"&lt;/em&gt;) and uses that, keeping the sentence as evidence. If there is no such sentence, the answer is &lt;code&gt;unclear&lt;/code&gt;. A wrong &lt;code&gt;yes&lt;/code&gt; costs someone a cover letter.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a record looks like
&lt;/h2&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;"Senior Software Engineer, Internal Tooling"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"RevenueCat"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"APAC, EMEA, USA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"eligibleRegions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"APAC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"EMEA"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"eligibleCountries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"US"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"eligibilityBasis"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"listing"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"eligibilityEvidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"APAC, EMEA, USA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"openToApplicant"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"yes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"visaSponsorship"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"not_mentioned"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"alsoListedOn"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="nl"&gt;"attribution"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Job from Jobicy (jobicy.com). ..."&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;Other things it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deduplicates across boards.&lt;/strong&gt; The same job on two boards becomes one record, with the other link in &lt;code&gt;alsoListedOn&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adds visa-sponsorship tags&lt;/strong&gt;, read sentence by sentence, because "visa sponsorship" in an ad usually means "&lt;em&gt;not&lt;/em&gt; available."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Carries an attribution string per board.&lt;/strong&gt; All four boards allow reuse if you credit them, so the rule travels with the data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring mode.&lt;/strong&gt; Schedule it daily and it only returns, and only charges for, jobs it hasn't seen before.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sources, honestly
&lt;/h2&gt;

&lt;p&gt;The Actor uses only the boards' own public APIs and RSS feeds, within the terms each one publishes: no logins, no proxies, no browser automation. I left out boards whose terms didn't allow this kind of use, even ones with nice APIs.&lt;/p&gt;

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

&lt;p&gt;It's an Apify Actor: &lt;a href="https://apify.com/quietbyte/remote-jobs-by-country" rel="noopener noreferrer"&gt;Remote Jobs by Country&lt;/a&gt;. Put in your country code (&lt;code&gt;DE&lt;/code&gt;, &lt;code&gt;BR&lt;/code&gt;, &lt;code&gt;IN&lt;/code&gt;…), and optionally your UTC offset and some keywords. It costs $1.50 per 1,000 jobs, and filtered-out jobs and duplicates are free.&lt;/p&gt;

&lt;p&gt;If you're after jobs on company career pages instead, there are two sister Actors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://apify.com/quietbyte/ats-jobs-visa" rel="noopener noreferrer"&gt;ATS Jobs API with Visa Sponsorship Tags&lt;/a&gt;: Greenhouse, Lever, Ashby, SmartRecruiters and Recruitee, with the same sentence-level visa tags.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://apify.com/quietbyte/workday-jobs-visa" rel="noopener noreferrer"&gt;Workday Jobs API with H-1B &amp;amp; UK Visa Sponsor Evidence&lt;/a&gt;: any company's Workday careers site, and it backs each visa tag with the employer's US H-1B filings and UK sponsor licence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a job is marked wrong for your country, tell me in the comments or open an issue on the Actor page. Every rule in the parser came from a real ad that broke it.&lt;/p&gt;

</description>
      <category>career</category>
      <category>python</category>
      <category>api</category>
      <category>remote</category>
    </item>
    <item>
      <title>Does this company really sponsor visas? I joined Workday job ads with H-1B and UK sponsor records</title>
      <dc:creator>quietbyte</dc:creator>
      <pubDate>Fri, 09 Oct 2026 07:29:31 +0000</pubDate>
      <link>https://dev.to/quietbytedev/does-this-company-really-sponsor-visas-i-joined-workday-job-ads-with-h-1b-and-uk-sponsor-records-4edc</link>
      <guid>https://dev.to/quietbytedev/does-this-company-really-sponsor-visas-i-joined-workday-job-ads-with-h-1b-and-uk-sponsor-records-4edc</guid>
      <description>&lt;p&gt;If you search for jobs abroad, you quickly learn that the ad text lies by omission. An ad that says nothing about visas may come from an employer that files hundreds of H-1B petitions a year. An ad that says "visa sponsorship available" is often a template line from a different country's office.&lt;/p&gt;

&lt;p&gt;So I built a tool that looks at &lt;strong&gt;both&lt;/strong&gt;: what the ad says, and what the employer has actually done.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two signals
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. The ad text.&lt;/strong&gt; Each Workday job is tagged &lt;code&gt;offered&lt;/code&gt;, &lt;code&gt;refused&lt;/code&gt;, &lt;code&gt;mixed&lt;/code&gt; or &lt;code&gt;not_mentioned&lt;/code&gt;, and the tag always comes with the exact sentence it is based on. Ads that say nothing are &lt;code&gt;not_mentioned&lt;/code&gt;, never "no".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The employer record.&lt;/strong&gt; The job is matched to official public data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;US:&lt;/strong&gt; certified H-1B filings from the Department of Labor's disclosure data (count, top job titles, median annual wage, top states).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UK:&lt;/strong&gt; the Home Office Register of Licensed Sponsors (routes and rating).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a trimmed record for a job at a large chip company:&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;"HPC Operations Engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"US, CA, Santa Clara"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"visaSponsorship"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"not_mentioned"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sponsorEvidence"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="nl"&gt;"us"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="nl"&gt;"matchedName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"NVIDIA Corporation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"match"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"exact"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"fiscalYear"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FY2025"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"certifiedLcas"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;460&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"medianAnnualWage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;201053&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"topStates"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"CA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TX"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"WA"&lt;/span&gt;&lt;span class="p"&gt;]&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;span class="nl"&gt;"uk"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="nl"&gt;"matchedName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"NVIDIA Ltd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"match"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"exact"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"routes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Skilled Worker"&lt;/span&gt;&lt;span class="p"&gt;]&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;span class="p"&gt;}&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;The ad says nothing about visas, yet the employer has 460 certified filings in a year. That is a very different lead from a small company with zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things that tripped me up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Names don't match.&lt;/strong&gt; The ad says "nvidia", the filing says "NVIDIA Corporation", the UK register says "NVIDIA Ltd". Names are normalised, and every match is labelled &lt;code&gt;exact&lt;/code&gt; or &lt;code&gt;prefix&lt;/code&gt;. A &lt;code&gt;prefix&lt;/code&gt; match (only the first words agree) is a lead, not proof, and you can pass a legal name to steer it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence is about the employer, not the job.&lt;/strong&gt; An employer that sponsors in general may still not sponsor for a given role. The ad tag tells you what this ad says; the filings tell you what the company does. The output keeps them separate on purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workday has no public feed.&lt;/strong&gt; Each careers site loads its jobs from a JSON endpoint behind the page. The tool uses only that public data, with an honest User-Agent, at most two concurrent requests per company, and backs off when asked to. It never touches application pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workday caps a search at 2,000 jobs.&lt;/strong&gt; The run logs a notice when a company has more, and keywords, locations and countries narrow it down.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it
&lt;/h2&gt;

&lt;p&gt;It's an Apify Actor. Paste a careers-site address (it contains &lt;code&gt;myworkdayjobs.com&lt;/code&gt;), optionally add keywords, countries, a remote-only switch, a visa filter or a sponsor filter (&lt;code&gt;H-1B filers only&lt;/code&gt;, &lt;code&gt;UK licence only&lt;/code&gt;, or either), and run it. A monitoring mode returns, and bills, only the jobs that are new since your last run.&lt;/p&gt;

&lt;p&gt;It's called &lt;strong&gt;Workday Jobs API with H-1B &amp;amp; UK Visa Sponsor Evidence&lt;/strong&gt;, priced at $0.003 per job, and the page also shows the input and output schemas: &lt;a href="https://apify.com/quietbyte/workday-jobs-visa" rel="noopener noreferrer"&gt;https://apify.com/quietbyte/workday-jobs-visa&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm the developer, so I'm biased. If you find a company that doesn't match, or a sentence that gets tagged wrongly, tell me in the Issues tab of the Actor and I'll fix it.&lt;/p&gt;

&lt;p&gt;Related: &lt;a href="https://apify.com/quietbyte/ats-jobs-visa" rel="noopener noreferrer"&gt;ATS Jobs API with visa tags&lt;/a&gt; (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee) and &lt;a href="https://apify.com/quietbyte/remote-jobs-by-country" rel="noopener noreferrer"&gt;Remote Jobs by Country&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>python</category>
      <category>api</category>
      <category>career</category>
      <category>jobs</category>
    </item>
  </channel>
</rss>
