USAspending Scraper — Federal Contract & Grant Awards
Pricing
from $1.60 / 1,000 awards
USAspending Scraper — Federal Contract & Grant Awards
US federal contract and grant awards from USAspending.gov: agency, recipient organisation, amount, dates, NAICS/PSC or assistance listing, place of performance. Filter by keyword, agency, amount, state; flag awards new since your last run. Official API, no login.
Pricing
from $1.60 / 1,000 awards
Rating
0.0
(0)
Developer
Northbell
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Features
Share
Search the US government's USAspending.gov by keyword, awarding agency, amount, state or industry code and get one clean row per award: awarding agency and sub-agency, recipient organisation, total amount, start and end dates, NAICS and PSC codes (contracts) or Assistance Listing number (grants and loans), place of performance and award type, with a link to the award on USAspending. $2.00 per 1,000 awards, no login, no API key.
Run it again, or put it on a daily schedule, and every row also tells you whether the award is new since the last run (isNew). Set What to return to Only new and you pay only for the awards you have not seen before. USAspending counted 144,130 new contracts in the 30 days to 16 Oct 2026, so the useful question is what appeared since yesterday; this keeps the list of what you have already seen.
What you get
| Field | What it is |
|---|---|
awardId, uniqueAwardKey, url | the award's own ID (contract PIID or grant FAIN), USAspending's unique key for it, and the link to its page on USAspending |
awardGroup, awardType | contracts, idvs, grants, direct-payments, loans or other-assistance, and the award type as the source names it (DELIVERY ORDER, PROJECT GRANT (B), DIRECT LOAN (E)…) |
isNew, previousRunAt | true / false whether you had not seen this award in your previous run of the same search, and when that run was (null on the first run) |
description | what the award is for, as the agency wrote it, cut at 500 characters (a trailing … marks a cut) |
awardingAgency, awardingSubAgency, fundingAgency, fundingSubAgency | who made the award and whose budget it comes from |
recipientName, recipientUei, recipientCity, recipientState, recipientCountry | the recipient organisation, its Unique Entity ID and its location |
recipientIsIndividual | true when the recipient may be a person (see Notes): the recipient and place fields and the description are then null |
amount, amountKind | total-obligation = the money obligated to the award so far, or loan-face-value for loans and loan guarantees |
totalOutlays, subsidyCost | money actually paid out so far (where the source states it); the subsidy cost of a loan |
awardedOn, startDate, endDate, lastDateToOrder, lastModifiedOn | the date the award was first signed, the period of performance (a loan's issue date is its startDate), the last date a framework agreement can be ordered from, and the day the record last changed |
naicsCode, naicsDescription, pscCode, pscDescription | the industry (NAICS) and Product and Service Code of a contract |
assistanceListingNumber, assistanceListings | the federal program of a grant, loan or payment (for example 93.671) with its title; an award can sit under several programs, all are listed |
placeCity, placeState, placeZip5, placeCountry | where the work is done |
observedAt | when the row was collected |
Run it again and again
- On a schedule: save your input as a task and add a Schedule: the same search every morning. Send each run to Google Sheets, Slack or email with an integration on the task.
- Watch for changes: Set What to return to Only awards that are new since the last run.
- In bulk: Combine Keywords, Awarding agencies, States and NAICS / PSC codes in one run.
Use it for
- Competitor and market tracking: who wins contracts for what you sell: recipient, agency, amount and period, from a daily Only new feed
- Lead lists for subcontractors and suppliers: the prime contractors that just won work in your NAICS code or your state
- Grant landscape: which organisations receive money under a program (
assistanceListings), from which agency, and how much - Research and journalism: a spreadsheet of awards by agency, keyword or amount range, each linked to the official record
Input
{"awardType": "contracts","keywords": ["cloud"],"agencies": ["Department of Veterans Affairs"],"awardedWithinDays": 30,"minAmount": 100000,"states": ["VA", "MD"],"maxResults": 200,"output": "new"}
- All filters are combined with AND; the entries inside one list are combined with OR.
- awardType: one kind per run, because the source reports different fields for each:
contracts,idvs(indefinite-delivery vehicles),grants,direct-payments,loans,other-assistance. - keywords: each line is searched as a word or phrase in the award; an award that matches any line is returned.
- agencies: the official name or abbreviation of the top-level agency (
Department of DefenseorDOD). A name the Actor cannot find stops the run before anything is charged. - awardedWithinDays, startDate, endDate, dateBasis — New awards (default) means the award was first signed in the period. Latest action also returns older awards that were modified in the period.
- minAmount, maxAmount — in US dollars, on the total obligation (loans: face value).
- states: the place of performance, two-letter codes.
- naicsCodes, pscCodes — contracts and IDVs; a shorter code covers its whole branch. assistanceListings — grants, direct payments, loans and other assistance, in the form
10.331. - Results are sorted newest first (or largest first), and maxResults (default 100, up to 5,000) cuts the list. With Only new it is the number of new awards to return: the Actor reads down the list, past the awards you have already seen (up to 5,000 awards deep), until it has found that many. Awards below the cut-off are not marked as seen, so they come back as new in your next run.
"Is it new" is remembered per search — the same award type, keywords, agencies, states, codes and amounts — in a named key-value store in your Apify account, so the second run of the same search already shows isNew. Changing Awarded within, Maximum awards or the sort order keeps the same history.
Pricing
$2.00 per 1,000 awards, plus $0.01 per run. Error rows (a search USAspending rejects, USAspending not answering) are free. With Only new, awards you have already seen are skipped and not charged. The $0.01 run-start fee is the one charge every run pays, even one that returns nothing.
Notes
- Source: the public search API of USAspending.gov, the US Department of the Treasury's federal spending site. The API documents that its endpoints need no authorization, and nothing from behind a login is read. I found no licence or terms-of-use text on USAspending.gov or in its API documentation that restricts reuse of the data, and its API code is published under CC0; the federal data is listed on Data.gov with public access level. The Actor identifies itself in its requests and pauses 0.7 seconds between them. This Actor is not affiliated with or endorsed by the US Department of the Treasury.
- Recipients who may be people. Awards to individuals (some grants and payments) are already masked in the source as
INDIVIDUAL RECIPIENT. In addition, for every page the Actor asks USAspending which of those awards went to a recipient registered as an individual or a sole proprietorship; for those rowsrecipientName,recipientUei, the recipient and place-of-performance fields anddescriptionarenullandrecipientIsIndividualistrue. The check is deliberately broad: it also catches companies that registered as sole proprietorships, so some company names are withheld too (10 of 500 contracts in a live read on 16 Oct 2026, none of 500 grants). If the check cannot be answered, that page is not output (a free error row says so). Free text can still name a person inside an organisation's description, so check descriptions before you republish them. - No contact persons, emails or phone numbers are returned; the Actor never asks for them, and emails or international phone numbers that appear inside a description are removed.
- In a live read of 500 new contracts on 16 Oct 2026:
naicsCodeandpscCodewere filled on all 500,descriptionon 490,recipientUeion 490 andplaceStateon 487.amountwas 0 or less on 9 of the 500, so filter small amounts before you add them up. Of 500 new grants,assistanceListingNumberwas filled on all 500, and 293 descriptions were longer than 500 characters and were cut. amountis what has been obligated so far, not the ceiling of a framework agreement. Use Latest action if you want awards that were modified in the period; the same award then shows its current amount.- Defense contracts arrive late. In a live count on 16 Oct 2026, awarding agency
Department of Defensehad 16 new contracts in the last 30 days and 48 in the last 90, against 240,357 in the last 120 days; all agencies together had 144,130 in the last 30 days. For DOD, use a period of 120 days or more. - The source cannot search before 2007-10-01.
- A live read of 500 contracts took 11 seconds and 500 grants 12 seconds on 16 Oct 2026.
- If USAspending is rate limiting or unavailable, the Actor waits and retries twice. If it still gets no answer it adds a free error row, and the run is marked failed when nothing at all could be read.
For the European equivalent, see EU Tenders Scraper (TED). To find US federal funding you can still apply for, see Grants.gov Scraper. If the winner of an award is a UK company, see UK Companies House Scraper for its register entry.
For AI agents
{"awardType": "contracts", "keywords": ["cloud"], "awardedWithinDays": 30, "maxResults": 5} returns up to 5 rows, newest first, each with agency, recipient organisation, amount and dates. Rows have type: award or error. Fields that do not apply to an award are null (or an empty list), never missing. Schedule the same input daily with "output": "new" to get only what was signed since the previous run.