# Government Jobs Scraper - GovernmentJobs.com Listings (`parseforge/governmentjobs-scraper`) Actor

Scrapes job postings from GovernmentJobs.com by keyword, location, or direct URL. Returns each listing as a flat row with optional detail-page extraction for descriptions and benefits.

- **URL**: https://apify.com/parseforge/governmentjobs-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Features:** Limited permissions
- **Stats:** 41 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.99 / 1,000 result items

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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### GovernmentJobs Scraper

**Scrape public sector jobs from GovernmentJobs.com by keyword, location, or direct URL, up to a million per run.** Each listing returns title, department, salary, closing date, and full description when detail extraction is on. No login or API key. Export to CSV, JSON, Excel, or XML.

GovernmentJobs.com is the largest board for city, county, state, and public agency openings in the U.S., but browsing it manually means clicking through pages and copying details one by one. This Actor reads the public search listings directly, applies your filters for job type, remote work, salary, and posting date, and returns every match in a single structured dataset. It can also open each job page to pull the full description, benefits, and application questions.

| Who uses it | What they scrape GovernmentJobs for |
|---|---|
| Job seekers | Monitor new public sector openings that match their skills and location in one feed. |
| Recruiters and HR analysts | Benchmark salary ranges, job titles, and closing dates across agencies. |
| Data journalists | Track hiring trends and vacancy volumes in local government over time. |
| Nonprofits and civic tech teams | Build dashboards of open public service roles for underserved communities. |

### What it does

This Actor collects job postings from GovernmentJobs.com by keyword search, location, or a pre-filtered URL, and returns each one as a flat row with optional detail-page fields.

- 🔍 **Keyword and location search:** enter a job title and a city or state, and the Actor builds the search for you.
- 🔗 **Direct URL input:** paste a GovernmentJobs search URL with your filters already applied and scrape exactly that result set.
- 📋 **Detail-page extraction:** toggle on to open each job card and pull the full description, benefits, and application questions.
- 📊 **Structured output:** every job returns the same flat schema, ready for spreadsheets or databases.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with GovernmentJobs data

**📬 Build a personal job alert feed.**

A job seeker runs the Actor weekly with their keyword and city, exports the CSV, and reviews only new postings that match.

**💰 Compare public sector salaries.**

An HR consultant scrapes all engineering roles in California with the salary filter set to $100,000+ and analyzes the range in Excel.

**📈 Track municipal hiring trends.**

A data journalist collects monthly snapshots of postings by state and job type to report on which agencies are growing.

**🗺️ Map remote government jobs.**

A civic tech nonprofit scrapes all remote-only listings nationwide and publishes them on a community job board.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key or login** | Reads the public job board directly, no registration needed. |
| **Full detail extraction** | Optionally opens each posting to capture the description, benefits, and questions. |
| **Built-in search filters** | Filter by job type, remote option, minimum salary, and date posted without constructing a URL. |
| **Scalable runs** | Grab ten jobs for a quick check or up to a million for a complete market snapshot. |

### How it compares

This Actor is built specifically for GovernmentJobs.com, the dominant U.S. public sector board. The competitors below target different official government job sites in other countries.

| Feature | ParseForge | Werk.nl Scraper | Taasuka.gov.il Scraper | Rojgarlive Jobs Monitor |
|---|---|---|---|---|
| Scrapes GovernmentJobs.com | Yes | Not listed | Not listed | Not listed |
| Keyword and location search | Yes | Not listed | Yes | Not listed |
| Full job description extraction | Yes | Not listed | Not listed | Not listed |
| Salary filter | Yes | Yes | Not listed | Not listed |
| Remote work filter | Yes | Not listed | Not listed | Not listed |

### Configure the run

Drive the Actor from a keyword, a location, or a pre-built GovernmentJobs URL, and apply filters for job type, remote work, salary, and posting date so only matching listings reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "startUrl": "https://www.governmentjobs.com/jobs?keyword=engineer",
  "maxItems": 10,
  "includeDetails": true
}
```

A larger pull:

```json
{
  "startUrl": "https://www.governmentjobs.com/jobs?keyword=engineer",
  "maxItems": 200,
  "includeDetails": true
}
```

### Pricing

Pay-per-result: **$0.01599 per result** collected. You pay only for the results written to your dataset.

A run also carries a one-time $0.005 start fee until October 4, 2026, when it is replaced by the `apify-actor-start` event below.

| Results collected | Approximate cost |
|---|---|
| 100 results | $1.60 |
| 1,000 results | $15.99 |
| 10,000 results | $159.90 |

#### Optional extras (from October 4, 2026)

Recruiter contacts are a new opt-in block that is off by default, so the price of a normal run does not change. A job whose posting contains no email address is never charged for it.

| Event | Price | Charged when |
|---|---|---|
| `apify-actor-start` | $0.02 per GB of run memory, one charge at the default 128 MB (replaces the current $0.005 start fee) | the run starts |
| `contact-email` | $0.005 per job | Extract Recruiter Contacts is on and the posting contained at least one recruiter or HR email address |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [GovernmentJobs Scraper](https://apify.com/parseforge/governmentjobs-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to GovernmentJobs through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/governmentjobs-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your keyword and location combination returns listings on the live GovernmentJobs.com site. Also make sure you are not using both a direct URL and the search filter fields at the same time.

**The run is slow when I turn on detail extraction.**

Detail extraction opens every job page individually, which takes more time. Reduce the maximum job count or run it without details first to test your filters, then enable details for the final run.

**Some fields are empty in my output.**

Not every GovernmentJobs posting fills in all fields. Salary, closing date, or benefits may be blank if the agency did not provide them. This is expected.

**I pasted a URL but the Actor used my keyword instead.**

The start URL and the search filter fields are mutually exclusive. Clear the keyword and location fields when you use a direct URL, or clear the URL field when you use the filters.

### FAQ

| Question | Answer |
|---|---|
| Do I need a GovernmentJobs.com account to scrape? | No. The Actor reads the public job listings that anyone can see in a browser. No login, API key, or account is required. |
| Can I scrape jobs from a specific city or state? | Yes. Use the location field to enter a city, state, or region like 'California' or 'Santa Clara, CA'. You can also set a search radius in miles. |
| How do I get the full job description and benefits? | Turn on the 'Include Details' option. The Actor will open each individual job page and extract the description, benefits, and any application questions. |
| What is the difference between using a keyword and pasting a URL? | The keyword and filter fields build a GovernmentJobs search for you. Pasting a direct URL lets you scrape a search you have already customized on the site. Use one or the other, not both. |
| Can I filter for remote or hybrid jobs? | Yes. The Remote Options filter lets you select Remote Only, Remote Optional, or Flexible/Hybrid roles. |
| How many jobs can I scrape in one run? | Free Apify users are limited to 100 jobs. Paid users can set the maximum up to 1,000,000 jobs per run. |
| Does the Actor handle pagination automatically? | Yes. It follows every page of search results until it reaches your maximum job count or the end of the listings. |
| What export formats are supported? | You can export your dataset to CSV, JSON, Excel, or XML directly from the Apify run console. |
| Can I schedule this scraper to run daily? | Yes. Apify's scheduler lets you set the Actor to run on a recurring interval, so you always have fresh job data. |

### Next step

Each row carries the fields that these ParseForge jobs Actors take as input:

- **Cleared roles for the same job.** Put `title` into `keyword` of [Security Clearance Jobs Scraper](https://apify.com/parseforge/clearancejobs-scraper) to see the defense and intelligence contractor roles that need a security clearance.
- **Private-sector pay for the same job.** Put `title` and `location` into `searchQuery` and `location` of [Indeed Jobs Scraper](https://apify.com/parseforge/indeed-scraper) to compare the public salary band with what private employers post.

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by GovernmentJobs.com, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `startUrl` (type: `string`):

Paste a GovernmentJobs search URL with filters already applied. Use this or the fields below, not both.

## `maxItems` (type: `integer`):

Free users: Limited to 100. Paid users: Optional, max 1,000,000.

## `query` (type: `string`):

Enter the job keyword to search for, for example engineer, analyst, or planner.

## `location` (type: `string`):

Limit results to a city, state, or region, for example California or Santa Clara, CA.

## `distance` (type: `integer`):

Search radius in miles around the location field.

## `jobTypes` (type: `array`):

Only include specific job types such as Full Time or Internship.

## `remoteWorkOptionIds` (type: `array`):

Filter for hybrid, remote-only, or remote-optional roles.

## `salary` (type: `string`):

Only keep jobs at or above the selected salary threshold.

## `daysPosted` (type: `string`):

Restrict results to jobs posted recently, such as the last 7 days.

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

Choose whether results should follow relevance or newest postings first.

## `includeDetails` (type: `boolean`):

Turn this on to open each job and extract description, benefits, questions, and extra metadata.

## `extractContacts` (type: `boolean`):

Adds contactEmails and contactPhones to each job: the recruiter or HR email addresses and phone numbers written inside the posting. They are read from the detail page that is already fetched, so it is no extra request, and it needs Include Details. Charged only for a row that receives it (at least one email address found).

## Actor input object example

```json
{
  "startUrl": "https://www.governmentjobs.com/jobs?keyword=engineer",
  "maxItems": 10,
  "includeDetails": true,
  "extractContacts": false
}
```

# Actor output Schema

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

Filtered overview of scraped GovernmentJobs records.

# 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 = {
    "startUrl": "https://www.governmentjobs.com/jobs?keyword=engineer",
    "maxItems": 10,
    "includeDetails": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/governmentjobs-scraper").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 = {
    "startUrl": "https://www.governmentjobs.com/jobs?keyword=engineer",
    "maxItems": 10,
    "includeDetails": True,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/governmentjobs-scraper").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 '{
  "startUrl": "https://www.governmentjobs.com/jobs?keyword=engineer",
  "maxItems": 10,
  "includeDetails": true
}' |
apify call parseforge/governmentjobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/governmentjobs-scraper"
        }
    }
}
```

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/PrHqkNOeyTWgPTNpr/builds/2UvqiQVxhOqW1S1tQ/openapi.json
