USASpending Federal Awards Scraper avatar

USASpending Federal Awards Scraper

Pricing

from $0.49 / 1,000 awards

Go to Apify Store
USASpending Federal Awards Scraper

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

Dami's Studio

Maintained by Community

Actor 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.

InputKeywords, agencies, recipients, states, amount bands, dates, NAICS, PSC or Assistance Listing numbers, or exact award ids
OutputOne row per award: recipient and UEI, amount, outlays, awarding and funding agency, period and place of performance, industry and programme codes, link
Ceiling10,000 awards and 10 search terms per run, awards back to 2007-10-01
Account neededNone, 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 getField
The award id, the key that is unique everywhere, the family and the typeawardId, awardUniqueKey, awardTypeGroup, awardType
The recipient, its UEI and where it is registeredrecipientName, recipientUei, recipientCity, recipientState, recipientCountry
The amount awarded, money paid out so far, and a loan's subsidy costawardAmountUsd, totalOutlaysUsd, loanSubsidyCostUsd
Who signed it and who paid for itawardingAgency, awardingAgencyCode, awardingSubAgency, awardingSubAgencyCode, fundingAgency, fundingSubAgency
The work window and the first obligationperiodOfPerformanceStart, periodOfPerformanceEnd, baseObligationDate
Where the work was doneplaceOfPerformanceCity, placeOfPerformanceState, placeOfPerformanceZip, placeOfPerformanceCountry
Industry and product codes, on contractsnaicsCode, naicsDescription, pscCode, pscDescription
The federal programme, on grants and other assistanceassistanceListingNumber, assistanceListingTitle
The agency's description, the last change, and the public award pagedescription, lastModified, url

โ–ถ๏ธ How to scrape federal spending from USASpending

  1. Open USASpending Federal Awards Scraper and click Try for free.
  2. Put a keyword in Search terms, or clear it and use the filters instead. The form arrives with solar in it.
  3. Tick the Kinds of award you want, and narrow it with Awarding agency, Work performed in (state) or From date.
  4. Set Maximum rows, low on a first run, and choose an Order.
  5. 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
}
FieldDefaultWhat it is
searchTermsnone; the box starts at solarFree 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.
awardTypescontracts and grantscontracts, grants, idvs, loans, direct_payments, other. Each one you tick is a separate search sharing the row budget.
maxItems50Total awards across every family, 1 to 10,000.
agenciesevery agencyCabinet-level names spelled the way USASpending spells them, such as Department of Energy. A name it does not recognise returns nothing rather than everything.
recipientSearchanyoneA company name or a UEI. Partial names work, and several entries widen the search. Subsidiaries come back too: lockheed brought in Sikorsky.
placeOfPerformanceStatesanywhereTwo-letter codes for where the work was done, such as TX.
recipientStatesanywhereTwo-letter codes for where the recipient is registered.
minAwardAmountUsdno minimumDrops 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.
maxAwardAmountUsdno maximumDrops larger awards.
dateFromno windowYYYY-MM-DD. Anything before 2007-10-01 is moved up to it.
dateTotoday, when a start date is setYYYY-MM-DD. A window that runs backwards stops the run with a free BAD_INPUT row.
dateTypeaction_dateWhat 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.
naicsCodesanySix-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.
pscCodesanyFour-character product and service codes such as R425. Contracts only.
assistanceListingNumbersanyProgramme numbers such as 93.778, for grants, loans and other assistance. Contracts have none.
awardIdsnoneExact award ids such as W912DQ24C4003. One that does not exist returns a free row saying so.
sortByamountamount for the largest first, date for the newest first. You get the top of that order, not a random sample.
proxyUrlsnoneYour 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"
}
FieldHow to read it
awardId, awardUniqueKeyThe 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, awardTypeWhich of the six families the row came from, and the type inside it.
awardAmountUsdThe 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.
totalOutlaysUsdMoney actually paid out so far. Often 0 on a new award, null on loans.
awardingAgency, fundingAgencyWho 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, periodOfPerformanceEndThe 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, placeOfPerformanceCityWhere the work was done. Blank on indefinite-delivery vehicles, and the city is blank on most grants.
recipientState, recipientCityWhere the recipient is registered. Almost always filled.
descriptionThe 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.

RowHow to spot itCharged
An awardcharged: trueyes
The sample_sample: true, charged: falseno
A diagnostic_diagnostic: true, charged: false, an errorCodeno

The sample row also says recordType: "award", so filter on charged == true, not on recordType.

CodeWhat it means
NO_RESULTSNothing 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_INPUTRows 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_ERRORUSASpending answered with an error of its own. A re-run later usually works.
NETWORKThe service could not be reached, so nothing was searched.
TIME_BUDGETThe 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 dateType set to new_awards_only and rows compared on awardUniqueKey.

๐Ÿšง 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 wantUse
Federal awards already made, with the recipient and the amountThis one
Federal grants you can still apply forUS Federal Grants Scraper
Open bids from states, counties, cities and school districtsUS Local Bid Portals Scraper
Federal contract notices from SAM.gov, plus EU and UK tenders, scored against what you doRFP & Tender Monitor
Federal lawsuits a recipient is a party toUS 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.

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.