# Changelog of Federal Contracts Scraper — USASpending.gov (`sleek_waveform/federal-contract-scraper-usaspendinggov`) Actor

- **URL**: https://apify.com/sleek_waveform/federal-contract-scraper-usaspendinggov/changelog.md
- **Full Actor documentation**: https://apify.com/sleek_waveform/federal-contract-scraper-usaspendinggov.md

## Changelog

### \[Unreleased]

#### Improved

- **Sub-agency support:** Agency filter now resolves toptier vs subtier automatically
  (e.g. ICE under DHS). Previously all agencies used `tier: toptier`, so sub-agencies
  like "U.S. Immigration and Customs Enforcement" silently returned 0 results.
- **Faster pagination:** Inter-page delay reduced from 500ms to 100ms for large
  `maxResults` runs (HTTP-only — no browser rate-limit concern).

#### Fixed

- USASpending HTTP 422 when `includeIdvs` is true: `award_type_codes` must be
  a single group (contracts *or* IDVs). The actor now runs separate paginated
  queries per group instead of mixing A–D with IDV\_\* in one request (run
  HRIVhbvlGfM4felaP). Regression: `tests/utils.test.js`.
- Monitoring can no longer crash the run. The failure-monitoring webhook is now
  registered through a best-effort guard (`src/monitor.ts`). Apify QA-validation
  runs reject `Actor.addWebhook`, and the previously-unguarded `await` propagated
  that rejection out of `Actor.main()`, producing 0-second FAILED runs with exit
  code 91 (`ERROR_USER_FUNCTION_THREW`). Regression test: `tests/monitor.test.js`.

### \[1.0] - 2026-03-12

#### Added

- Initial release
- Search federal contract opportunities from SAM.gov by keyword, NAICS code, and agency
- Filter by small business set-aside type (SBA, 8(a), HUBZone, WOSB, SDVOSB)
- Date range filtering and active-only opportunity views
