USAJobs Jobs Search Scraper
Pricing
from $2.99 / 1,000 usajobs vacancies
USAJobs Jobs Search Scraper
Scrape rich, identity-verified federal job announcements from USAJOBS.
Pricing
from $2.99 / 1,000 usajobs vacancies
Rating
0.0
(0)
Developer
Jobs API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
What does USAJOBS Jobs Search Scraper do?
USAJOBS Jobs Search Scraper extracts identity-verified federal job announcements from USAJOBS. It combines the public first-party search endpoint with each public announcement page to produce rich records without an applicant account or API credential.
Every emitted record verifies the numeric control number, title, agency, canonical URL, and substantial announcement sections. Search mode supports keyword/location pagination; single and multiple modes enrich known public announcement URLs.
Why use USAJOBS Jobs Search Scraper?
- Build rich federal vacancy feeds with summary, duties, requirements, qualifications, evaluation, documents, and application instructions.
- Track agencies, departments, locations, pay, schedules, appointment types, closing dates, and hiring paths.
- Resolve known USAJOBS control numbers into canonical, source-verified records.
- Schedule runs, use the Apify API, connect datasets to integrations, and monitor machine-readable diagnostics.
- Preserve valid partial results when one detail fails or a bounded search exposes fewer jobs than requested.
The Actor uses ordinary direct public HTTPS only, with one attempt per request and no custom user-agent, proxy, cookies, fingerprint, or identity changes. It does not use authenticated pages, private applicant data, browser automation, or private API credentials. A source HTTP 401, 403, 429, or 451 response, or a visible source-authored access challenge, stops requests, discards buffered records, and records platform status: SUCCEEDED with resultStatus: SKIPPED. A fatal generic network or unverified HTTP failure with no stored rows records platform status: FAILED, resultStatus: FAILED, and accessStatus: DEFERRED.
What data can USAJOBS Jobs Search Scraper extract?
| Field | Type | Description |
|---|---|---|
jobId, controlNumber, announcementNumber | string | Official announcement identity. |
title, agency, department | string | Verified position and organisation. |
location, locations | string/array | Public duty locations. |
summary, duties, requirements | string | Rich announcement sections. |
qualifications, evaluation, requiredDocuments | string | Eligibility and selection content. |
salaryMin, salaryMax, payScaleGrade | number/string | Published pay data. |
datePosted, validThrough | date | Published announcement opening and closing dates. |
hiringPaths, jobSeries | array | Public applicant paths and categories. |
applicationUrl, applicationMethods | string/array | USAJOBS or employer application destinations published with the announcement. |
detailVerified, verificationEvidence | boolean/object | Identity, canonical, and richness checks. |
fieldCoverage.meaningfulFieldCount | integer | Count of populated source facts; each emitted record requires at least 21. |
The public announcement URL is jobUrl; it is never reused as an application URL. Empty optional fields are omitted.
How to scrape USAJOBS announcements
- Open the Actor input tab in Apify Console.
- Select
search,single, ormultiple. - For search mode, enter keywords and an optional location.
- For direct modes, provide official
usajobs.gov/job/<control-number>URLs. - Set
maxPages,maxItems,pageSize, andmaxRequeststo bounded values. - Start the run and inspect the dataset,
RUN_SUMMARY, andRUN_DIAGNOSTICS. - Export results or connect the dataset to an Apify integration.
One search page consumes one request and each inspected announcement consumes one request. The Actor stops at maxRequests.
How much will it cost to scrape USAJOBS?
Native HTTPS is efficient compared with browser automation. Actual cost depends on your Apify plan, memory, page count, detail count, response latency, and current platform pricing. Start with one page and five items, then use the run estimate in Apify Console before scaling. A practical request budget is maxPages + maxItems plus a small margin for rejected candidates.
Input
See the input tab for full configuration options.
{"mode": "search","query": "software engineer","location": "","maxPages": 1,"maxItems": 5,"pageSize": 25,"maxRequests": 12,"requestDelayMs": 100,"requestTimeoutSecs": 30}
Direct URLs must use the USAJOBS host and contain a numeric control number. Duplicate URLs are removed. requestDelayMs applies between detail requests.
Output
You can download the dataset in formats such as JSON, HTML, CSV, or Excel. The checked-in examples/record.json is copied directly from a locally emitted dataset row. RUN_SUMMARY separates Apify process status: SUCCEEDED|FAILED from dataset resultStatus: COMPLETE|LIMITED|SKIPPED|NO_DATA|FAILED and accessStatus, alongside page, candidate, request, rejection, runtime, and completion details. RUN_DIAGNOSTICS explains search, detail, policy, dataset-write, or validation outcomes. REQUEST_RECEIPTS keeps one receipt for each request attempt, including status, destination, duration, and access-policy result. These records are stored outside the job dataset.
Tips and advanced options
- Use
singlemode for the cheapest rich lookup. - Keep
pageSizehigh enough to findmaxItemswithin few pages. - Raise
maxRequestswhen increasing pages or direct URLs. resultStatus: LIMITEDmeans real records were stored but the requested set was incomplete or a later non-block error occurred. A handled source barrier isSUCCEEDED/SKIPPED; a clean empty search isSUCCEEDED/NO_DATA; a fatal zero-row failure isFAILED/FAILEDwithaccessStatus: DEFERREDwhen source access could not be verified.- Verify consequential hiring decisions against the canonical announcement.
- Avoid collecting or retaining public contact details unless they are necessary for your lawful use.
Local development
npm ci --no-audit --no-fundnpm run checknpm testapify validate-schema
Before an apify run, inspect apify run --help and the Actor's local and legacy storage paths. Choose a new actor-relative APIFY_LOCAL_STORAGE_DIR, confirm it does not exist, and use --resurrect; never use --purge or reuse a dataset directory. For PowerShell:
Test-Path -LiteralPath storage/validation-01$env:APIFY_LOCAL_STORAGE_DIR = 'storage/validation-01'apify run --resurrect --input-file INPUT.jsonnpm run validate -- storage/validation-01
Preserve any existing apify_storage directory before running. Local data remains under the selected storage/ path and is not uploaded to Apify Console.
FAQ, disclaimers, and support
Why did I receive fewer records than maxItems?
The query may expose fewer matching announcements, a detail page may fail strict verification, or the request budget may be reached. Valid records are retained for ordinary non-barrier limitations; explicit source access barriers stop requests and discard buffered records. Inspect diagnostics and request receipts before changing bounds.
Does the Actor submit applications?
No. It extracts public announcement data only and does not log in or submit forms.
Is scraping USAJOBS legal?
Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
Respect USAJOBS terms, robots guidance, rate limits, and applicable law. Use the Actor API tab for programmatic access. Report issues with a redacted input and run ID in the Issues tab.