TheirStackTheirStack Logo
Log inSign up
DocumentationAPI ReferenceWebhooksDatasetsMCPGuides
Guides
Adding a technology or job filter to your company search
How to backfill a job board with TheirStack
How to fetch jobs periodically using the Jobs API
How to Automate Your Ad Chase as a Recruiting Agency
How to Avoid Downloading the Same Companies Twice
How to Build a Targeted Lead List Using Technographic Data
How to Check if a Technology or Keyword Is Available
How to Choose the Best Way to Access TheirStack Data
How to create a niche job newsletter with TheirStack MCP
How to Discover Any Company's Tech Stack
How to Enrich a Company List with Technographic Data
How to Exclude Specific Companies from a Search
How to Find Companies by Technology Stack
Find hidden candidates with niche technology experience
How to find old job postings
How to Find Promoted Jobs
How to Find Reposted Jobs
How to Find Truly Remote Jobs (Exclude US/Canada-only)
Identifying companies with problems your software solves
Monitor buying intent on a target account list
How to Monitor Competitor Hiring
How to monitor job postings automatically
Monitor tech stack changes on a target account list
Outreach companies actively hiring
How to Scrape Job Data for a List of Company Domains
How to Search Job Postings Across 328,000+ Sources
How to send a slack message for every new job found
Spotting your competitors' next moves
How to Target Companies by the Technology They Use
How to track closed job postings
How Marketing Teams Can Use Hiring Data to Improve Targeting and Find Better Leads
Use job data for investment research
How to Build LinkedIn Audiences from Hiring Intent
How to Build LinkedIn Audiences from Technographics Data
Monitoring open jobs from current and past customers
Integration guide for sales intelligence software

How to Find Truly Remote Jobs (Exclude US/Canada-only)

The remote filter only means a job is remote, not that it accepts applicants worldwide. Learn how to exclude geo-restricted postings like 'Remote - US' or 'US citizenship required' using a job-description pattern filter.

The remote filter tells you a job can be done remotely — it does not tell you the job is open to applicants anywhere. A large share of "remote" postings are geo-restricted to a single country: titles like "Remote - US", lines like "Applicants must be based in the United States", or hard requirements like "US citizenship required". From a worldwide perspective, those are not truly remote.

There is no structured field for "open to any country", because the eligibility almost always lives in the free text of the job description rather than in a tidy attribute. The fix is a text heuristic: keep the remote filter on, and exclude postings whose description matches the phrases that signal a US or Canada restriction. In the app this is the Job description → does not match filter (the API field job_description_pattern_not).

Step-by-step: exclude geo-restricted remote jobs

Open a new job search

Go to Job Search and start a fresh search.

Set the Remote filter

Add the Remote filter and turn it on. This keeps only postings that can be done remotely — the starting point we then narrow down.

Clear the Job country filter

By default your account scopes searches to your own country. To search remote jobs worldwide, open the Job country filter and clear it (or set it to the countries you actually care about). If you leave it on your home country, you'll only ever see jobs located there — defeating the purpose of finding worldwide-remote roles.

Add the Job description filter and switch it to "does not match"

Click Add Filter, search for Job description, and add it. Change its operator from matches to does not match, then paste the patterns below (one per line). Any posting whose description matches at least one pattern is excluded.

The pattern set

These are RE2 regular expressions, one per phrasing of a restriction. Each handles both the US and Canada in a single country group, so you only need five lines. Paste them into the Job description → does not match filter.

(?i)\b(?:must|need to|required to|should)\b[\w ]{0,22}\b(?:located|based|residing|reside|living|live)\b[\w ]{0,10}\b(?:(?-i:U\.?S\.?A?)|united states|canada)\b
(?i)\b(?:authoriz\w+|eligible|legally)\b[\w ]{0,18}\bwork\b[\w ]{0,8}\b(?:(?-i:U\.?S\.?A?)|united states|canada)\b
(?i)\b(?:(?-i:U\.?S\.?A?)\s?citizens?|canadian\s+(?:citizens?|residents?))
(?i)\b(?:(?-i:U\.?S\.?A?)|united states|canad(?:a|ian))[ -](?:only|based\s+(?:candidates?|applicants?|residents?|employees?)|residents?\s+only)\b
(?i)remote\s?[-–—(/|]{1,3}\s?(?:(?-i:U\.?S\.?A?)|canada)\b

What each line targets:

  • "must be located/based/residing in the US/Canada" — explicit location requirements.
  • "authorized / eligible / legally able to work in the US/Canada" — work-authorization requirements.
  • "US citizen", "Canadian citizens/residents" — citizenship/residency requirements.
  • "US-only", "USA-based candidates", "US residents only", "Canada-only" — short restriction tags.
  • "Remote - US", "Remote | Canada" — the geo suffix on a remote title (covers -, –, —, (, /, | separators, and US/USA).

The whole pattern is case-insensitive ((?i)) except the US abbreviation, which is wrapped in (?-i:U\.?S\.?A?) to force uppercase. This is deliberate: a case-insensitive us would also match the ordinary English word "us" (and even bare "u"), flooding the results with false positives. Scoping the flag back off means only US, USA, or U.S. match — while "United States" and "Canada" stay case-insensitive. RE2 (the engine TheirStack uses) supports these inline flag groups.

Ready-made search

This search applies the remote filter, limits to jobs posted in the last 30 days, and excludes all five patterns above:

Open the ready-made search →

Measured on production: remote + last 30 days returns ~874K jobs. The patterns above exclude ~36K explicitly US/Canada-restricted postings, leaving ~838K truly-remote candidates.

Also via API and webhooks

The same filter is available in the Jobs Search API as job_description_pattern_not — pass the five patterns as a JSON array of strings alongside "remote": true (note the doubled backslashes for JSON escaping):

{
  "remote": true,
  "posted_at_max_age_days": 30,
  "job_description_pattern_not": [
    "(?i)\\b(?:must|need to|required to|should)\\b[\\w ]{0,22}\\b(?:located|based|residing|reside|living|live)\\b[\\w ]{0,10}\\b(?:(?-i:U\\.?S\\.?A?)|united states|canada)\\b",
    "(?i)\\b(?:authoriz\\w+|eligible|legally)\\b[\\w ]{0,18}\\bwork\\b[\\w ]{0,8}\\b(?:(?-i:U\\.?S\\.?A?)|united states|canada)\\b",
    "(?i)\\b(?:(?-i:U\\.?S\\.?A?)\\s?citizens?|canadian\\s+(?:citizens?|residents?))",
    "(?i)\\b(?:(?-i:U\\.?S\\.?A?)|united states|canad(?:a|ian))[ -](?:only|based\\s+(?:candidates?|applicants?|residents?|employees?)|residents?\\s+only)\\b",
    "(?i)remote\\s?[-–—(/|]{1,3}\\s?(?:(?-i:U\\.?S\\.?A?)|canada)\\b"
  ]
}

To get new truly-remote postings automatically as they're published, attach this filter to a saved search and push matches to your systems with a webhook.

Caveat: this is a text heuristic

This filter removes postings that explicitly state a US or Canada restriction. It cannot catch a job that is, in practice, US-only but simply omits the eligibility line — there's no restriction text to match. Treat the result as "remote jobs that don't advertise a US/Canada restriction", not a guarantee of worldwide eligibility.

It can also over-exclude in the rare inverse case: a posting that welcomes applicants, like "non-US citizens welcome" or "US citizenship is not required", still contains the substring "US citizen", so the citizenship line matches and the job is dropped. RE2 has no lookbehind, so there's no clean way to carve out the negated phrasing inside a single exclude pattern. In practice this is small — measured at ~128 postings in a 30-day window, about 1.5% of the ~8.6K the citizenship line removes (and ~0.4% of the full exclusion set) — so we accept it rather than complicate the patterns. If those jobs matter to you, drop the citizenship line from the filter.

The pattern set is also fully editable. If you keep seeing a phrasing that slips through (another country, a different wording, an industry-specific term), add your own pattern to the does not match filter — the same approach extends to any geo or eligibility restriction.

Further reading

Job Search

Search and filter job postings by title, technology, salary, location, and 20+ other attributes. Combine with company filters to find jobs at companies matching your ICP.

How to Search Job Postings Across 328,000+ Sources

Complete guide to searching millions of job postings from 328,000+ sources. Learn how to combine filters for sales prospecting, recruiting, and market research — with full walkthroughs for each use case.

Job Search

This endpoint lets you search for jobs posted on thousands of websites and filter by multiple filters, such as job titles, companies, locations, company attributes, dates and many more.

How is this guide?

Last updated on

How to Find Reposted Jobs

Learn how to find reposted job listings and use them as strong hiring signals for sales prospecting, recruiting, and competitive intelligence.

Identifying companies with problems your software solves

Learn how to use job postings to discover companies actively hiring for tasks your software automates. Find your ideal customers by analyzing [[total_jobs]] job descriptions for specific pain points and manual processes.

On this page

Step-by-step: exclude geo-restricted remote jobsThe pattern setReady-made searchAlso via API and webhooksCaveat: this is a text heuristicFurther reading