USAspending API Scraper: Federal Contract Awards, Grant Monitor avatar

USAspending API Scraper: Federal Contract Awards, Grant Monitor

Pricing

from $6.00 / 1,000 award returneds

Go to Apify Store
USAspending API Scraper: Federal Contract Awards, Grant Monitor

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

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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):

FieldValue
awardId70T05026F5900N033
awardTypeDELIVERY ORDER
recipientName / recipientUeiCMA TECHNOLOGY INC / PG4AHPP8MDN6
awardAmount958748.7
awardingAgency / awardingSubAgencyDepartment of Homeland Security / Transportation Security Administration
awardDate / startDate / endDate2026-09-30 / 2026-09-30 / 2027-09-29
naicsCode / naicsDescription541519 / OTHER COMPUTER RELATED SERVICES
pscCode7B22
placeOfPerformanceCity / placeOfPerformanceStateVIENNA / VA
usaspendingUrlhttps://www.usaspending.gov/award/CONT_AWD_70T05026F5900N033_7013_NNG15SD71B_8000
searchedFortype=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

FieldWhat it does
keywordsWords or phrases searched by USAspending in the award text. Any one entry may match. At least 3 characters each.
awardTypecontracts (default), idvs, grants, direct-payments, loans or other. The API searches one group per request, so one run covers one group.
recipientNamesText searched in the recipient name, UEI and DUNS. Any one entry may match.
agenciesTop-tier awarding agencies by full name or abbreviation. Checked against the official list.
naicsCodesNAICS codes with 2, 4 or 6 digits. Contracts and IDVs.
pscCodesProduct or service codes. Contracts and IDVs.
placeOfPerformanceStatesTwo-letter state or territory codes of the place of performance.
recipientStatesTwo-letter state or territory codes of the recipient address.
minAmount, maxAmountRange of the award amount in dollars.
awardedInLastDaysAwards dated in the last N days. Or use dateFrom and dateTo. With no date, every award since 2007-10-01 matches.
dateTypenew-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.
maxAwardsMost rows to return with monitoring off (default 200, up to 10,000).
monitoringModeReturn only awards that were not there at the last run with the same filters.
monitorLookbackDaysThe window monitoring compares (default 120 days, 7 to 365).
resetMonitoringStateForget 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

  1. 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.
  2. 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-award and previousCheckedAt.
  3. A run that finds nothing new returns one row with status: no-new-awards and 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-broad and 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:

statusMeaning
no-awardsUSAspending was read and holds no award for the search.
no-new-awardsMonitoring: nothing new since the last run.
baseline-savedMonitoring: first run, the current awards were remembered.
invalid-inputAn input value could not be used (for example an agency that is not on the list). Nothing was read.
request-rejectedUSAspending answered HTTP 400 or 422. The note holds its reason.
source-unreadableUSAspending did not answer, answered with an error, or the answer did not have the expected form.
source-blockedUSAspending answered HTTP 403 or 429. The Actor does not retry around it.
search-too-broadMonitoring: the search matches 10,000 awards or more in the window.
limit-reachedMore matching awards exist beyond maxAwards, or beyond the 10,000 the search pages through.
budget-reached, not-readThe 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.

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.