remote-jobs-export
Pull, filter, and export normalized remote-job data from the free Remote Jobs API to CSV / JSON / SQLite — or print a quick summary. Stdlib-only (no third-party dependencies), no API key required for the free tier.
The API aggregates 5 boards (Remotive, RemoteOK, Jobicy, We Work Remotely, Hacker News) into one clean schema. This tool pulls that data locally so you can analyze it in a spreadsheet, a database, or a script — no scraping, no key juggling.
Why
- You want a snapshot of remote jobs as a CSV to open in Excel/Google Sheets.
- You want the data in SQLite for quick SQL analysis (
SELECT ... GROUP BY source). - You want a JSON file to feed into your own pipeline.
- You want a one-line summary (counts by source / category / location).
It's the offline, export-focused companion to the API itself.
Install
pip install remote-jobs-export
Or run it directly from this repo without installing:
python -m remote_jobs_export.cli --help
Quick start
# Export 100 jobs to a CSV file (no key needed)
remote-jobs-export --limit 100 -o jobs.csv
# Export to SQLite for SQL analysis
remote-jobs-export --limit 200 -o jobs.db
# Export to JSON
remote-jobs-export --limit 200 -o jobs.json
# Filter by source (remotive / remoteok / jobicy / wwr / hn)
remote-jobs-export --source remotive -o remotive.csv
# Filter by skills (comma-separated)
remote-jobs-export --skills python,devops -o python_devops.csv
# Filter by minimum skill fit-score (0-100)
remote-jobs-export --min-score 70 -o top.csv
# Filter by minimum salary (server-side; on the parsed top-of-range salary_max)
remote-jobs-export --min-salary 90000 -o senior.csv
# Just print a summary (no file)
remote-jobs-export --limit 300 --summary
Example summary output
{
"total": 200,
"by_source": [["jobicy", 120], ["wwr", 55], ["remoteok", 19], ["remotive", 6]],
"by_category": [["Customer Support", 10], ["DevOps and Sysadmin", 10], ...],
"top_locations": [["Anywhere in the World", 54], ["USA / Any", 14], ...],
"scored_jobs": 200
}
Output schema (16 columns)
| column | type | notes |
|---|---|---|
id |
text | stable job id |
title |
text | |
company |
text | |
location |
text | may be empty |
category |
text | may be empty |
source |
text | remotive / remoteok / jobicy / wwr / hn |
salary |
text | raw string, may be empty |
salary_min |
int | parsed minimum salary, or null |
salary_max |
int | parsed maximum salary, or null |
salary_currency |
text | e.g. USD, may be empty |
salary_period |
text | e.g. year / month / day, may be empty |
tags |
CSV: comma-joined · JSON/SQLite: list | deduped, order-preserving |
fit_score |
int | 0-100, or null |
published |
text | ISO-8601 UTC or empty |
url |
text | original job listing URL |
description |
text |
Python API
from remote_jobs_export import fetch_jobs, export_csv, export_sqlite, summarize
jobs = fetch_jobs(limit=200, skills=["python"], min_salary=90000) # keyless free tier; filter by min salary
export_csv(jobs, "jobs.csv")
export_sqlite(jobs, "jobs.db")
print(summarize(jobs))
A paid api_key can be passed to fetch_jobs(api_key=...) (sent as Authorization: Bearer ...) for higher limits / extra filters.
Notes
- Free tier needs no key. The default base (
https://remote-jobs-api.tten.no) serves the free tier keyless. - Stdlib-only. Python 3.8+. No
requests, nopandas. - Idempotent. Re-exporting to the same SQLite file replaces the
jobstable.
License
MIT
Metadata
Release files for remote-jobs-export 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| remote_jobs_export-1.1.0.tar.gz | 9.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| remote_jobs_export-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.8 kB
Release files / remote_jobs_export-1.1.0.tar.gz
| Download URL | remote_jobs_export-1.1.0.tar.gz |
|---|---|
| Size | 9.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f282d3e3de539e47b83b28f65848510ded439ba53450cd6eec59d9e53d1afbd2
|
|
BLAKE2b-256 checksum How to use checksums |
15cc2cac313963da18435273fe6410d1f5d434c43d90795e483be3298146de24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / remote_jobs_export-1.1.0-py3-none-any.whl
| Download URL | remote_jobs_export-1.1.0-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
babc4111aa99e6b105ff843d4de9d2b346e6ea4a9eb9c6561280fb455efc2ed9
|
|
BLAKE2b-256 checksum How to use checksums |
861c0639103b8100ecbcbaf61709e24d3ca299928b2000ba421575f3ea99c256
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|