ProgramMatek – Exploring the API


In this article, we will delve into the website and its API to understand the similarities and differences between the two data systems. We will also explore how to test the API using a web browser and examine the construction of URLs. Additionally, we will provide some sample Python code to programmatically download data from the site.


According to’s About page, it is a free web-based job board that provides access to thousands of job opportunities across various federal agencies and organizations. The website serves as the official source for federal job listings and employment opportunity information, attracting over 17 million job seekers to date.

Unlike other platforms, encourages the reuse of its data and has developed an API to facilitate this. The API aims to provide public jobs to commercial job boards, mobile apps, and social media platforms, offering a lightweight data definition compared to the website.

Exploring the User-Friendly Website

Before we dive into the API, let’s first explore the website as a typical user. The homepage, located at ProgramMatek, offers customization options for job searches by keywords and location.

For this example, let’s search for job listings in the location “Idaho.”

Search Results Page

When we search for “Idaho,” the URL shows the following structure: /Search?Keyword=&Location=Idaho&search=Search&AutoCompleteSelected=false. The search results page displays various job listings, along with a left sidebar that provides filtering features.

See also  API Gateway vs. API Proxy: Decoding the Differences

Job Detail Page

Each job listing has a corresponding detail page. As an example, let’s take a look at the details for the job titled “VMO (Public Health) (Supervisory Public Health Veterinarian).” The URL for this job is /GetJob/ViewDetails/382487500. This particular position is not exclusive to Idaho and has openings in multiple locations.

While both the API and website display data such as job title, open period, pay scale, and salary range, the API’s REST-based version lacks some fields, including security clearance and detailed job descriptions. Additionally, the website offers features for logged-in users that the API does not provide.

The Developer-Friendly API

Now, let’s examine how the website’s content is made accessible through its API. The API documentation can be found at ProgramMatek.

The essential information can be found under the “API Query Parameters” tab. To demonstrate, let’s use the following sample URL: If we visit this URL in our browser, we’ll receive a response displaying job data that matches the given criteria.

JSON data is used for the API response, which can be easily understood by humans and machines. Python’s standard library functions can parse the JSON data into usable data structures such as lists and dictionaries.

Understanding the Query String

The base URL for the API is To retrieve specific results, we can add parameters using key-value pairs. For example, title=director will return job listings with “director” in their titles. The question mark separates the base URL from the query string, which contains the parameters.

Multiple parameters can be combined using an ampersand as a delimiter. For instance, to find director positions in Nevada, we would use the parameter combination title=director&CountrySubdivision=Nevada. The REST API documentation provides a complete list of possible parameters.

See also  Simplify Access to Your Data Warehouse with the Amazon Redshift Data API

It’s important to note that the API does have some limitations, such as not supporting queries with multiple values per field or logical combinations. Additionally, the API has a maximum limit on the number of results returned, which requires iterative requests to gather all available data.

Exploring with Python

Let’s explore the API using Python code to demonstrate how to retrieve job listings. We’ll use the Python library requests for making API requests.

To download the first 25 job openings in California, you can run the following code:

import requests

resp = requests.get("")

data = resp.json()

print("Total jobs:", data['TotalJobs'])

jobs = data['JobData']

print("First job title:", jobs[0]['JobTitle'])

This code retrieves the data and prints the total number of jobs along with the title of the first job in California.

With Python, we can easily expand our scope and collect data for multiple states. Here’s an example that retrieves job data for California, Texas, Nevada, Oregon, Maine, and Iowa:

import requests

baseurl = ''
states = ['California', 'Texas', 'Nevada', 'Oregon', 'Maine', 'Iowa']

for state in states:
    resp = requests.get(baseurl + state)
    data = resp.json()
    print("For state", state)
    print("Total jobs:", data['TotalJobs'])
    jobs = data['JobData']
    print("First job title:", jobs[0]['JobTitle'])

This code retrieves job data for each state in the states list, displaying the total number of jobs and the title of the first job for each state.

Using Python, we can easily expand our data gathering to include all 50 states or even other countries and territories.


The API offers a developer-friendly means of accessing job data from their platform. By understanding the query parameters and utilizing Python, we can gather job listings efficiently and explore various search criteria. Whether you’re building a job board, mobile app, or researching employment opportunities, the API provides a valuable resource for accessing federal job data.

See also  Explore the Google Scholar API with ProgramMatek

To learn more about ProgramMatek, visit ProgramMatek.