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.
- Fork the Project
- Create your Feature Branch
- Commit your Changes
- Push to the Branch
- Open a Pull Request
📄 License
Distributed under the MIT License. See LICENSE for more information.
Built with ❤️ for the global expat community.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2dad1ed33103911ca41c3fbcadc0a092fee82482508babb07a940d63502299c
|
|
| MD5 |
76b69a345cfd70e231d2a9030a4c838b
|
|
| BLAKE2b-256 |
489ce978a3de1d4196e71e9e2b40486e0f12839b8a8ebc9d1c5d2664cd1204f5
|
Provenance
The following attestation bundles were made for jobseek_expat-0.1.0.tar.gz:
Publisher:
pypi-publish.yml on electricalgorithm/jobseek-expat
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jobseek_expat-0.1.0.tar.gz -
Subject digest:
b2dad1ed33103911ca41c3fbcadc0a092fee82482508babb07a940d63502299c - Sigstore transparency entry: 813365270
- Sigstore integration time:
-
Permalink:
electricalgorithm/jobseek-expat@b849314d31a56c1de8e23c2c000238e02d05154d -
Branch / Tag:
refs/tags/v1.1 - Owner: https://github.com/electricalgorithm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@b849314d31a56c1de8e23c2c000238e02d05154d -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e31bb237cec3c46e2253fd5d794b2b17dc783446307cc580e46573280036a644
|
|
| MD5 |
c9b7eb17d7c46b3edb9546c76df13895
|
|
| BLAKE2b-256 |
4fcd11a1435e58bb6d5c592fd7457eb1003866f0b46bcb9250c8b7e86bb44818
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jobseek_expat-0.1.0-py3-none-any.whl -
Subject digest:
e31bb237cec3c46e2253fd5d794b2b17dc783446307cc580e46573280036a644 - Sigstore transparency entry: 813365272
- Sigstore integration time:
-
Permalink:
electricalgorithm/jobseek-expat@b849314d31a56c1de8e23c2c000238e02d05154d -
Branch / Tag:
refs/tags/v1.1 - Owner: https://github.com/electricalgorithm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@b849314d31a56c1de8e23c2c000238e02d05154d -
Trigger Event:
release
-
Statement type: