Lightweight wrapper for exploring api.usa.gov/jobs and data.usajobs.gov/api. Thanks to DigitalGov and GSA.
pip install usajobs
import usajobs
results = usajobs.search('manager')
len(results) # 1392
result = results[0] # first result
result.id # 'usajobs:445507500'
result.organization_name # 'National Park Service'
result.position_title # 'Project Manager (Interdisciplinary)'
result.start_date # '2016-08-23'
result.end_date # '2016-09-13'
result.url # 'https://www.usajobs.gov/GetJob/ViewDetails/445507500'
result.locations # ['Vancouver, WA']
result.minimum # 71012
result.maximum # 92316
result.rate_interval_code # 'PA'
The method search currently exposes api.usa.gov/jobs which allows for 'fuzzy' searching.
Return results from search terms using the api.usa.gov/jobs.
arguments: terms, start=0, step=100, as_dict=False
Results, by default, are a list of nametupled data accessible as follows:
results = usajobs.search('park ranger')
len(results) # 22
# To get a list of available keys:
results[0]._asdict().keys() # odict_keys(['id', 'organization_name', 'start_date', 'locations', 'position_title', 'url', 'minimum', 'end_date', 'maximum', 'rate_interval_code'])
# Use a key to get a value:
results[0].url # 'https://www.usajobs.gov/GetJob/ViewDetails/426475700'
To return the results as a list of dicts, use as_dict argument:
results = usajobs.search('park ranger', as_dict=True)
print(results[0])
{
'id': 'usajobs:426475700',
'position_title': 'Park Ranger',
'organization_name': 'Bureau of Land Management',
'rate_interval_code': 'PH',
'minimum': 15,
'maximum': 20,
'start_date': '2016-01-18',
'end_date': '2016-08-31',
'locations': ['Lake Havasu City, AZ', 'Butte, MT'],
'url': 'https://www.usajobs.gov/GetJob/ViewDetails/426475700'
}
PRs welcome, tests run with:
pip install pytest pytest-cov
python -m pytest tests --cov=usajobs/