USAJOBS

App · Jobs & Hiring · 20 actions

Search every federal job opening on USAJOBS, the US government's official employment site: filter by keyword, title, location, agency, occupational series, pay plan, grade, salary, schedule, clearance and who may apply, read the full announcement, search the archive of 3.2 million past announcements and their text, and look up the codes federal hiring speaks in.

Actions

ActionWhat it does
Get historic announcement textRead the full text an archived announcement was posted with: its summary and duties, the conditions of employment, the qualifications and education required, the documents an applicant had to send, how to apply and what happened next, the benefits, and how candidates were evaluated.
List agenciesEvery federal hiring organization: the cabinet departments and independent agencies, and the sub-agencies inside them, each with the subelement code a job search filters on and the acronym it is known by.
List announcement closing typesHow an announcement stops taking applications: on a closing date, at a closing time, at an applicant cut-off once enough have applied, or open continuously.
List applicant eligibilitiesThe applicant eligibility categories an announcement can be limited to: United States citizens, current civil service employees, status candidates, CTAP, ICTAP and VEOA eligibles, student and internship programme eligibles, and agency employees only.
List countriesThe countries USAJOBS recognises, with the two-letter code each is referred to by.
List hiring pathsThe hiring paths: who an announcement is open to.
List locationsThe geographic locations USAJOBS posts jobs in: 48,000 cities, counties, military installations and overseas posts, each with its location code, county, state and country.
List mission-critical occupationsThe occupations the federal government has flagged as mission-critical and recruits for across every agency: cyber security, data science, economics, privacy, programme and project management, grants management, STEM and intelligence.
List occupational seriesThe occupational series: the four-digit codes that say what kind of work a federal job is, from 0101 (social science) to 2210 (IT management) to 9999.
List pay intervalsHow a salary is quoted: per year, per hour, per day, per month, bi-weekly, per school year, as a student stipend, on a fee basis, piece work, or without compensation.
List pay plansThe federal pay plans: GS for the General Schedule most white-collar jobs sit on, WG for wage-grade trades, ES for the Senior Executive Service, and several hundred more.
List required documentsThe standard documents an application can be asked for: a resume, transcripts, an SF-50, a DD-214, a VA letter, an SF-15, performance appraisals, licences and the rest.
List security clearancesThe security clearance levels a federal position can require, from none through Confidential, Secret and Top Secret to Sensitive Compartmented Information and the Department of Energy's Q and L authorizations.
List service typesThe three federal services a position can sit in: the competitive service, the excepted service, and the Senior Executive Service.
List states and provincesThe subdivisions of every country USAJOBS posts in: the fifty US states, the District of Columbia and the territories, plus the provinces and regions of everywhere else.
List travel requirementsHow much travel a position requires, as the bands USAJOBS publishes them in: none, occasional, 25% or less, 50% or less, 75% or less, or 76% and above.
List work schedulesThe position schedule types: full-time, part-time, shift work, intermittent, job sharing, or multiple schedules.
List work typesThe position offering types, which USAJOBS calls work types: permanent, temporary, term, detail, seasonal, summer, internship, telework and the rest.
Search historic announcementsSearch the archive of every job announcement USAJOBS has ever posted, closed ones included (3.2 million of them).
Search jobsSearch every federal job opening posted on USAJOBS right now.

Get historic announcement text

Read the full text an archived announcement was posted with: its summary and duties, the conditions of employment, the qualifications and education required, the documents an applicant had to send, how to apply and what happened next, the benefits, and how candidates were evaluated. Takes the same filters as the archive search: point it at one control number, or at a narrow slice; each record is large enough that a full page of 500 runs to about 10 MB.

Inputs

Hiring agencyagency_codetext
Only include announcements posted by this organization. Most are posted by a sub-agency; a few are posted by the department itself, which is why both are listed. To match a department and everything inside it, use the Department field instead.
Departmentdepartment_codetext
Only include announcements from this department, across every sub-agency inside it.
Occupational seriesseries_codetext
Only include announcements for this occupational series: the four-digit code that says what kind of work the job is.
Announcement numberannouncement_numbertext
Only include the announcement with this number, the one the hiring agency assigned and printed on the posting.
USAJOBS control numbercontrol_numbernumber
Only include the announcement with this USAJOBS control number. One at a time: the archive refuses a list. 'Search historic announcements' returns the number for every announcement it finds.From 1 to 9999999999.
Opened on or afteropened_on_or_afterdate
Only include announcements that opened on or after this date. Leave empty for no lower bound.
Opened on or beforeopened_on_or_beforedate
Only include announcements that opened on or before this date. Leave empty for no upper bound.
Closed on or afterclosed_on_or_afterdate
Only include announcements that closed on or after this date. Leave empty for no lower bound.
Closed on or beforeclosed_on_or_beforedate
Only include announcements that closed on or before this date. Leave empty for no upper bound.
Continue fromcontinuation_tokentext
The 'continuation_token' a previous run reported, to read the next 500 announcements. Keep every other filter the same as that run: the token remembers the position, not the search.

Outputs

announcementslist
The archived announcements' full text
continuation_tokentext
Pass back as 'continuation_token', with the same filters, to read the next page
countnumber
Announcements on this page
has_moretrue/false
Whether a page follows
remaining_countnumber
How many announcements are left from this page on, this page included (not the number that matched)
Example output
{
  "announcements": [
    {
      "announcementNumber": "DE-11600993-24-JDA",
      "benefitsURL": "http://www.secnav.navy.mil/donhr/Benefits/Pages/Default.aspx",
      "hiringAgencyCode": "NV25",
      "hiringDepartmentCode": "NV",
      "howToApply": "Interested applicants must submit resumes to the address below.",
      "howToApplyNextSteps": "Qualified applicants will be referred to the hiring manager.",
      "jobcategories": [
        {
          "series": "2210"
        }
      ],
      "majorDutiesList": "You will develop and write computer programs to search, retrieve, update and save data.",
      "positionCloseDate": "2024-02-19",
      "positionOpenDate": "2024-01-19",
      "requirementsConditionsOfEmployment": "Must be a US Citizen.",
      "requirementsQualifications": "Your resume must demonstrate at least one year of specialized experience at or equivalent to the GS-11 grade level.",
      "summary": "This is a public notice flyer to notify interested applicants of anticipated vacancies.",
      "usajobsControlNumber": 670685500
    }
  ],
  "continuation_token": "E32I1d9PVdPhzYS9H3p8sw==",
  "count": 1,
  "has_more": true,
  "remaining_count": 1352
}

List agencies

Every federal hiring organization: the cabinet departments and independent agencies, and the sub-agencies inside them, each with the subelement code a job search filters on and the acronym it is known by. A sub-agency names its department in 'ParentCode' - the Naval Facilities Engineering Systems Command (NV25) sits under the Department of the Navy (NV), which in turn sits under the Department of Defense (DD).

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Agencies, each with its acronym and the department it sits under
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "AgencySubElement",
  "next_offset": null,
  "offset": 0,
  "total_count": 813,
  "values": [
    {
      "Acronym": "NAVFAC",
      "Code": "NV25",
      "IsDisabled": "No",
      "LastModified": "2020-08-13T14:12:03.19",
      "ParentCode": "NV",
      "Value": "Naval Facilities Engineering Systems Command"
    }
  ]
}

List announcement closing types

How an announcement stops taking applications: on a closing date, at a closing time, at an applicant cut-off once enough have applied, or open continuously. This is what an archived announcement's closing type code means.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
The ways an announcement can close
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "AnnouncementClosingType",
  "next_offset": null,
  "offset": 0,
  "total_count": 4,
  "values": [
    {
      "Code": "01",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "Closing Date"
    }
  ]
}

List applicant eligibilities

The applicant eligibility categories an announcement can be limited to: United States citizens, current civil service employees, status candidates, CTAP, ICTAP and VEOA eligibles, student and internship programme eligibles, and agency employees only.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Applicant eligibility categories
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "WhoMayApply",
  "next_offset": null,
  "offset": 0,
  "total_count": 18,
  "values": [
    {
      "Code": "15514",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "United States Citizens"
    }
  ]
}

List countries

The countries USAJOBS recognises, with the two-letter code each is referred to by. Federal jobs are posted in most of them, and a job's location states its country as one of these codes.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Countries, each with its USAJOBS country code
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "CountryCode",
  "next_offset": null,
  "offset": 0,
  "total_count": 258,
  "values": [
    {
      "Code": "US",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "United States"
    }
  ]
}

List hiring paths

The hiring paths: who an announcement is open to. 'The public' is the one anyone may apply under; the rest are eligibilities such as veterans, military spouses, students, recent graduates, individuals with disabilities, and current federal employees in the competitive or excepted service.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Hiring paths an announcement can be open under
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "HiringPath",
  "next_offset": null,
  "offset": 0,
  "total_count": 19,
  "values": [
    {
      "Code": "PUBLIC",
      "IsDisabled": "No",
      "LastModified": "2016-02-24T15:38:19.443",
      "Value": "The public"
    }
  ]
}

List locations

The geographic locations USAJOBS posts jobs in: 48,000 cities, counties, military installations and overseas posts, each with its location code, county, state and country. Use the search box: this is how to find the name USAJOBS knows a place by before filtering a job search on it.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Locations, each with its city, county, state and country
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "GeoLocCode",
  "next_offset": null,
  "offset": 0,
  "total_count": 48315,
  "values": [
    {
      "City": "Anchorage",
      "Code": "020130020",
      "Country": "US",
      "CountrySubdivision": "AK ",
      "IsDisabled": "No",
      "LastModified": "2021-09-17T14:41:22.94",
      "USCounty": "Anchorage County"
    }
  ]
}

List mission-critical occupations

The occupations the federal government has flagged as mission-critical and recruits for across every agency: cyber security, data science, economics, privacy, programme and project management, grants management, STEM and intelligence.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Government-wide mission-critical occupations
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "MissionCriticalCode",
  "next_offset": null,
  "offset": 0,
  "total_count": 10,
  "values": [
    {
      "Code": "07",
      "IsDisabled": "No",
      "LastModified": "2019-04-30T14:15:18.393",
      "Value": "STEM"
    }
  ]
}

List occupational series

The occupational series: the four-digit codes that say what kind of work a federal job is, from 0101 (social science) to 2210 (IT management) to 9999. These are the codes the job search and the archive filter on, and the ones an announcement's job categories are stated in.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Occupational series, with the job family each belongs to
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "OccupationalSeries",
  "next_offset": null,
  "offset": 0,
  "total_count": 822,
  "values": [
    {
      "Code": "2210",
      "IsDisabled": "No",
      "JobFamily": "2200",
      "LastModified": "2016-03-04T10:57:35.75",
      "Value": "Information Technology Management"
    }
  ]
}

List pay intervals

How a salary is quoted: per year, per hour, per day, per month, bi-weekly, per school year, as a student stipend, on a fee basis, piece work, or without compensation. This is the rate interval code on a job's pay range, and reading it is what stops an hourly rate being compared with an annual one.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
The intervals a salary can be quoted over
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "RemunerationRateIntervalCode",
  "next_offset": null,
  "offset": 0,
  "total_count": 10,
  "values": [
    {
      "Code": "PA",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "Per Year"
    }
  ]
}

List pay plans

The federal pay plans: GS for the General Schedule most white-collar jobs sit on, WG for wage-grade trades, ES for the Senior Executive Service, and several hundred more. This is the code the job search calls a job grade code, and the one an archived announcement states as its pay scale.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Pay plans, each with the kind of position it covers
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "PayPlans",
  "next_offset": null,
  "offset": 0,
  "total_count": 391,
  "values": [
    {
      "Code": "GS",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "General Schedule"
    }
  ]
}

List required documents

The standard documents an application can be asked for: a resume, transcripts, an SF-50, a DD-214, a VA letter, an SF-15, performance appraisals, licences and the rest. These are the documents an announcement's required-documents list names.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Standard documents an application can require
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "RequiredStandardDocuments",
  "next_offset": null,
  "offset": 0,
  "total_count": 34,
  "values": [
    {
      "Code": "16751",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "Resume"
    }
  ]
}

List security clearances

The security clearance levels a federal position can require, from none through Confidential, Secret and Top Secret to Sensitive Compartmented Information and the Department of Energy's Q and L authorizations.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Security clearance levels a job can require
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "SecurityClearance",
  "next_offset": null,
  "offset": 0,
  "total_count": 10,
  "values": [
    {
      "Code": "2",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "Secret"
    }
  ]
}

List service types

The three federal services a position can sit in: the competitive service, the excepted service, and the Senior Executive Service. This decides which hiring rules apply and which candidates an agency may consider.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Federal service types a position can sit in
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "ServiceType",
  "next_offset": null,
  "offset": 0,
  "total_count": 3,
  "values": [
    {
      "Code": "01",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "Competitive"
    }
  ]
}

List states and provinces

The subdivisions of every country USAJOBS posts in: the fifty US states, the District of Columbia and the territories, plus the provinces and regions of everywhere else. Each names the country it belongs to, so a job's state can be resolved to a country without guessing.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Country subdivisions, each with the country it belongs to
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "CountrySubdivisionCode",
  "next_offset": null,
  "offset": 0,
  "total_count": 2309,
  "values": [
    {
      "Code": "AK",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "ParentCode": "US",
      "Value": "Alaska"
    }
  ]
}

List travel requirements

How much travel a position requires, as the bands USAJOBS publishes them in: none, occasional, 25% or less, 50% or less, 75% or less, or 76% and above.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Travel requirement bands a job can carry
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "TravelPercentage",
  "next_offset": null,
  "offset": 0,
  "total_count": 7,
  "values": [
    {
      "Code": "1",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "Occasional travel"
    }
  ]
}

List work schedules

The position schedule types: full-time, part-time, shift work, intermittent, job sharing, or multiple schedules. This is the code a job's schedule is reported under, and the one the schedule filter on a job search takes.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Work schedules a job can be posted under
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "PositionScheduleType",
  "next_offset": null,
  "offset": 0,
  "total_count": 6,
  "values": [
    {
      "Code": "1",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "Full-time"
    }
  ]
}

List work types

The position offering types, which USAJOBS calls work types: permanent, temporary, term, detail, seasonal, summer, internship, telework and the rest. This is what says whether a job is a career or a season.

Inputs

Searchsearchtext
Only return values whose code, name or any other detail contains this text. Leave empty for the whole list.
Include retired valuesinclude_retiredtrue/false
Turn on to include codes USAJOBS has withdrawn. An archived announcement can still carry one; a new search will never match one.Default: false.
Number of valueslimitnumber
How many values to return, 1-1000. Defaults to 100.From 1 to 1000. Default: 100.
Skipoffsetnumber
How many values to skip before the first one returned; use the 'next_offset' from a previous run to read the next page. Defaults to 0.From 0 to 100000. Default: 0.

Outputs

countnumber
Values on this page
date_generatedtext
When USAJOBS built this copy of the list
has_moretrue/false
Whether a page follows
limitnumber
Page size used
list_idtext
USAJOBS' own name for this code list
next_offsetnumber
The 'offset' that reads the next page
offsetnumber
Values skipped
total_countnumber
Values matching the search, across every page
valueslist
Position offering types a job can be posted as
Example output
{
  "count": 1,
  "date_generated": "2026-08-27T20:06:54.602126Z",
  "has_more": false,
  "limit": 100,
  "list_id": "PositionOfferingType",
  "next_offset": null,
  "offset": 0,
  "total_count": 15,
  "values": [
    {
      "Code": "15317",
      "IsDisabled": "No",
      "LastModified": "2011-07-07T13:49:34.73",
      "Value": "Permanent"
    }
  ]
}

Search historic announcements

Search the archive of every job announcement USAJOBS has ever posted, closed ones included (3.2 million of them). Returns each announcement's title, agency and department, grade range and salary, appointment type and schedule, service type, clearance, travel and telework, who it was open to, its occupational series and locations, and the dates it opened and closed. Five hundred to a page; feed the 'continuation_token' back in, with the same filters, to read the next one.

Inputs

Hiring agencyagency_codetext
Only include announcements posted by this organization. Most are posted by a sub-agency; a few are posted by the department itself, which is why both are listed. To match a department and everything inside it, use the Department field instead.
Departmentdepartment_codetext
Only include announcements from this department, across every sub-agency inside it.
Occupational seriesseries_codetext
Only include announcements for this occupational series: the four-digit code that says what kind of work the job is.
Announcement numberannouncement_numbertext
Only include the announcement with this number, the one the hiring agency assigned and printed on the posting.
USAJOBS control numbercontrol_numbernumber
Only include the announcement with this USAJOBS control number. One at a time: the archive refuses a list. 'Search historic announcements' returns the number for every announcement it finds.From 1 to 9999999999.
Opened on or afteropened_on_or_afterdate
Only include announcements that opened on or after this date. Leave empty for no lower bound.
Opened on or beforeopened_on_or_beforedate
Only include announcements that opened on or before this date. Leave empty for no upper bound.
Closed on or afterclosed_on_or_afterdate
Only include announcements that closed on or after this date. Leave empty for no lower bound.
Closed on or beforeclosed_on_or_beforedate
Only include announcements that closed on or before this date. Leave empty for no upper bound.
Continue fromcontinuation_tokentext
The 'continuation_token' a previous run reported, to read the next 500 announcements. Keep every other filter the same as that run: the token remembers the position, not the search.

Outputs

announcementslist
Archived announcements, newest control number first
continuation_tokentext
Pass back as 'continuation_token', with the same filters, to read the next page
countnumber
Announcements on this page
has_moretrue/false
Whether a page follows
remaining_countnumber
How many announcements are left from this page on, this page included (not the number that matched)
Example output
{
  "announcements": [
    {
      "announcementClosingTypeCode": "01",
      "announcementClosingTypeDescription": "Closing Date",
      "announcementNumber": "DE-11600993-24-JDA",
      "appointmentType": "Permanent",
      "hiringAgencyCode": "NV25",
      "hiringAgencyName": "Naval Facilities Engineering Systems Command",
      "hiringDepartmentCode": "NV",
      "hiringDepartmentName": "Department of the Navy",
      "hiringpaths": [
        {
          "hiringPath": "The public"
        }
      ],
      "jobcategories": [
        {
          "series": "2210"
        }
      ],
      "maximumGrade": "12",
      "maximumSalary": 114634.0,
      "minimumGrade": "12",
      "minimumSalary": 88183.0,
      "payScale": "GS",
      "positionCloseDate": "2024-02-19",
      "positionOpenDate": "2024-01-19",
      "positionOpeningStatus": "Job closed",
      "positionTitle": "IT SPECIALIST (SYSANALYSIS)",
      "positionlocations": [
        {
          "positionLocationCity": "Naval Facilities Engineering Command, Atlantic",
          "positionLocationCountry": "United States",
          "positionLocationState": "Virginia"
        }
      ],
      "promotionPotential": "None",
      "salaryType": "Per Year",
      "securityClearance": "Secret",
      "securityClearanceRequired": "Y",
      "serviceType": "Competitive",
      "supervisoryStatus": "N",
      "teleworkEligible": "N",
      "travelRequirement": "Occasional travel",
      "usajobsControlNumber": 670685500,
      "workSchedule": "Full-time"
    }
  ],
  "continuation_token": "E32I1d9PVdPhzYS9H3p8sw==",
  "count": 1,
  "has_more": true,
  "remaining_count": 1352
}

Search jobs

Search every federal job opening posted on USAJOBS right now. Filter by keyword, title, location and radius, agency, occupational series, pay plan, grade, salary, work type and schedule, security clearance, travel, who may apply, whether it is remote, and how recently it was posted. Returns each job with its announcement number, links to view and apply, locations and coordinates, pay range, opening and closing dates, and the full announcement text. With no filters at all this is the whole board.

Inputs

Keywordkeywordtext
Words to look for anywhere in the announcement: the title, the duties, the qualifications. Synonyms are matched too, so 'attorney' also finds 'lawyer'.
Job title containsposition_titletext
Only match jobs whose title contains this text. Narrower than Keyword, which searches the whole announcement.
Locationslocation_nameslist
Cities, states, countries or military installations to search in. Add several to search all of them. 'List locations' looks up the name USAJOBS knows a place by.
Radius (miles)radiusnumber
Also match jobs this many miles from the locations above. Leave empty to match only the locations themselves.From 1 to 6000.
Agenciesorganization_codeslist
Only match jobs at these agencies. Pick a whole department or one of its sub-agencies; choosing several matches any of them.
Occupational seriesseries_codeslist
Only match jobs in these occupational series: the four-digit codes that say what kind of work a job is.
Pay planspay_plan_codeslist
Only match jobs paid under these pay plans. GS is the General Schedule most white-collar federal jobs sit on.
Open tohiring_pathslist
Only match jobs open to these groups. 'The public' is the one anyone can apply for; the rest need the eligibility named.One or more of: public (The public), vet (Veterans), nguard (National Guard & Reserves), disability (Individuals with disabilities), native (Native Americans), mspouse (Military spouses), student (Students), graduates (Recent graduates), ses (Senior executives), peace (Peace Corps & AmeriCorps VISTA), and 7 more.
Work typeswork_typeslist
Only match jobs of these types: permanent, term, seasonal, internship and the rest. USAJOBS calls this 'work type'.One or more of: 15317 (Permanent), 15318 (Temporary), 15319 (Term), 15320 (Detail), 15321 (Temporary promotion), 15322 (Seasonal), 15323 (Summer), 15326 (Recent graduates), 15327 (Multiple), 15328 (Internships), and 4 more.
Work scheduleswork_scheduleslist
Only match jobs on these schedules, such as full-time.One or more of: 1 (Full-time), 2 (Part-time), 3 (Shift work), 4 (Intermittent), 5 (Job sharing), 6 (Multiple schedules).
Security clearancesecurity_clearanceslist
Only match jobs requiring these clearance levels. Choose 'Not required' for jobs that need none.One or more of: 0 (Not required), 1 (Confidential), 2 (Secret), 3 (Top Secret), 4 (Sensitive Compartmented Information), 5 (Q Access Authorization), 7 (L Access Authorization), 8 (Other).
Travel requiredtravel_percentageslist
Only match jobs with these travel requirements.One or more of: 0 (None), 1 (Occasional travel), 2 (25% or less), 5 (50% or less), 7 (75% or less), 8 (76% or greater).
Mission-critical occupationsmission_critical_tagslist
Only match jobs the government has flagged as mission-critical, such as STEM or cyber security.One or more of: Cyber Security, Data Scientist, Economist, Privacy, Program/Project Management (Program & project management), Grants Management, STEM, Intelligence.
Who may applywho_may_applytext
Which announcements to search. Leave empty for the public ones, which is what an ordinary API key can see; the other two need a key OPM has authorised for status jobs.One of: Public (Open to the public), Status (Open to federal employees and other status candidates), All (Both).
Minimum salaryminimum_salarynumber
Only match jobs paying at least this much a year, in dollars. USAJOBS rounds to its own salary bands, so $15,500 matches the $0-$24,999 band.From 0 to 1000000.
Maximum salarymaximum_salarynumber
Only match jobs paying at most this much a year, in dollars. Rounded to the same salary bands as the minimum.From 0 to 1000000.
Lowest gradepay_grade_lownumber
Only match jobs starting at this General Schedule grade or above, 1 to 15.From 1 to 15.
Highest gradepay_grade_highnumber
Only match jobs topping out at this General Schedule grade or below, 1 to 15.From 1 to 15.
Remote jobs onlyremote_onlytrue/false
Turn on for remote jobs only. Leave off to include both remote and on-site jobs.
Relocation paid onlyrelocation_offeredtrue/false
Turn on for jobs that reimburse relocation expenses. Leave off to include jobs that do not.
Posted within (days)posted_within_daysnumber
Only match jobs posted in the last this many days, 0-60. This is the filter a scheduled workflow uses to see only what is new.From 0 to 60.
How much detailfield_settext
'Full announcement' includes the duties, requirements, benefits and how to apply. 'Summary only' returns a fraction of that, which is quicker when the step only needs titles and links.One of: Full (Full announcement), Min (Summary only).
Sort bysort_fieldtext
What to order the results by. Leave empty for the search's own relevance ranking.One of: opendate (Date opened), closedate (Date closing), jobtitle (Job title), positiontitle (Position title), organizationname (Organization), agency, department, location, salary, salarymin (Minimum salary), honame (Hiring office).
Sort directionsort_directiontext
Which way to order the sort chosen above.One of: Asc (Ascending (lowest or earliest first)), desc (Descending (highest or latest first)).
Jobs per pageresults_per_pagenumber
How many jobs to return, 1-500. Defaults to 25.From 1 to 500. Default: 25.
Pagepagenumber
Which page of results to return, counting from 1. Use the 'next_page' a previous run reported. USAJOBS returns at most 10,000 jobs for one search, however it is paged.From 1 to 10000. Default: 1.

Outputs

countnumber
Jobs on this page
has_moretrue/false
Whether a page follows
jobslist
Job openings, each with its announcement under 'MatchedObjectDescriptor'
next_pagenumber
The 'page' that reads the next page
pagenumber
The page returned
page_countnumber
How many pages USAJOBS says the search has
refinersobject
How the matches break down by agency, grade, salary, work type, schedule and series
results_per_pagenumber
Page size used
total_countnumber
Jobs matching the search, across every page
Example output
{
  "count": 1,
  "has_more": true,
  "jobs": [
    {
      "MatchedObjectDescriptor": {
        "ApplicationCloseDate": "2026-12-01T00:00:00Z",
        "ApplyURI": [
          "https://www.usajobs.gov/GetJob/ViewDetails/21947200"
        ],
        "DepartmentName": "Department of the Navy",
        "JobCategory": [
          {
            "Code": "2210",
            "Name": "Information Technology Management"
          }
        ],
        "JobGrade": [
          {
            "Code": "GS"
          }
        ],
        "OrganizationName": "Space and Naval Warfare Systems Command",
        "PositionEndDate": "2026-12-01T00:00:00Z",
        "PositionID": "SW62210-05-1716110PB411413H",
        "PositionLocation": [
          {
            "CityName": "Point Loma Complex, San Diego, California",
            "CountryCode": "United States",
            "CountrySubDivisionCode": "California",
            "Latitude": 32.7042961,
            "LocationName": "Point Loma Complex, San Diego, California",
            "Longitude": -117.194382
          }
        ],
        "PositionLocationDisplay": "Point Loma Complex, San Diego, California",
        "PositionOfferingType": [
          {
            "Code": "15317",
            "Name": "Permanent"
          }
        ],
        "PositionRemuneration": [
          {
            "Description": "Per Year",
            "MaximumRange": "119746",
            "MinimumRange": "92108",
            "RateIntervalCode": "PA"
          }
        ],
        "PositionSchedule": [
          {
            "Code": "1",
            "Name": "Full Time"
          }
        ],
        "PositionStartDate": "2026-06-05T00:00:00Z",
        "PositionTitle": "IT SPECIALIST (INFOSEC/NETWORK)",
        "PositionURI": "https://www.usajobs.gov/GetJob/ViewDetails/21947200",
        "PublicationStartDate": "2026-06-05T00:00:00Z",
        "UserArea": {
          "Details": {
            "HighGrade": "13",
            "JobSummary": "Serve as an information security specialist.",
            "LowGrade": "12",
            "OrganizationCodes": "DD/NV/NV39",
            "SubAgencyName": "Naval Information Warfare Center Pacific",
            "WhoMayApply": {
              "Code": "15514",
              "Name": "United States Citizens"
            }
          },
          "IsRadialSearch": false
        }
      },
      "MatchedObjectId": "21947200",
      "RelevanceRank": 0.0
    }
  ],
  "next_page": 2,
  "page": 1,
  "page_count": 33,
  "refiners": {
    "GradeBucket": [
      {
        "RefinementCount": "46",
        "RefinementName": "12",
        "RefinementToken": "^12$",
        "RefinementValue": "12"
      }
    ],
    "Organization": [
      {
        "RefinementCount": "12",
        "RefinementName": "DD/NV/NV39",
        "RefinementToken": "^DD/NV/NV39$",
        "RefinementValue": "DD/NV/NV39"
      }
    ]
  },
  "results_per_page": 25,
  "total_count": 812
}

On this page