Discover/USAJobs API
live

USAJobs APIusajobs.gov

Search federal job openings, retrieve full announcement details, access historic JOAs, and fetch reference code lists from USAJobs.gov via a single API.

Endpoint health
verified 7d ago
get_historic_joas
get_job_detail
search_jobs
get_codelist
4/4 passing latest checkself-healing
Endpoints
4
Updated
22d ago

What is the USAJobs API?

This API exposes 4 endpoints covering the full breadth of USAJobs.gov data: active job search, detailed announcement retrieval, historic Job Opportunity Announcements, and reference code lists. The search_jobs endpoint returns paginated results with up to 100 jobs per page, each including title, agency, salary, location, work schedule, and hiring paths. The get_job_detail endpoint delivers both structured metadata and the full announcement text — duties, qualifications, and how-to-apply instructions — for any given control number.

Try it
Page number of results (1-based)
Search keyword to match against job titles and descriptions (e.g., 'engineer', 'analyst', 'nurse')
Location name to filter results (e.g., 'Washington DC', 'New York', 'Texas')
Number of results per page (1 to 100)
api.parse.bot/scraper/345ec21c-b44c-4c8a-8957-ba2ed520e065/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X POST 'https://api.parse.bot/scraper/345ec21c-b44c-4c8a-8957-ba2ed520e065/search_jobs' \
  -H 'X-API-Key: $PARSE_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "page": "1",
  "keyword": "engineer",
  "location": "Washington DC",
  "results_per_page": "5"
}'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace usajobs-gov-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""USAJobs.gov API — search federal jobs, drill into details, browse reference codes."""
from parse_apis.usajobs.gov_api import USAJobs, CodeListName, JobNotFound

client = USAJobs()

# Search for engineering jobs in Washington DC
for job in client.jobs.search(keyword="engineer", location="Washington DC", limit=3):
    print(job.title, "|", job.agency, "|", job.salary_display)

# Drill into the first result's full details
job = client.jobs.search(keyword="nurse", limit=1).first()
if job:
    detail = job.details()
    print(detail.position_title, detail.hiring_agency_name, detail.minimum_salary)

# Fetch historic JOAs by control number
for joa in client.historicjoas.list(control_numbers="870839500", limit=3):
    print(joa.position_title, joa.hiring_agency_name, joa.position_close_date)

# Browse hiring path reference codes
for entry in client.codeentries.list(list_name=CodeListName.HIRING_PATHS, limit=5):
    print(entry.code, entry.value)

# Typed error handling — catch when a job isn't found
try:
    missing = client.job(document_id="000000000").details()
    print(missing.position_title)
except JobNotFound as exc:
    print(f"Job not found: {exc.control_number}")

print("exercised: jobs.search / job.details / historicjoas.list / codeentries.list")
All endpoints · 4 totalmissing one? ·

Search for current federal job openings on USAJobs.gov. Supports keyword and location filters with paginated results. Each result includes job title, agency, salary, location, work schedule, and hiring paths. Returns up to 100 results per page.

Input
ParamTypeDescription
pageintegerPage number of results (1-based)
keywordstringSearch keyword to match against job titles and descriptions (e.g., 'engineer', 'analyst', 'nurse')
locationstringLocation name to filter results (e.g., 'Washington DC', 'New York', 'Texas')
results_per_pageintegerNumber of results per page (1 to 100)
Response
{
  "type": "object",
  "fields": {
    "Jobs": "array of job listing objects with Title, Agency, Department, SalaryDisplay, DocumentID, Location, WorkSchedule, WorkType, HiringPath, JobGrade, and other fields",
    "Pager": "object containing pagination metadata including NumberOfPages, NumberOfItems, CurrentPageIndex, HasNextPage",
    "Total": "string representing total number of matching results"
  }
}

About the USAJobs API

Searching Active Federal Jobs

The search_jobs endpoint accepts a keyword string (e.g., engineer, nurse), a location string, a page index, and a results_per_page count between 1 and 100. Each result in the Jobs array includes Title, Agency, Department, SalaryDisplay, DocumentID, Location, WorkSchedule, WorkType, and Hiring path flags. The Pager object tells you NumberOfPages, NumberOfItems, CurrentPageIndex, and HasNextPage, so you can iterate through large result sets reliably. The Total field gives you the raw count of matching announcements.

Retrieving Full Announcement Details

Pass any DocumentID from search results as the control_number parameter to get_job_detail. The response splits into two top-level objects: metadata (structured fields like positionTitle, hiringAgencyName, salary range, locations array, work schedule, and hiring paths) and announcement_text (free-form sections including summary, duties, qualifications, education requirements, how to apply, and benefits). This split makes it straightforward to index structured fields separately from full-text content.

Historic Job Opportunity Announcements

The get_historic_joas endpoint supports bulk retrieval of past announcements. At least one filter is required: agency_code (e.g., CM for Commerce, AF for Air Force), a comma-separated list of control_numbers, or date range pairs using start_open_date/end_open_date and start_close_date/end_close_date (all in YYYY-MM-DD format). Results are paginated using a continuationToken from the paging object alongside totalCount and pageSize.

Reference Code Lists

The get_codelist endpoint accepts a list_name parameter with four accepted values: occupationalseries, agencysubelements, payplans, and hiringpath. Each response includes a CodeList array containing a ValidValue array of entries with Code, Value, and LastModified fields, plus a top-level DateGenerated ISO timestamp. These lists are useful for translating codes found in job metadata back to human-readable labels, or for building filter UIs.

Reliability & maintenanceVerified

The USAJobs API is a managed, monitored endpoint for usajobs.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when usajobs.gov changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official usajobs.gov API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
7d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate all open federal engineering roles by keyword and location for a job board targeting government contractors
  • Pull full announcement text from get_job_detail to build a full-text search index of federal job duties and qualifications
  • Track hiring trends across agencies using get_historic_joas filtered by agency_code and date ranges
  • Map occupational series codes from job metadata to descriptive titles using the occupationalseries code list
  • Monitor new postings for a specific agency by polling search_jobs with an agency keyword and comparing DocumentID values
  • Build a salary benchmarking dataset for federal positions by collecting SalaryDisplay across historic JOAs
  • Translate hiringpath codes in search results to plain-English labels using the hiringpath code list
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does USAJobs.gov have an official developer API?+
Yes. USAJobs offers an official API documented at https://developer.usajobs.gov. It requires registration for an API key and covers job search and announcement lookup. The Parse API provides access to the same data without requiring direct credential management against the USAJobs developer platform.
What does `get_historic_joas` return that `search_jobs` does not?+
search_jobs only surfaces currently active announcements. get_historic_joas returns closed and expired Job Opportunity Announcements, filterable by agency_code, open/close date ranges, or specific control_numbers. Its paging object uses a continuationToken rather than a page index, which is important to handle correctly when iterating large bulk retrievals.
Can I filter `search_jobs` results by occupational series or pay grade?+
The search_jobs endpoint currently accepts keyword, location, page, and results_per_page as filters. Filtering by occupational series code or pay grade is not directly exposed as a parameter. You can use get_codelist with list_name=occupationalseries to retrieve series codes and then apply post-retrieval filtering in your own code, or fork this API on Parse and revise it to add those filter parameters.
Does the API return application status or user profile data from USAJobs accounts?+
No. The API covers public job announcement data: listings, full announcement text, historic JOAs, and reference code lists. User account data, application status, saved searches, and resume information are not exposed. You can fork this API on Parse and revise it to add endpoints covering any additional public USAJobs data surfaces.
How fresh is the job listing data returned by `search_jobs`?+
Results reflect the current state of active announcements on USAJobs.gov. Because federal agencies post and close announcements on specific dates, a listing that was active when cached may be closed by the time you call get_job_detail. Always check the close date fields in metadata before acting on a result.
Page content last updated . Spec covers 4 endpoints from usajobs.gov.
Related APIs in JobsSee all →
civilservicejobs.service.gov.uk API
Search UK Civil Service job openings by keyword and location, and access detailed information about positions, requirements, salaries, and application deadlines across the Civil Service Jobs board.
caljobs.ca.gov API
Search and discover job listings from California's official CalJOBS database, with the ability to filter results by posting date and specific employers to find opportunities that match your needs. View detailed information about individual positions to learn more about roles that interest you.
amazon.jobs API
Search and browse Amazon job openings by keywords, location, and category, then view detailed information about specific positions. Filter results across multiple job categories and locations with easy pagination.
jobs.ams.at API
Search and browse job listings from Austria's AMS alle jobs platform with advanced filtering options. View detailed job information, explore featured categories including green jobs and apprenticeships, and retrieve autocomplete suggestions for job titles. Access real-time job data filtered by location, employment type, working hours, education level, and more.
careers.un.org API
Search and browse current job openings at the United Nations, filtering by job network, job family, and other criteria. Retrieve structured data on available positions across UN departments and duty stations worldwide.
jobz.pk API
Access real-time job listings from jobz.pk and filter by category, city, organization, newspaper, province, and sector to find positions that match your needs. Get detailed job information, browse government and overseas opportunities, and explore company profiles all in one place.
ethiojobs.net API
Search and explore job listings across Ethiopian companies with detailed job information, categories, locations, and industries. Discover company profiles, view their open positions, and find similar job opportunities tailored to your preferences.
jobroom.ams.or.at API
Search and explore job listings from Austria's public employment service, view detailed job information, and discover available positions with autocomplete suggestions. Register as a jobseeker abroad and access the official terms of use for the eJob-Room platform.