Skip to main content

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

# 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 (12 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 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"])   # keyless free tier
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, no pandas.
  • Idempotent. Re-exporting to the same SQLite file replaces the jobs table.

License

MIT

Metadata

Release files for remote-jobs-export 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for remote-jobs-export 1.0.0
File Size Uploaded
remote_jobs_export-1.0.0.tar.gz 8.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for remote-jobs-export 1.0.0
File Interpreter ABI Platform
remote_jobs_export-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.8 kB

Release files / remote_jobs_export-1.0.0.tar.gz

Download URL remote_jobs_export-1.0.0.tar.gz
Size 8.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1af5f92b698411b23c07b8fcb4e10cdf0d8c48cb1ac40cd591b5a024dea76bc9
BLAKE2b-256 checksum
How to use checksums
a509b3f22414e4e7fb41cc689684ee696a0919489d0dce03119135d5d9226f7f
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.0.0-py3-none-any.whl

Download URL remote_jobs_export-1.0.0-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2b2ea7dce437d5a9cb972afdf024246df08c62ff617687f332237e90b24efc2
BLAKE2b-256 checksum
How to use checksums
66de1f6b94d4594b31b59a20b9e0b7775ffe8f532164b170d5ec643d002641da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release history Release notifications | RSS feed

1.1.0

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page