USAspending API Scraper: Federal Contract Awards, Grant Monitor
Pricing
from $6.00 / 1,000 award returneds
USAspending API Scraper: Federal Contract Awards, Grant Monitor
For government contractors and competitor research: federal spending from the USAspending API, contract awards and grants with recipient, obligated amount, agency, dates, NAICS and PSC, one row per award. Filter by keyword, recipient, agency, NAICS, state, amount; monitoring returns only new awards.
Pricing
from $6.00 / 1,000 award returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Federal contract awards and grants from USAspending.gov, one row per award, with a monitoring mode that returns only the awards that were not there at your last run. Use it to see which agency awarded what to a competitor, or to get the new contracts in your NAICS code, PSC code, state or keyword every morning.
This Actor reads the official public USAspending API (api.usaspending.gov, run by the U.S. Department of the Treasury). No API key. No proxy. No browser. One request at a time, at most one per second.
Each row holds the award ID, award type, recipient name and UEI, obligated amount, awarding and funding agency and sub-agency, award date, start and end date, NAICS and PSC code with their names (or the assistance listing for grants), the description, the place of performance, the recipient location and the link to the award page on USAspending.gov.
What this Actor gets right (measured on 2026-10-05)
1. "New award" means the award date, not the start date
The Start Date on USAspending is the start of the period of performance. It is often in the future: of the 1,560 Department of Homeland Security contracts first awarded from 2026-09-24 to 2026-09-30, 96 had a start date after 2026-09-30. Sorting or filtering by start date therefore mixes old and new awards.
This Actor filters with the API's "new awards only" date type (the date of the first transaction of the award), returns that date as awardDate, and sorts newest first. startDate and endDate are returned as separate columns.
2. Monitoring compares award IDs, because awards arrive late
Awards do not reach USAspending on the day they are signed. Department of Defense contracts are published about 90 days late: on 2026-10-05 the API held 12 Department of Defense contracts first awarded in the previous 15 days, and 115,546 for 2026-06-20 to 2026-07-05. A monitor that only asks "what was awarded since yesterday" never sees them.
Monitoring mode reads every matching award first awarded in the last 120 days (you can change the window), compares the USAspending award IDs with the IDs it remembers, and returns only the awards that are new to the list, whenever their award date was.
3. A mistyped agency does not come back as "no awards"
The API matches agency names exactly, including upper and lower case. department of defense returns 0 awards with HTTP 200, the same answer as an agency that awarded nothing. Unknown filter names are ignored silently and return everything.
This Actor checks each agency you enter against the official list of top-tier agencies, accepts the full name or the abbreviation (DHS, dhs, Department of Homeland Security) in any case, and stops with a row that names the entry it could not find. State codes, NAICS codes, dates and keywords are checked before anything is read. A search the API rejects is reported with the API's own reason, not as an empty result.
4. The filters were compared with a local recount
All 1,560 Department of Homeland Security contracts first awarded from 2026-09-24 to 2026-09-30 were read without other filters (16 pages, no award twice, the same count as the API's count endpoint) and filtered locally. Then the same filters were sent to the API through this Actor's query builder: NAICS (6, 4 and 2 digits), PSC, place of performance state, recipient state, minimum, maximum and range of amount, and a combination. 12 filter cases, 0 differences in the set of award IDs. Several keywords, and several recipient names, return the awards that match any one of them (checked against the single-entry answers). The check is in the repository as test/live-query-check.mjs.
Four rows were also compared with the award detail endpoint: recipient, amount, NAICS, PSC, state, agency and dates were the same, and awardAmount equals the detail's total_obligation.
What one row looks like
A real row from 2026-10-05 (keyword cybersecurity, agencies dhs and Department of Defense, last 30 days):
| Field | Value |
|---|---|
awardId | 70T05026F5900N033 |
awardType | DELIVERY ORDER |
recipientName / recipientUei | CMA TECHNOLOGY INC / PG4AHPP8MDN6 |
awardAmount | 958748.7 |
awardingAgency / awardingSubAgency | Department of Homeland Security / Transportation Security Administration |
awardDate / startDate / endDate | 2026-09-30 / 2026-09-30 / 2027-09-29 |
naicsCode / naicsDescription | 541519 / OTHER COMPUTER RELATED SERVICES |
pscCode | 7B22 |
placeOfPerformanceCity / placeOfPerformanceState | VIENNA / VA |
usaspendingUrl | https://www.usaspending.gov/award/CONT_AWD_70T05026F5900N033_7013_NNG15SD71B_8000 |
searchedFor | type=contracts; new-awards 2026-09-05..2026-10-05; keywords=cybersecurity; agency=Department of Homeland Security | Department of Defense |
Other columns: awardCategory, totalOutlays, fundingAgency, fundingSubAgency, lastDateToOrder (IDVs), lastModifiedAt, pscDescription, assistanceListing and assistanceListingTitle (grants, direct payments, loans, other assistance), subsidyCost (loans), description, placeOfPerformanceCountry, placeOfPerformanceZip, recipientCity, recipientState, recipientCountry, recipientZip, generatedInternalId, change, previousCheckedAt, status, scrapedAt.
awardAmount is the amount obligated so far (for loans, the loan value). It is not the potential ceiling of the contract, and it can be 0 for a new order with no obligation yet. Recipients of some direct payments are published by USAspending as REDACTED DUE TO PII.
Input
| Field | What it does |
|---|---|
keywords | Words or phrases searched by USAspending in the award text. Any one entry may match. At least 3 characters each. |
awardType | contracts (default), idvs, grants, direct-payments, loans or other. The API searches one group per request, so one run covers one group. |
recipientNames | Text searched in the recipient name, UEI and DUNS. Any one entry may match. |
agencies | Top-tier awarding agencies by full name or abbreviation. Checked against the official list. |
naicsCodes | NAICS codes with 2, 4 or 6 digits. Contracts and IDVs. |
pscCodes | Product or service codes. Contracts and IDVs. |
placeOfPerformanceStates | Two-letter state or territory codes of the place of performance. |
recipientStates | Two-letter state or territory codes of the recipient address. |
minAmount, maxAmount | Range of the award amount in dollars. |
awardedInLastDays | Awards dated in the last N days. Or use dateFrom and dateTo. With no date, every award since 2007-10-01 matches. |
dateType | new-awards (default: the first transaction is in the range), action-date (the award had a transaction in the range, which includes modifications of older awards) or last-modified. |
maxAwards | Most rows to return with monitoring off (default 200, up to 10,000). |
monitoringMode | Return only awards that were not there at the last run with the same filters. |
monitorLookbackDays | The window monitoring compares (default 120 days, 7 to 365). |
resetMonitoringState | Forget what is remembered for these filters and start over. |
All filters that are set must match. Within one filter, any one entry may match.
Example: new IT services contracts performed in Virginia, DC or Maryland in the last 30 days, at least $100,000.
{"awardType": "contracts","naicsCodes": ["5415"],"placeOfPerformanceStates": ["VA", "DC", "MD"],"minAmount": 100000,"awardedInLastDays": 30,"maxAwards": 500}
Example: watch what one competitor wins from the Department of Homeland Security, on a daily schedule.
{"recipientNames": ["GUIDEHOUSE"],"agencies": ["DHS"],"monitoringMode": true}
Monitoring mode
- First run with a set of filters: the matching awards first awarded in the lookback window are remembered. No award row is returned and nothing is charged. The run returns one row with
status: baseline-saved. To get the awards that are published now, run once with monitoring off. - Each later run with the same filters: the window is read again and compared by USAspending award ID. Only awards that were not there before are returned, with
change: new-awardandpreviousCheckedAt. - A run that finds nothing new returns one row with
status: no-new-awardsand is charged one check instead of award rows.
What to know:
- Memory is kept per set of filters (award type, keywords, recipients, agencies, codes, states, amounts and lookback window). Changing any of them starts a new memory with a first run.
- The date inputs are not used in monitoring mode.
- A monitored search must match fewer than 10,000 awards in the window, because one USAspending search pages 10,000 awards deep. Each run first asks USAspending for the number of matching awards in one request; a broader search stops there with
status: search-too-broadand nothing is charged or remembered. All contracts of all agencies is far too broad (about 164,000 new contracts were first awarded in the 30 days before 2026-10-05); one agency with a NAICS code, a recipient or a keyword is fine. - Each monitoring run reads the whole window, 100 awards per request, about one second per request. A search matching 2,000 awards takes about 25 seconds.
- An award is remembered only after it was returned and charged. If a run stops at your maximum charge, the awards that were not returned still count as new at the next run.
- "New" means new to USAspending for your search. It includes awards signed weeks ago that were published late.
- USAspending loads new data about once a day, so a daily schedule is enough.
- Two runs with the same filters at the same moment can return the same award twice. Do not schedule them together.
What is charged
award-returned: each award row in the dataset.search-checked: one per monitoring run that compared the list and found no new award.
Not charged: the first monitoring run, rows that report a problem or a limit (status other than ok), invalid input, and runs where USAspending could not be read.
When a run returns no award
The run always returns at least one row. When there is no award row, the row says why in status and note:
status | Meaning |
|---|---|
no-awards | USAspending was read and holds no award for the search. |
no-new-awards | Monitoring: nothing new since the last run. |
baseline-saved | Monitoring: first run, the current awards were remembered. |
invalid-input | An input value could not be used (for example an agency that is not on the list). Nothing was read. |
request-rejected | USAspending answered HTTP 400 or 422. The note holds its reason. |
source-unreadable | USAspending did not answer, answered with an error, or the answer did not have the expected form. |
source-blocked | USAspending answered HTTP 403 or 429. The Actor does not retry around it. |
search-too-broad | Monitoring: the search matches 10,000 awards or more in the window. |
limit-reached | More matching awards exist beyond maxAwards, or beyond the 10,000 the search pages through. |
budget-reached, not-read | The maximum total charge set for the run left no room for more rows. |
Limits
- Top-tier awarding agencies only. Sub-agencies are returned in each row but cannot be filtered on.
- One award group per run (the API's rule).
- Prime awards only. Sub-awards are not read.
- The search goes back to 2007-10-01 and 10,000 awards deep per search. Narrow the dates or filters to reach older awards.
- Keyword matching is done by USAspending. This Actor does not re-filter the text.
- Awards are published with a delay: about 90 days for Department of Defense contracts, a few days for most other agencies.
- The data is what agencies report to USAspending. This Actor does not correct it.
- The API publishes no request limit in the documents read for this Actor. It was never refused during testing at one request per second.
Data source
USAspending.gov is the official open data source of federal spending, published by the U.S. Department of the Treasury under the DATA Act. This Actor is not affiliated with or endorsed by the U.S. government.
Related Actors
- SAM.gov Opportunities Monitor: open federal contract opportunities before they are awarded, from the official SAM.gov daily file, with monitoring.
- EU Tender Monitor: public tenders from the EU's TED, with monitoring.
- UK Tenders Scraper: Contracts Finder and Find a Tender in one table.
Thanks for using this Actor
We build these tools for people who run them every day, and we improve them from what users tell us.
- Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
- Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.
If this Actor saved you time, a short review helps other people find it.