What USAJOBS scraping adds beyond the API
The announcement page holds fields the structured record does not. We read position sensitivity and risk, such as Non-sensitive (NS)/Low Risk, the background check type, whether financial disclosure is required, whether the position is represented by a union, and the vacancy count printed above each location. None of those appear in the documented Search or Historic JOA response schemas.
Long text is a separate question. The Announcement Text endpoint returns summary, duties, conditions of employment, qualifications, education, required documents, how to apply, next steps, evaluations, other information and a hiring path explanation, all without a key. The Search API returns comparable text only when you request Fields=Full; ask for Fields=Min and you get the summary alone. We extract from the endpoint where it is complete and from the page where it is thin.
Then there is the area of consideration. USAJOBS expresses it as hiring paths under the heading "This job is open to", plus free text headed "Clarification from the agency". That note is where an agency restricts an opening to current employees of one facility. It is prose, so we keep it verbatim and flag the recurring patterns beside it.
We do not collect applicant profiles, resumes or saved documents. Those sit behind a login, they are personal data, and they are out of scope.