# Changelog of USAspending Federal Awards Scraper (`haketa/usaspending-scraper`) Actor

- **URL**: https://apify.com/haketa/usaspending-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/haketa/usaspending-scraper.md

## Changelog

### 1.1.0 — 2026-11-01

- **Verified 500 unique federal-award records in ~31 seconds** (Department of Defense contracts, FY2024) with **0% duplicates** on the `internalAwardId` natural key. Core identity + financial fields (`awardId`, `internalAwardId`, `awardAmount`, `recipientName`, `recipientUei`, `agencyName`, `dateSigned`, `awardDetailUrl`) at **100%** coverage; `description` ~96%; NAICS, PSC, recipient address and awarding-agency hierarchy ~99–100%. No proxy required.
- **Fixed `executiveCompensation` null padding.** USAspending always returns 5 officer slots; recipients without an FFATA disclosure (e.g. Lockheed Martin) previously emitted 5 `{name:null, amount:null}` rows, polluting the "Recipients + executives" unwind view with ~1,900 blank rows per 500 awards. The field now contains only real disclosed officers (empty array when there is no disclosure).
- **Normalized executive names** — collapsed double/irregular whitespace in officer names (e.g. `"KAREN  MORAN"` → `"KAREN MORAN"`) so they are CRM-ready.
- **Refreshed README to the gold standard**, grounded in the fresh run: corrected the Output example (real `description`, `totalOutlay`, period-of-performance datetime format, uppercase addresses, human-readable competition values), rewrote the field-reference table, and added an honest field-coverage note that distinguishes 100% core fields from genuinely data-dependent fields (`setAside` ~86%, `totalOutlay` ~51%, `executiveCompensation` ~24–60% by FFATA threshold).
- Confirmed pagination (100 records/page, `hasNext`-driven) scales cleanly to the `maxRecords` cap and that the no-filter safety sample (100 awards) still behaves.
