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-0.1.0.tar.gz (43.9 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-0.1.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for jobseek_expat-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b2dad1ed33103911ca41c3fbcadc0a092fee82482508babb07a940d63502299c
MD5 76b69a345cfd70e231d2a9030a4c838b
BLAKE2b-256 489ce978a3de1d4196e71e9e2b40486e0f12839b8a8ebc9d1c5d2664cd1204f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for jobseek_expat-0.1.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-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jobseek_expat-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 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-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e31bb237cec3c46e2253fd5d794b2b17dc783446307cc580e46573280036a644
MD5 c9b7eb17d7c46b3edb9546c76df13895
BLAKE2b-256 4fcd11a1435e58bb6d5c592fd7457eb1003866f0b46bcb9250c8b7e86bb44818

See more details on using hashes here.

Provenance

The following attestation bundles were made for jobseek_expat-0.1.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