POST /api/usajobs/jobs
Price: 5 credits
Get one US federal job announcement from USAJOBS by its control number. Returns the full announcement: title, department, agency and hiring organization, summary, duties, requirements (conditions of employment, qualifications, education), how applicants are evaluated, required documents, how to apply and the next steps of the hiring process, plus the overview metadata — application status, posting and closing dates, duty locations with vacancy counts, salary, pay scale and grade, promotion potential, work schedule, appointment type, travel, supervisory status, telework and remote eligibility, relocation, drug test, financial disclosure, union representation, federal service type, security clearance and position sensitivity — together with the hiring paths the job is open to and the agency contact details.
Fetch a single USAJOBS federal job announcement. Pass job as the 9-digit control number (for example 875781800) or the full announcement URL — both are accepted. Control numbers come from the id field of the USAJOBS job search endpoint. Federal announcements close on a fixed date and are removed afterwards, so a control number that worked before can later return 412. The response contains the complete announcement text (summary, duties, requirements, evaluation, required documents, how to apply) plus structured overview fields and the agency contact.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)job string required — Job control number or the URL of the announcement (examples: "875781800", "https://www.usajobs.gov/job/875781800")@type string (default: "UsajobsJob")id string requiredannouncement_number string nullablejob_title string nullableurl string nullabledepartment string nullableagency string nullablehiring_organization string nullableapplication_status string nullableposted_display string nullableclose_date_display string nullablevacancy_display string nullablelocations array (default: [])@type string (default: "UsajobsJobLocation")name string requiredvacancy_count integer nullablesummary string nullableduties string nullablerequirements string nullableevaluation string nullablerequired_documents string nullablehow_to_apply string nullablenext_steps string nullablesalary string nullablepay_scale_and_grade string nullablepromotion_potential string nullablework_schedule string nullableappointment_type string nullabletravel_required string nullableis_supervisory boolean nullableis_telework_eligible boolean nullableis_remote boolean nullableis_relocation_reimbursed boolean nullableis_drug_test_required boolean nullableis_financial_disclosure_required boolean nullableis_union_represented boolean nullablefederal_service_type string nullablesecurity_clearance string nullableposition_sensitivity string nullablehiring_paths array (default: [])@type string (default: "UsajobsJobHiringPath")code string requiredname string nullabledescription string nullablecontact object nullable@type string (default: "UsajobsJobContact")name string nullablephone string nullablefax string nullableemail string nullablewebsite_url string nullableaddress string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The announcement does not exist or has been removed from USAJOBS Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.