# Government Jobs API: USAJOBS (`yourevenings/government-jobs-api`) Actor

Open US federal government jobs from the official USAJOBS Search API: search by keyword, location, agency, occupation, grade, salary, schedule and hiring path. Clean rows with pay, grades, closing dates and apply links. Monitor mode returns only new jobs.

- **URL**: https://apify.com/yourevenings/government-jobs-api.md
- **Developed by:** [Your Evenings](https://apify.com/yourevenings) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 job returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Government Jobs API: USAJOBS

Get open US federal government jobs as clean, flat rows from the official **USAJOBS Search API**. Search by keyword, location and radius, agency, occupational series, GS grade, salary, work schedule, appointment type, hiring path and remote or telework. Every row has the pay range (plus a yearly figure for every row with a standard pay interval: yearly, hourly, daily, weekly, two-weekly or monthly), grades, closing date, hiring paths and the official job and apply links. Turn on **monitor mode** and schedule it so each run returns only jobs it hasn't returned before.

Use it as a **USAJOBS search** you can save and schedule: find **federal jobs** and other US **government jobs** by series, grade or agency, or list **remote federal jobs** and telework-eligible jobs, and export them as CSV, JSON or Excel.

> Not an official USAJOBS or OPM product. This Actor is not operated, sponsored, approved or endorsed by the US Office of Personnel Management (OPM) or any federal agency. Data comes from the USAJOBS Search API; always check the official announcement on usajobs.gov before you apply, and apply only through the official instructions in the announcement.

### Why this one

- **Official source.** Rows come straight from data.usajobs.gov, the API USAJOBS publishes for developers. No page scraping, no login, no API key needed on your side.
- **Filters that work before you pay.** Salary (converted to a yearly figure), telework and closing-window filters run in code before a row is delivered. Jobs your filters drop are never charged.
- **Readable codes.** Schedule, appointment, service and travel codes are turned into words (Full-time, Permanent, Competitive, Occasional travel).
- **Privacy by default.** Agency contact emails and phone numbers are dropped, and emails and phone numbers inside announcement text are masked, unless you turn them on.
- **Monitor mode.** Remembers what it has returned and gives you only new jobs on later runs, with a small alert fee only on runs that find something.
- **Free status rows** tell you when nothing matched, when a search hit the USAJOBS 10,000-row limit, or when the source failed.

### Quick start

1. Enter one or more **Keywords** (for example `data scientist`), or leave them empty and use other filters.
2. Optionally add **Locations**, **Agency codes**, **Occupational series**, grades or salary.
3. Run. Results appear in the **Jobs** view; download as JSON, CSV or Excel, or read them by API.

Or just press **Start**: the form comes prefilled with this input, which returns data scientist jobs posted in the last 7 days (up to 50):

```json
{
  "keywords": ["data scientist"]
}
```

In our test run on 26 October 2026 it returned 32 jobs, which costs about $0.06 (see Pricing).

A narrower example, for jobs near Washington, DC paying at least $100,000 a year:

```json
{
  "keywords": ["data scientist"],
  "locations": ["Washington, District of Columbia"],
  "radiusMiles": 25,
  "postedWithinDays": 14,
  "minSalaryUsd": 100000,
  "maxResults": 50
}
```

### Data source

| What | Where it comes from |
| --- | --- |
| Open job announcements | USAJOBS Search API, `https://data.usajobs.gov/api/Search` (public jobs, `WhoMayApply=Public`) |
| Code names (schedule, appointment, service, travel) | USAJOBS code lists, `https://data.usajobs.gov/api/codelist/*` |

USAJOBS describes job-announcement data from its API as public data under an open licence that may be reused, including commercially. Rows carry the official job URL and the time they were retrieved.

### Who it's for

- **Job boards and career sites** that want US federal jobs next to other listings.
- **Career advisers, veteran and military-spouse programmes and university careers services** tracking jobs on specific hiring paths.
- **Labour-market researchers and analysts** looking at which agencies hire for which occupational series, at what grades and pay.

### Use cases

1. **A daily feed of new federal jobs** in your field or area: turn on monitor mode, schedule it daily and send new jobs to a sheet, Slack or email through Apify integrations.
2. **Federal listings on a job board**: pull jobs by occupational series or keyword, with pay, grades, closing dates and the official apply links.
3. **Hiring-path tracking**: jobs open to veterans, military spouses, students or recent graduates, filtered by location or agency.

### Output sample

Five of the 32 rows from the prefilled input (run on 26 October 2026):

| Title | Department | Agency | Location | Grade | Pay (a year) | Closes |
|---|---|---|---|---|---|---|
| DATA SCIENTIST | Department of the Navy | – | Washington Navy Yard, District of Columbia | NH-4 | $143,913 to $197,200 | 2026-10-28 |
| Data Scientist (Data Management) | Department of Homeland Security | Homeland Security Investigations (HSI) | Fairfax, Virginia | GS-13 | $121,785 to $158,322 | 2026-11-09 |
| Health Scientist | Department of Health and Human Services | Office of Policy, Performance, and Evaluation, Performance and Evaluation Office (PEO) | Atlanta, Georgia | GS-14 | $133,007 to $172,915 | 2026-11-02 |
| Physical Scientist (Environmental) | Department of Energy | – | Portland, Oregon | GS-11 to 12 | $80,465 to $125,378 | 2026-11-01 |
| COMPUTER SCIENTIST | Department of the Air Force | TCJ6-99 | Scott AFB, Illinois | NH-3 | $91,779 to $141,880 | 2026-11-09 |

One job row as JSON, from a run on 30 October 2026 (build 0.1.5). Some fields are left out to keep it short; the full list is under Output.

```json
{
  "rowType": "job",
  "jobId": "890056900",
  "announcementNumber": "DFAS-DHA-ML-13087214-27",
  "title": "IT SPECIALIST (APPSW)",
  "url": "https://www.usajobs.gov:443/job/890056900",
  "organization": "Defense Finance and Accounting Service",
  "department": "Department of Defense",
  "jobCategories": [
    {
      "code": "2210",
      "name": "Information Technology Management"
    }
  ],
  "payPlan": "GS",
  "lowGrade": "12",
  "highGrade": "12",
  "salaryMin": 90341,
  "salaryMax": 121502,
  "salaryInterval": "Per Year",
  "salaryMinAnnualUsd": 90341,
  "salaryMaxAnnualUsd": 121502,
  "locationDisplay": "Multiple Locations",
  "schedules": [
    "Full-time"
  ],
  "offeringTypes": [
    "Permanent"
  ],
  "hiringPathsDisplay": [
    "Open to the public"
  ],
  "totalOpenings": "5",
  "remote": false,
  "teleworkEligible": true,
  "publishedAt": "2026-10-30T00:00:00.0000",
  "closesAt": "2026-11-13T23:59:59.9970"
}
```

### Input examples

Paste any of these into the **JSON** view of the Input tab. Each one is the input of a ready-made example task.

#### Federal IT jobs (series 2210), telework-eligible or remote

```json
{
  "jobCategoryCodes": ["2210"],
  "teleworkOnly": true,
  "postedWithinDays": 14,
  "sortBy": "newest",
  "maxResults": 100
}
```

#### Federal student internships

```json
{
  "hiringPaths": ["student"],
  "postedWithinDays": 30,
  "sortBy": "newest",
  "maxResults": 100
}
```

#### Nurse jobs in Texas

```json
{
  "keywords": ["nurse"],
  "locations": ["Texas"],
  "postedWithinDays": 14,
  "sortBy": "newest",
  "maxResults": 100
}
```

### Input

| Field | What it does |
| --- | --- |
| Keywords | Each keyword is a separate search; results are merged without duplicates. |
| Job title contains | Words in the job title only. |
| Locations, Radius (miles) | City, state or country as USAJOBS writes them, e.g. `Denver, Colorado`. Radius applies around each location. |
| Remote work | Include all, remote only, or exclude remote. |
| Telework-eligible or remote only | Keeps jobs marked telework-eligible or remote. |
| Agency codes | USAJOBS agency or sub-agency codes, e.g. `HE38` (NIH), `AF` (Air Force). |
| Occupational series | 4-digit OPM series, e.g. `2210` (IT), `0343` (program analysis), `1102` (contracting). |
| Lowest / highest GS grade | 1 to 15. |
| Minimum salary (USD a year) | Top of the pay range must be at least this. Hourly pay uses 2,087 hours a year. |
| Work schedule, Appointment type, Hiring paths | Full-time, permanent, open to the public, veterans, students, and so on. |
| Posted within (days) | 1 to 60 (default 7). 0 means any date. |
| Closing within (days) | Only jobs closing within N days. Closed jobs are always left out. |
| Sort by | Newest, closing soonest, highest salary or relevance. |
| Max jobs | Stop after this many rows (default 50; 0 means no limit). |
| Include full announcement text | Adds duties, education, requirements, how to apply, required documents, benefits. |
| Include agency contact email and phone | Off by default. |
| Monitor mode, first-run baseline, state store | See below. |

### Output

One row per job. Example (shortened):

```json
{
  "rowType": "job",
  "jobId": "890110100",
  "announcementNumber": "ST-13096210-27-DKC",
  "title": "DATA SCIENTIST",
  "url": "https://www.usajobs.gov:443/job/890110100",
  "organization": "Naval Sea Systems Command",
  "department": "Department of the Navy",
  "organizationCodes": "DD/NV24",
  "jobCategories": [{ "code": "1560", "name": "Data Science Series" }],
  "payPlan": "NH",
  "salaryMin": 143913,
  "salaryMax": 197200,
  "salaryInterval": "Per Year",
  "salaryMaxAnnualUsd": 197200,
  "locationDisplay": "Washington Navy Yard, District of Columbia",
  "schedules": ["Full-time"],
  "offeringTypes": ["Permanent"],
  "serviceType": "Competitive",
  "hiringPathsDisplay": ["Veterans", "Military spouses", "Individuals with disabilities"],
  "teleworkEligible": true,
  "securityClearance": "Secret",
  "publishedAt": "2026-10-26T00:00:00.0000",
  "closesAt": "2026-10-28T23:59:59.9970",
  "retrievedAt": "2026-10-26T09:22:42.600Z"
}
```

Status rows (`rowType: "status"`) are free and explain empty or partial results: `no_matches`, `scan_limit`, `source_error`, `budget_reached`. A **SUMMARY** record in the run's key-value store lists the filters used, how many jobs matched each search, rows returned, rows filtered out and request counts.

### Monitor mode

Turn on **Monitor mode** and schedule the Actor (for example daily). The first run returns the jobs open now (or, with *Return current jobs on the first monitor run* off, saves them silently as a baseline). Later runs return only jobs not returned before. Use a different **Monitor state store** name for each saved search. A run with no new jobs pays only Apify's start event.

### Pricing

Pay per event. You pay only for what is delivered. Prices below are base prices; higher Apify plans pay less (Silver −10%, Gold −20%). Prices on the Actor's Pricing tab are authoritative.

| Event | Price |
| --- | --- |
| Job returned | $0.002 per job |
| Monitor run with new jobs | $0.01 per run, only on monitor runs that return at least one new job |
| Actor start | $0.00005 per run (Apify's standard start event) |

Status rows, the SUMMARY record, jobs removed by your filters and jobs already reported in monitor mode are free. If a run reaches your maximum charge it stops cleanly with a free `budget_reached` row. Apify platform usage is included in these prices.

### Use from code or AI agents

Call it with the Apify API, the Apify client for JavaScript or Python, or through Apify's MCP server for AI agents. The input is plain JSON (see above) and every field is described in the input schema.

### FAQ

**Do I need a USAJOBS API key?** No. The Actor uses its own access to the official API.

**Why do I see fewer jobs than on usajobs.gov?** This Actor returns jobs open to the public. Announcements limited to current federal employees or other status candidates need extra authorisation from USAJOBS and are not returned. Your exact filters (salary, telework, closing window) can also remove jobs.

**Why is a search limited to 10,000 jobs?** That is the USAJOBS limit per query. Narrow by location, agency, series or posted-within days; a free `scan_limit` row tells you when it applies.

**Are contact names removed?** Contact email and phone fields are removed and emails and phone numbers in text are masked by default. Announcement text written by agencies can still mention a person's name; full announcement text is off by default.

**Can I apply through this Actor?** No. Apply on usajobs.gov using the official instructions in each announcement.

**How do I find remote federal jobs?** Set **Remote work** to remote only (`"remote": "remoteOnly"`) for jobs USAJOBS marks as remote, or turn on `teleworkOnly` for jobs marked telework-eligible or remote. Each row has `remote` and `teleworkEligible` flags.

**Can I save a USAJOBS search and get only new jobs?** Save the input as a task, turn on monitor mode and schedule it. Each run returns only jobs not returned before, and Apify's integrations can send the results to Slack, a webhook, Make, Zapier or n8n.

### Feedback

Found a problem or want a field added? Open an issue on the Actor's Issues tab.

# Changelog

This Actor's version history is a separate document: https://apify.com/yourevenings/government-jobs-api/changelog.md

# Actor input Schema

## `keywords` (type: `array`):

Words to search for in job announcements, e.g. "data scientist" or "nurse". Each keyword is a separate search and results are merged without duplicates. Leave empty to list all open jobs that match the other filters.

## `positionTitle` (type: `string`):

Match words in the job title only, e.g. "Program Analyst".

## `locations` (type: `array`):

City, state or country names as USAJOBS writes them, e.g. "Denver, Colorado", "Texas" or "Germany". Several locations are combined with OR.

## `radiusMiles` (type: `integer`):

Search this many miles around each location. Only used with Locations.

## `remote` (type: `string`):

Filter on the announcement’s remote-job flag.

## `teleworkOnly` (type: `boolean`):

Keep only jobs marked telework-eligible or remote.

## `organizationCodes` (type: `array`):

USAJOBS agency or sub-agency codes, e.g. "HE" (Health and Human Services), "AF" (Air Force) or "HE38" (NIH). Several codes are combined with OR. Codes are listed at https://data.usajobs.gov/api/codelist/agencysubelements.

## `jobCategoryCodes` (type: `array`):

4-digit OPM occupational series codes, e.g. "2210" (IT management), "0343" (management and program analysis), "1102" (contracting), "0610" (nurse).

## `payGradeLow` (type: `integer`):

Lowest General Schedule (GS) grade, 1 to 15.

## `payGradeHigh` (type: `integer`):

Highest General Schedule (GS) grade, 1 to 15.

## `minSalaryUsd` (type: `integer`):

Keep jobs whose top of the pay range is at least this much a year. Hourly, daily, weekly, two-weekly and monthly pay is converted to a yearly figure (2,087 hours a year, the federal standard). Jobs without a convertible pay range are left out when this is set.

## `scheduleTypes` (type: `array`):

Full-time, part-time, shift work, intermittent, job sharing or multiple schedules.

## `appointmentTypes` (type: `array`):

Permanent, temporary, term, seasonal, internships and so on.

## `hiringPaths` (type: `array`):

Who the job is open to, e.g. public (US citizens), vet (veterans), student, graduates, mspouse (military spouses), fed-competitive (current federal employees).

## `postedWithinDays` (type: `integer`):

Only jobs posted in the last N days (1 to 60). 0 means any date.

## `closingWithinDays` (type: `integer`):

Only jobs whose application window closes within N days. 0 means no limit. Jobs already closed are always left out.

## `sortBy` (type: `string`):

Order in which USAJOBS returns jobs.

## `maxResults` (type: `integer`):

Stop after this many job rows. 0 means no limit (USAJOBS returns at most 10,000 jobs per search).

## `includeFullDescription` (type: `boolean`):

Add duties, education, requirements, evaluation, how to apply, required documents, benefits and other information. Makes rows much larger.

## `includeContactDetails` (type: `boolean`):

Off by default: agency contact emails and phone numbers are dropped and masked in text. Turn on only if you need them for a lawful purpose, such as asking about a specific job.

## `monitorMode` (type: `boolean`):

Remember jobs already returned and return only new ones on later runs. Schedule the Actor daily to get a feed of new federal jobs. A small alert fee is charged only on runs that return new jobs.

## `emitBaselineOnFirstRun` (type: `boolean`):

On the first monitor run, return the jobs open now. Turn off to save them silently as a baseline (nothing charged per job) and get only new jobs from the next run.

## `stateStoreName` (type: `string`):

Named key-value store that remembers jobs already returned. Use a different name for each saved search.

## `requestTimeoutSecs` (type: `integer`):

Timeout for each USAJOBS request.

## Actor input object example

```json
{
  "keywords": [
    "data scientist"
  ],
  "remote": "any",
  "teleworkOnly": false,
  "postedWithinDays": 7,
  "sortBy": "newest",
  "maxResults": 50,
  "includeFullDescription": false,
  "includeContactDetails": false,
  "monitorMode": false,
  "emitBaselineOnFirstRun": true,
  "stateStoreName": "government-jobs-api-state",
  "requestTimeoutSecs": 60
}
```

# Actor output Schema

## `overview` (type: `string`):

Jobs view of the dataset.

## `details` (type: `string`):

Job details view of the dataset.

## `status` (type: `string`):

Status rows (free) view of the dataset.

## `summary` (type: `string`):

SUMMARY record: filters used, matches per search, rows returned, request counts and timings.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "data scientist"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("yourevenings/government-jobs-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "keywords": ["data scientist"] }

# Run the Actor and wait for it to finish
run = client.actor("yourevenings/government-jobs-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "data scientist"
  ]
}' |
apify call yourevenings/government-jobs-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yourevenings/government-jobs-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/156dng7yrGtYWEitt/builds/ekfpP7T7xnkpxqwBT/openapi.json
