USASpending Federal Awards Scraper
Pricing
from $0.49 / 1,000 awards
USASpending Federal Awards Scraper
One row per US federal award already made, from USASpending.gov: award id, recipient and UEI, amount, awarding agency, period and place of performance. Contracts, grants, loans and direct payments. Filter by agency, state, industry code, amount or date. $0.50 per 1,000 awards.
Pricing
from $0.49 / 1,000 awards
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Search US federal awards on USASpending.gov and get one row per award: who got the money, how much and for what. Each row has the award id, the recipient and their UEI, the amount, the awarding and funding agency, the period of performance, where the work was done and a link to the public award page. Contracts, grants, loans, direct payments and the rest.
Two things surprise people. This is money already awarded, not a list of work you can still bid on. And the date filter follows when money moved, so a contract signed in 2008 and amended last month is a correct hit for last month.
| Input | Keywords, agencies, recipients, states, amount bands, dates, NAICS, PSC or Assistance Listing numbers, or exact award ids |
| Output | One row per award: recipient and UEI, amount, outlays, awarding and funding agency, period and place of performance, industry and programme codes, link |
| Ceiling | 10,000 awards and 10 search terms per run, awards back to 2007-10-01 |
| Account needed | None, and no API key |
| Price | $0.50 per 1,000 awards on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 10,000 |
๐ What USASpending Federal Awards Scraper does
Federal spending is filed in six families: contracts, grants and cooperative agreements, indefinite-delivery vehicles, loans, direct payments, and insurance and other assistance. USASpending will not mix them in one search. So each family you pick is searched on its own, your row budget is shared between them, and whatever one family leaves unused goes to the next.
Where the work was done comes back separately from where the recipient is registered. "Work done in Texas" and "company registered in Texas" are two different filters here.
Every row is checked against your filters before it is charged. A row from the wrong agency, state, amount band or code is dropped, and a free row says how many and why. A row that cannot be checked, such as a state filter on an award that records no state, is dropped the same way rather than guessed at.
๐ What data you get from each federal award
| What you get | Field |
|---|---|
| The award id, the key that is unique everywhere, the family and the type | awardId, awardUniqueKey, awardTypeGroup, awardType |
| The recipient, its UEI and where it is registered | recipientName, recipientUei, recipientCity, recipientState, recipientCountry |
| The amount awarded, money paid out so far, and a loan's subsidy cost | awardAmountUsd, totalOutlaysUsd, loanSubsidyCostUsd |
| Who signed it and who paid for it | awardingAgency, awardingAgencyCode, awardingSubAgency, awardingSubAgencyCode, fundingAgency, fundingSubAgency |
| The work window and the first obligation | periodOfPerformanceStart, periodOfPerformanceEnd, baseObligationDate |
| Where the work was done | placeOfPerformanceCity, placeOfPerformanceState, placeOfPerformanceZip, placeOfPerformanceCountry |
| Industry and product codes, on contracts | naicsCode, naicsDescription, pscCode, pscDescription |
| The federal programme, on grants and other assistance | assistanceListingNumber, assistanceListingTitle |
| The agency's description, the last change, and the public award page | description, lastModified, url |
โถ๏ธ How to scrape federal spending from USASpending
- Open USASpending Federal Awards Scraper and click Try for free.
- Put a keyword in Search terms, or clear it and use the filters instead. The form arrives with
solarin it. - Tick the Kinds of award you want, and narrow it with Awarding agency, Work performed in (state) or From date.
- Set Maximum rows, low on a first run, and choose an Order.
- Click Start, then download the dataset as CSV, JSON or Excel, or read it from the Apify API.
๐ฐ How much does it cost to scrape USASpending awards?
$0.50 per 1,000 awards, which is $0.0005 a row on the Free plan, a little less on paid plans. On the free plan, the $5 Apify gives you each month covers about 10,000 awards.
You pay for award rows and nothing else per row. The sample row and every diagnostic row are free, and so are rows dropped for not matching your filters and repeats inside one run. A backwards date window or amount band stops the run before anything is searched. If you set a maximum charge on the run, it stops at that figure instead of going past it.
๐ฅ What you give it
{"agencies": ["Department of Energy"],"placeOfPerformanceStates": ["TX", "NM"],"awardTypes": ["contracts"],"minAwardAmountUsd": 1000000,"dateFrom": "2026-01-01","maxItems": 200}
| Field | Default | What it is |
|---|---|---|
searchTerms | none; the box starts at solar | Free text across the award record, 3 characters or more, up to 10 terms. It reaches fields the row does not show, so a hit can have the word nowhere visible. |
awardTypes | contracts and grants | contracts, grants, idvs, loans, direct_payments, other. Each one you tick is a separate search sharing the row budget. |
maxItems | 50 | Total awards across every family, 1 to 10,000. |
agencies | every agency | Cabinet-level names spelled the way USASpending spells them, such as Department of Energy. A name it does not recognise returns nothing rather than everything. |
recipientSearch | anyone | A company name or a UEI. Partial names work, and several entries widen the search. Subsidiaries come back too: lockheed brought in Sikorsky. |
placeOfPerformanceStates | anywhere | Two-letter codes for where the work was done, such as TX. |
recipientStates | anywhere | Two-letter codes for where the recipient is registered. |
minAwardAmountUsd | no minimum | Drops smaller awards and cuts the long tail of small purchase orders. Left empty, the negative rows that record money taken back off an award stay in. |
maxAwardAmountUsd | no maximum | Drops larger awards. |
dateFrom | no window | YYYY-MM-DD. Anything before 2007-10-01 is moved up to it. |
dateTo | today, when a start date is set | YYYY-MM-DD. A window that runs backwards stops the run with a free BAD_INPUT row. |
dateType | action_date | What the window measures: action_date (any money moved), date_signed, last_modified_date or new_awards_only. Only used when a date is set. In our tests date_signed and new_awards_only returned the same awards. |
naicsCodes | any | Six-digit industry codes such as 541512. Give all six digits: a shorter code stops that search with a free BAD_INPUT row. Contracts and IDVs carry them, grants mostly do not. |
pscCodes | any | Four-character product and service codes such as R425. Contracts only. |
assistanceListingNumbers | any | Programme numbers such as 93.778, for grants, loans and other assistance. Contracts have none. |
awardIds | none | Exact award ids such as W912DQ24C4003. One that does not exist returns a free row saying so. |
sortBy | amount | amount for the largest first, date for the newest first. You get the top of that order, not a random sample. |
proxyUrls | none | Your own servers to send the traffic through, as http://user:pass@host:port. Leave it empty unless you need that. |
An input that only picks award types, or has nothing in it at all, returns one free sample row. That is deliberate: award types on their own would mean every federal contract since 2007.
๐ค What you get back
A real row from a run on 30 September 2026, for solar sorted by amount, with the description cut
short:
{"ok": true,"charged": true,"recordType": "award","awardId": "NNG09HR00C","awardUniqueKey": "CONT_AWD_NNG09HR00C_8000_-NONE-_-NONE-","awardTypeGroup": "contracts","awardType": "DEFINITIVE CONTRACT","recipientName": "LOCKHEED MARTIN CORP","recipientUei": "FYHNA5WC8XD7","recipientCity": "LITTLETON","recipientState": "CO","recipientCountry": "UNITED STATES","awardAmountUsd": 2032829134.57,"totalOutlaysUsd": 306532392.81,"loanSubsidyCostUsd": null,"awardingAgency": "National Aeronautics and Space Administration","awardingAgencyCode": "080","awardingSubAgency": "National Aeronautics and Space Administration","awardingSubAgencyCode": "8000","fundingAgency": "Department of Commerce","fundingSubAgency": "National Oceanic and Atmospheric Administration","periodOfPerformanceStart": "2008-12-04","periodOfPerformanceEnd": "2039-04-30","placeOfPerformanceCity": "LITTLETON","placeOfPerformanceState": "CO","placeOfPerformanceZip": "80125","placeOfPerformanceCountry": "UNITED STATES","naicsCode": "336414","naicsDescription": "GUIDED MISSILE AND SPACE VEHICLE MANUFACTURING","pscCode": "AR35","pscDescription": "R&D- SPACE: FLIGHT (OPERATIONAL SYSTEMS DEVELOPMENT)","assistanceListingNumber": null,"assistanceListingTitle": null,"description": "THE GOVERNMENT IS PROCURING THE NEXT-GENERATION GEOSTATIONARY OPERATIONAL ENVIRONMENTAL SATELLITES (GOES) SERIES TO CONTINUE ITS MISSION THROUGH NEW REQUIREMENTS SPECIFIED IN THE GOES-R LEVEL I REQUIREMENTS DOCUMENT AND MISSION REQUIREMENTS DOCUMENT (MRD). โฆ","baseObligationDate": "2008-12-04","lastModified": "2026-07-27 15:48:00","url": "https://www.usaspending.gov/award/CONT_AWD_NNG09HR00C_8000_-NONE-_-NONE-","scrapedAt": "2026-09-30T02:38:01.767Z"}
| Field | How to read it |
|---|---|
awardId, awardUniqueKey | The id printed on the award is unique within one agency only. awardUniqueKey is unique everywhere, builds the url, and is the key to compare runs on. |
awardTypeGroup, awardType | Which of the six families the row came from, and the type inside it. |
awardAmountUsd | The current total obligated, after every modification. On a loan it is the face value, and loanSubsidyCostUsd is what the loan cost the government. It can be negative. |
totalOutlaysUsd | Money actually paid out so far. Often 0 on a new award, null on loans. |
awardingAgency, fundingAgency | Who signed it and who paid for it. They can differ: the row above was signed by NASA and paid for by the Department of Commerce. |
periodOfPerformanceStart, periodOfPerformanceEnd | The work window. On an indefinite-delivery vehicle the end is the last date to order. A loan has an issue date and no end. |
placeOfPerformanceState, placeOfPerformanceCity | Where the work was done. Blank on indefinite-delivery vehicles, and the city is blank on most grants. |
recipientState, recipientCity | Where the recipient is registered. Almost always filled. |
description | The agency's own words, cut at 2,000 characters. Often terse, sometimes an internal code, sometimes empty. |
๐งพ Reading the output
Three kinds of row can share a dataset, and charged is the field that separates them.
| Row | How to spot it | Charged |
|---|---|---|
| An award | charged: true | yes |
| The sample | _sample: true, charged: false | no |
| A diagnostic | _diagnostic: true, charged: false, an errorCode | no |
The sample row also says recordType: "award", so filter on charged == true, not on
recordType.
| Code | What it means |
|---|---|
NO_RESULTS | Nothing matched for one award family. Also written when a very deep search could not go any further, and then it says how many rows were delivered first. |
BAD_INPUT | Rows came back that did not match your filters and were dropped. Also used when a filter was not applied, so the search stopped, and when the input itself was refused, such as a backwards date window. |
SERVER_ERROR | USASpending answered with an error of its own. A re-run later usually works. |
NETWORK | The service could not be reached, so nothing was searched. |
TIME_BUDGET | The run ran out of time before one of the families was searched. |
NO_RESULTS and NETWORK are the pair to tell apart. The first means nothing is there. The second
means nobody looked.
๐ก What people use it for
- Working out who already holds the work before bidding on the recompete: filter by agency and industry code, sort by amount, read the top twenty names.
- Following one company across the whole government, the contracts, grants and loans it received, in one table.
- A reporter adding up the federal money spent on work in one state over a year, agency by agency.
- A monthly feed of new business, with
dateTypeset tonew_awards_onlyand rows compared onawardUniqueKey.
๐ง What it does not do
- Awards, not opportunities. No deadline, no eligibility, no application link, because the money is already committed. For grants you can still apply for, see the table below.
- Federal only. State, county and city spending is not in this data.
- Nothing before 2007-10-01. Older awards exist, but this search cannot reach them.
- One row per award, not per transaction. A contract amended fourteen times is one row carrying the current total.
- No sub-awards. A prime recipient who subcontracts most of the work still shows the whole amount.
- No street addresses or contact details. City, state and country are on the row. Nothing is joined against other sources. Sole traders and individuals do appear under their own names, because the government publishes them that way.
- Place of performance is thin on some families. In one 3,000-row run, none of the 1,000 indefinite-delivery vehicles had a state or a city for the work, and 287 of the 1,000 grants had a city.
- Figures are as current as USASpending. An agency that has not filed a modification leaves a stale total, and the row repeats it.
- It is not an official USASpending tool. Dami's Studio is independent and is not affiliated with or endorsed by any agency named on this page.
๐งญ Which US government data scraper do you need?
| If you want | Use |
|---|---|
| Federal awards already made, with the recipient and the amount | This one |
| Federal grants you can still apply for | US Federal Grants Scraper |
| Open bids from states, counties, cities and school districts | US Local Bid Portals Scraper |
| Federal contract notices from SAM.gov, plus EU and UK tenders, scored against what you do | RFP & Tender Monitor |
| Federal lawsuits a recipient is a party to | US Federal Court Cases Scraper |
โ Questions people ask
Is this a list of contracts I can bid on?
No, and it is the most common mix-up. Every row is an award already made, with a recipient and an amount and no deadline.
Why does a row start years ago when I asked for this month?
The window follows when money moved, not the period of performance. Awards get modified for years
after signing. Set dateType to new_awards_only if you only want awards first signed inside the
window.
Why is place of performance empty on some awards?
The government does not record it for those award types. If you filter on a state and tick a family with no state on it, those rows are dropped uncharged.
Do I need a USASpending account or an API key?
No. Nothing to sign up for and nothing to paste.
How do I get only new federal awards every day?
Schedule it daily with a recent dateFrom and dateType set to new_awards_only, and compare runs
on awardUniqueKey.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has
ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP
client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/usaspending-awards-scraper.
Either way the run happens on your Apify account at the same price.
Is it legal to scrape USASpending?
USASpending.gov is the federal government's own public record of where its money goes, and this reads it with no login. Sole traders appear under their own names because the government publishes them that way, so treat those rows with care. Apify's write-up on the legality of web scraping is a fair starting point, and we are not lawyers.
๐ If something breaks
Open the Issues tab on the actor page and send the run ID with the input you used. The
errorCode and details on a diagnostic row usually name the reason already.