Skip to main content

CLI tool for finding English-speaking jobs for expats worldwide

Project description

JobSeek Expat 🌍

JobSeek Expat is a powerful, open-source CLI tool designed to help expats and international job seekers find English-speaking jobs in non-English speaking countries (like Germany, France, Netherlands, etc.).

It scrapes major job boards, filters out local-language requirements, and presents you with a clean, curated list of opportunities.

🚀 Features

  • Multi-Platform Scraping: Search LinkedIn, Indeed, and Glassdoor simultaneously.
  • Smart Filtering:
    • English Only: Automatically detects job description language.
    • No "Local Language" Required: Filters out jobs requiring C1/Fluent local language skills (customizable).
    • Experience Level: Filter by Seniority (Entry, Mid-Senior, etc. - Best on LinkedIn).
  • Flexible Locations: Search multiple cities or "Remote" in your target country.
  • Advanced Search:
    • Multiple Keywords: Search for "Developer, Designer" in one go.
    • Exclusion Lists: Hates specific terms? --exclude "intern, thesis".
  • Output Options:
    • Beautiful CLI Tables: Clickable links, color-coded output.
    • JSON: Machine-readable format for automation.

📦 Installation

From PyPI (Recommended)

pip install jobseek-expat

From Source

git clone https://github.com/electricalgorithm/jobseek-expat.git
cd jobseek-expat
pip install .

🛠️ Usage

Once installed, the jobseek-expat command (and its short alias je) is available globally.

Generic syntax:

jobseek-expat "KEYWORD" --country "COUNTRY_NAME" [OPTIONS]
# or simply:
je "KEYWORD" --country "COUNTRY_NAME" [OPTIONS]

Examples

1. The Classic Expat Search (Berlin) Find "Software Engineer" jobs in Germany (Berlin) that likely don't require German.

jobseek-expat "Software Engineer" --location "Berlin"

2. Multi-City & Remote Search Search for "Product Manager" in Amsterdam and Remote within the Netherlands.

jobseek-expat "Product Manager" \
  --country "Netherlands" \
  --location "Amsterdam, Remote" \
  --local-language "Dutch"

Note: We specify --local-language "Dutch" so it filters out "Dutch required" jobs.

3. The "Broad Net" Strategy Search for Developer OR Data Scientist roles in France, specifically Paris, excluding internships.

jobseek-expat "Developer, Data Scientist" \
  --country "France" \
  --location "Paris" \
  --local-language "French" \
  --exclude "intern, stage, internship" \
  --results-wanted 50

Command Line Options

Option Alias Description Default
KEYWORD Job title(s) or keywords (comma-separated). Required.
--country Target Country (e.g. Germany, France). Germany
--location Specific City/Region (comma-separated). Use "Remote" for country-wide remote. Whole Country
--local-language Language to filter out if required (e.g. German, Dutch). German
--hours-old Max age of job postings in hours. 24
--results-wanted Jobs to fetch per keyword/location. 20
--exclude Keywords to exclude (title/description). None
--site Sites: linkedin, indeed, glassdoor. All 3
--output -o Format: table or json. table
--verbose -v Show scraper debug logs. False

🤝 Contributing

We welcome contributions! Whether it's adding a new filter, improving the language detection, or supporting more job boards.

  1. Fork the Project
  2. Create your Feature Branch
  3. Commit your Changes
  4. Push to the Branch
  5. Open a Pull Request

📄 License

Distributed under the MIT License. See LICENSE for more information.


Built with ❤️ for the global expat community.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jobseek_expat-1.2.0.tar.gz (62.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jobseek_expat-1.2.0-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file jobseek_expat-1.2.0.tar.gz.

File metadata

  • Download URL: jobseek_expat-1.2.0.tar.gz
  • Upload date:
  • Size: 62.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jobseek_expat-1.2.0.tar.gz
Algorithm Hash digest
SHA256 f2bdf9e8702b0c4e4baa6af5574a6cccc0f4021ab1483ff5899f913e8eb423e4
MD5 92b306671885754b217cb12ece5a82c2
BLAKE2b-256 6f819947d5a906598e149376a1edfb9d96092a5536371c5c8620b77734d88dae

See more details on using hashes here.

Provenance

The following attestation bundles were made for jobseek_expat-1.2.0.tar.gz:

Publisher: pypi-publish.yml on electricalgorithm/jobseek-expat

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jobseek_expat-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: jobseek_expat-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jobseek_expat-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ff5b84cb80f1ffbbd7ee01e9a8715cf9a495073a442653f543ea2ec28e490428
MD5 efe581cf9503ad9370db203ac6d60176
BLAKE2b-256 5e289302073145ef8e87a38f80a7184584cba6f7e86418e8eb100ee0af560f85

See more details on using hashes here.

Provenance

The following attestation bundles were made for jobseek_expat-1.2.0-py3-none-any.whl:

Publisher: pypi-publish.yml on electricalgorithm/jobseek-expat

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page