Skip to content

USAJOBS Scraper

Try for free

Scrape federal job announcements from USAJOBS.gov by keyword, location and the site's filters, or from search and job URLs. Get title, agency, salary range, grade, locations, dates, who can apply, duties, qualifications, telework, clearance and the agency contact.

🏛️ USAJOBS Scraper

Scrape federal job announcements from USAJOBS.gov, the official job site of the U.S. government. Search by keyword and location with the site's own filters, or paste USAJOBS search and job URLs, and get every job as a clean row: title, agency, salary range, pay grade, all locations, open and close dates, who can apply, duties, qualifications, telework, clearance and the agency contact. No login, no API key, and a run of 20 fully detailed jobs finishes in under 10 seconds.

✨ Why use USAJOBS Scraper?

  • 📋 The full announcement, not just the card — salary range, grade and promotion potential, duties, qualifications, education, conditions of employment, required documents, how to apply and next steps.
  • 🎯 The site's own filters — remote, telework, who can apply (public, veterans, students, federal employees...), work schedule, appointment type, security clearance, travel, salary and occupation series.
  • 🔗 Paste any USAJOBS URL — every filter in a search URL is kept, and single job URLs work for open and closed announcements.
  • 📞 Agency contact included — the HR contact's name, email, phone and address from each announcement.
  • 🔁 Deduplicated across searches — a job that matches several keywords is saved and charged once.
  • 💸 Pay per job — no start fee, no subscription, and no login or key to manage.

🎯 Use cases

  • 🧭 Federal job alerts: run a daily schedule for "newest first, posted within 1 day" and push new announcements to Slack, email or a sheet.
  • 💰 Salary benchmarking: compare GS, WG and other pay plans, ranges and grades by occupation, agency and location.
  • 🏢 Hiring intelligence: track which departments and agencies are hiring for which occupations, and where.
  • 🎓 Career services: build curated lists for veterans, students, recent graduates or military spouses with the hiring path filter.
  • 🧑‍💼 Recruiting and staffing: collect clearance, telework and remote requirements together with the agency contact.
  • 📊 Research and journalism: export open announcements for analysis of public-sector hiring.

🚀 How to use

  1. Enter one or more keywords (e.g. software engineer, nurse, 2210) and an optional location (e.g. Washington, DC, Texas, Germany), or paste USAJOBS search or job URLs.
  2. Optionally set filters: posted within N days, remote or telework only, hiring paths, schedule, appointment type, clearance, travel, salary, occupation series.
  3. Set Max jobs for the run (0 = all matching jobs) and, with many keywords, an optional Max jobs per search.
  4. Click Start. Jobs appear in the dataset as they are scraped.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
keywordsJob titles, skills or occupations; each one is its own search
locationCity, state, ZIP or country, as typed on USAJOBS
startUrlsUSAJOBS search URLs (filters kept) or job URLs / control numbers
maxItemsMaximum jobs in the run, across all searches (0 = all)
maxItemsPerSearchOptional cap per keyword or search URL
postedWithinDaysOnly announcements opened in the last N days
remoteOnly, teleworkOnlyOnly remote or telework-eligible jobs
hiringPaths, workSchedules, appointmentTypes, securityClearances, travelThe site's filters
minSalary, maxSalary, occupationSeriesSalary range and OPM series codes
sortByRelevance, recently posted, closing soon or highest salary
includeDetailsOpen each announcement for the full text and contact (on by default)
{
  "keywords": ["software engineer", "data scientist"],
  "location": "Washington, DC",
  "maxItems": 100,
  "postedWithinDays": 14,
  "hiringPaths": ["public"],
  "teleworkOnly": true,
  "sortBy": "newest"
}

📤 Output

FieldDescription
controlNumber, announcementNumberUSAJOBS control number and the agency's announcement number
title, department, agency, subAgencyJob title and hiring organization
location, locations, locationCountDisplay location and every duty location
salary, salaryMin, salaryMax, salaryPeriodPay range as text and numbers, per year or per hour
payPlan, grade, gradeLow, gradeHigh, promotionPotentialPay plan and grade (e.g. GS 12 - 14)
workSchedule, appointmentType, serviceTypeFull-time, permanent, competitive or excepted service...
hiringPaths, hiringPathCodesWho may apply
openDate, closeDate, statusAnnouncement dates and status (accepting applications, reviewing...)
jobCategoriesOccupational series codes and names
remote, teleworkEligible, travelRequired, relocationReimbursedWork-site conditions
securityClearance, positionSensitivity, drugTest, financialDisclosure, supervisoryStatus, unionRepresentedPosition requirements
summary, duties, qualifications, education, conditionsOfEmployment, additionalInformation, evaluation, requiredDocuments, howToApply, nextStepsAnnouncement sections as plain text
descriptionText, descriptionHtmlSummary, duties, qualifications and education in one text or HTML field
contactName, contactEmail, contactPhone, contactAddressAgency HR contact
url, applyUrlJob page and apply link
searchQuery, scrapedAtWhich search found the job, and when

Example (from a real run, long texts shortened, contact replaced with a fictional one):

{
  "controlNumber": "888547100",
  "title": "Software Engineer and Data Automation Specialist",
  "department": "Judicial Branch",
  "agency": "U. S. Sentencing Commission",
  "location": "Washington, District of Columbia",
  "locations": ["Washington, DC"],
  "locationCount": 1,
  "salary": "$102,415 - $187,093 per year",
  "salaryMin": 102415,
  "salaryMax": 187093,
  "salaryPeriod": "Per year",
  "payPlan": "JS",
  "grade": "JS 12 - 14",
  "gradeLow": "12",
  "gradeHigh": "14",
  "promotionPotential": "14",
  "workSchedule": "Full-time",
  "appointmentType": "Permanent",
  "hiringPaths": ["Open to the public"],
  "hiringPathCodes": ["public"],
  "openDate": "2026-10-13",
  "closeDate": "2026-11-13",
  "status": "Accepting applications",
  "jobCategories": [{"code": "2210", "name": "Information Technology Management"}],
  "announcementNumber": "27-01",
  "remote": false,
  "teleworkEligible": "Yes—as determined by the agency policy.",
  "travelRequired": "Not required",
  "serviceType": "Excepted Service",
  "securityClearance": "Other",
  "positionSensitivity": "Non-sensitive (NS)/Low Risk",
  "summary": "The Commission is seeking a Software Engineering and Data Automation Specialist who will work within the Information Systems team...",
  "duties": "The Software Engineering and Data Automation Specialist will work within the Information Systems team...",
  "qualifications": "Specialized Experience:\n\n- Software Development: Experience developing and maintaining production Python applications...",
  "education": "Applicants must have an undergraduate degree from an accredited college or university in information technology or a related field of study.",
  "requiredDocuments": "- Resume (limited to 2 pages)\n\n- Cover Letter\n\n- Recent job performance evaluation (if available)",
  "contactName": "Jordan Lee",
  "contactEmail": "jobs@agency.example",
  "contactPhone": "202-555-0142",
  "contactAddress": "One Columbus Circle NE, Washington, DC 20002, US",
  "url": "https://www.usajobs.gov/job/888547100",
  "applyUrl": "https://www.usajobs.gov/Applicant/Application/ApplyStart/888547100",
  "searchQuery": "software engineer in Washington, DC",
  "scrapedAt": "2026-10-21T22:36:35.392Z"
}

💰 Pricing

$0.70 per 1,000 jobs ($0.0007 per job), full announcement included, no start fee. Platform usage (compute and proxy traffic) is billed on top and is small: in our test runs it came to about $0.05 per 1,000 detailed jobs.

Example: 1,000 detailed jobs ≈ $0.75 in total. Jobs left out by your filters, duplicates and failed pages are never charged. Set a maximum charge for the run and the scraper stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape USAJOBS? USAJOBS announcements are public U.S. government information that anyone can read without an account. You are responsible for how you use the data, including any personal data such as HR contact details.

Do I need a login, API key or proxy? No. The scraper reads the public site without an account or key. Datacenter proxies are used by default; if USAJOBS refuses requests several times in a row, the run moves to US residential addresses by itself.

How many jobs can I get? As many as match. USAJOBS shows at most 10,000 jobs per search, so for more, split the search by location, agency, occupation series or keyword. The status message tells you when a search hit that ceiling.

Why is a field empty? Agencies do not fill every field: some announcements have no maximum salary, remote flag, union or financial disclosure line, or contact phone. Empty fields reflect the announcement, not a failed scrape. With includeDetails off you get only the search fields.

Can I get closed announcements? USAJOBS search lists only open announcements. Closed ones can still be scraped when you add their job URLs or control numbers to startUrls.

Can I schedule it or use the API? Yes. Schedule the scraper (e.g. daily with postedWithinDays: 1 and sortBy: newest) and read results through the API, webhooks or integrations. Moving from a similar actor on another platform? keyword, searchUrl, daysBack and maxJobs are accepted as input too.

⚠️ Limits

  • USAJOBS search shows at most 10,000 jobs per search; split broader searches to collect more.
  • Only open announcements appear in search results; closed ones need their job URL or control number.
  • Duty locations are given as city and state text; latitude and longitude are not on the public pages.
  • postedWithinDays with a sort other than relevance or recently posted has to page through every result to filter them.
  • Pages are read as USAJOBS shows them today; a redesign of the site can need an update of the scraper.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.