Open job postings from 378 well-known tech companies, pulled directly from nine applicant tracking systems and normalized into one flat schema.
A daily-refreshed collection of open job postings scraped from the public, unauthenticated job-board JSON feeds of nine applicant tracking systems (ATS): Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio, and BambooHR. These are the same feeds each platform's own embeddable careers widget reads from — no scraping of rendered HTML pages, no headless browser. A GitHub Actions workflow re-runs the fetcher every day and commits whatever changed.
The company list is a fixed, curated set of roughly 380 well-known employers (mostly tech, fintech, and adjacent). It is not a comprehensive crawl of every company on these ATS platforms — companies are added by hand.
companies.json in the source repo for the exact set.postedAt is always null for Workday and BambooHR postings — those platforms don't expose a posting timestamp in their public feed.department and employmentType are not exposed by every platform; expect null on some rows.isRemote uses the platform's own flag when present, otherwise it's inferred from location text containing "remote" — treat it as a best-effort signal, not ground truth.summary.json's perCompanyStatus, not silently dropped.| Field | Type | Notes |
|---|---|---|
company | string | Display name |
platform | string | greenhouse, lever, ashby, workday, smartrecruiters, workable, recruitee, personio, bamboohr |
jobId | string | Platform-native posting ID |
title | string | Job title, as published |
department | string | null | Not exposed by every platform |
locations | array of strings | All listed locations |
isRemote | boolean | null | Platform flag or inferred from location text |
employmentType | string | null | e.g. "Full-time" |
applyUrl | string | Direct link to the application page |
postedAt | string | null | ISO timestamp; always null for Workday & BambooHR |
scrapedAt | string | ISO timestamp of the fetch that produced this row |
{
"company": "Ramp",
"platform": "ashby",
"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"title": "Security Engineer, Cloud",
"department": "Engineering",
"locations": ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"],
"isRemote": true,
"employmentType": "FullTime",
"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application",
"postedAt": "2026-04-07T17:12:35.753+00:00",
"scrapedAt": "2026-08-06T00:57:02.932Z"
}
curl -s https://raw.githubusercontent.com/ConorsCode/open-jobs-data/main/data/jobs.json | jq '.[0]'
import pandas as pd
df = pd.read_json("https://raw.githubusercontent.com/ConorsCode/open-jobs-data/main/data/jobs.json")
df[df["isRemote"] == True].groupby("company").size().sort_values(ascending=False)
const jobs = await fetch("https://raw.githubusercontent.com/ConorsCode/open-jobs-data/main/data/jobs.json").then(r => r.json());
console.log(jobs.length, "postings");