How to normalize job listings from Greenhouse, Lever, and Ashby using Python
Greenhouse, Lever, and Ashby each offer public, authentication-free JSON APIs for their job boards, but all three structure job data differently, making it difficult to consolidate listings into a single dataset. A Python script using only the standard library can map fields such as title, location, apply link, workplace type, department, and salary into a unified 13-key flat format. Each platform has notable quirks: Greenhouse omits department names from its list endpoint, Lever returns full descriptions in a bare array and has a separate EU instance, and Ashby's compensation components are unordered and may contain conflicting remote-work signals. The script handles missing fields by defaulting to None and exports results as both JSON and CSV. The approach was validated with real board data pulled on 27 September 2026 UTC, including a 321-posting Lever board totalling over 6 MB.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.
Discussion (0)
Log in to join the discussion and vote.
Log in