The House of Representatives publishes job postings for personal, committee, and leadership offices in the form of a weekly email sent to subscribers. This means that if you’re a job seeker, you must read each PDF each week to see whether there’s a job that might interest you. And if you’re interested in monitoring job posting generally, or sharing those postings with others, you’re out of luck — the information is not published in a data format that allows for re-sharing and analysis. (More on that in a minute).
Centralized access to job information across the Legislative branch is fairly tricky. Many jobs are not posted on USAJobs, and they’re published in different ways in different places.
If you want to look at jobs at the CAO, Clerk, or Sergeant at Arms, each is found at a different link. There’s obviously a common database behind it, but the aggregate information is not exposed to the public. There are other House offices that hire (like the Office of Congressional Ethics) that don’t fit into this neat hierarchy. The information for the House CAO, Clerk, and SAA is published as text and not a PDF, so in theory its possible to build scrapers for that data, although I find my scrapers get blocked by the House and will stop working. In addition, you have to know all the various House websites to find this information, which can be challenging.
The Senate aggregates political and non-political offices into one place, where the announcements are published in HTML. This is a comparative improvement over the House as you can in theory scrape the data, although it’s not structured in any useful way. Internships are published separately here. This format, by the way, is a legacy of how they used to publish the data, which is as a piece of paper you’d have to visit the Senate to obtain. (Don’t ask me how I know.)
There’s a plethora of Legislative branch agencies that hire, such as the U.S. Capitol Police, Architect of the Capitol, Library of Congress, Congressional Research Service (part of the LC), Government Accountability Office, Government Publishing Office, Office of Congressional Workplace Rights, and so on. I think you can almost always find these jobs on USA Jobs, but there may be exceptions. USAJobs does have an API, so you can get structured data.
In my opinion, all Legislative branch job announcements should be published online as structured data, with easily usable fields for elements like: agency, office, job title, job category (kind of work), job description, date posted, pay range, whether it is re-posted, and so on.
Derek Willis, a former Congressional reporter turned academic at the University of Maryland, just released a tool that transforms House political job announcements into structured data. Read his blogpost on the topic. This is something we’ve wanted Congress to do for a while. He transforms the PDF to text and then uses a combination of Regex and LLMs to transform it into structured data. It’s still a work in progress and he’d love to hear from you on how to further improve it.
Thank you, Derek, for improving the quality of information about the Legislative branch and for publishing your code on GitHub for all to see and tinker with. I hope this will also serve as a prompt for our friends in the Legislative branch to reconsider how this information is published.