USAspending Awards Scraper — Federal Contracts & Grants API avatar

USAspending Awards Scraper — Federal Contracts & Grants API

Pricing

from $1.60 / 1,000 usaspending award results

Go to Apify Store
USAspending Awards Scraper — Federal Contracts & Grants API

USAspending Awards Scraper — Federal Contracts & Grants API

Search USAspending federal awards by recipient, agency, state, keyword or amount and export contracts and grants as JSON. USD 2 per 1,000 award records.

Pricing

from $1.60 / 1,000 usaspending award results

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

USAspending Awards Scraper searches the official USAspending.gov award database and returns U.S. federal prime awards (contracts, grants, loans, direct payments, other financial assistance and IDVs) as normalized JSON records with recipient, UEI, amount, agencies, NAICS and PSC codes, dates and locations. It is built for government-contracting, grant-research and market-intelligence teams, and it costs USD 2.00 per 1,000 award records on the FREE tier (USD 1.60 per 1,000 on GOLD).

It wraps the public USAspending API, which needs no key, and handles category-specific fields, pagination and deduplication, so every category comes back in one schema.

What data does the USAspending scraper return?

Each dataset row is one prime award. Fields that do not apply to a category are null or an empty array.

FieldWhat it contains
awardId, generatedAwardId, internalIdPIID, FAIN or URI, USAspending's generated ID and its internal ID
awardCategory, awardTypecontracts, grants, loans, directPayments, otherFinancialAssistance or idvs, and the source award type, for example DEFINITIVE CONTRACT
recipientName, recipientUei, recipientIdPrime recipient, UEI and USAspending recipient ID
awardAmountTotal award amount (for loans, the loan value)
loanValue, subsidyCost, totalOutlaysLoan face value, subsidy cost and outlays to date
awardingAgency, awardingSubAgency, fundingAgency, fundingSubAgencyAgencies and sub-agencies
descriptionAward description as reported
startDate, endDate, lastModifiedDatePeriod of performance (issued date for loans) and last update
naicsCode, naicsDescription, pscCode, pscDescriptionIndustry and product-service codes for contracts and IDVs
assistanceListingsAssistance Listing (CFDA) numbers and titles when supplied
recipientLocation, placeOfPerformanceCountry, state, city, county, congressional district and ZIP code. The recipient location also includes the street address
sourceUrl, retrievedAtAward page on usaspending.gov and retrieval time

The OUTPUT record classifies the run as DATA, EMPTY, REJECTED, PARTIAL or FAILED, and lists category coverage, pages fetched, records delivered, events charged and warnings.

How do I search federal contracts and grants by recipient, agency or state?

Choose the award categories and an action-date window, then add any filters. All filter groups are combined.

{
"startDate": "2025-10-01",
"endDate": "2026-09-30",
"awardCategories": ["contracts"],
"awardingAgencies": ["Department of Defense"],
"placeOfPerformanceStates": ["VA", "MD"],
"keywords": ["cybersecurity"],
"minAwardAmount": 1000000,
"sortBy": "amount",
"maxResults": 200
}
  • Recipient: recipientSearchText takes one name or identifier, for example BOEING.
  • Agencies: awardingAgencies and fundingAgencies take exact top-tier names such as Department of Energy, not abbreviations or codes.
  • Geography: placeOfPerformanceStates and recipientStates take two-letter state or territory codes.
  • Known awards: awardIds takes PIIDs, FAINs or URIs, for example HT940216C0001.
  • Amount: minAwardAmount and maxAwardAmount are applied by USAspending and checked again on every record.
  • Order: sortBy is amount, lastModifiedDate or awardId; sortOrder is desc or asc.

The default input asks for 2025 contracts and returns up to 100. The Console prefill adds grants and returns 25.

Why does a 2025 search return awards that started years ago?

The date filter matches awards with any action, such as an obligation or modification, inside your window, and awardAmount is the award's total to date, not the amount spent in the window. That is why the prefill's top contract is a Defense Health Agency award to Humana that started in 2016 and totals USD 51.3 billion. To focus on new awards, narrow the window and sort by lastModifiedDate, or filter on startDate after export.

When should I use this Actor, and when not?

Use it when you need awarded federal spending as data: competitor and incumbent research, a recipient's federal revenue, an agency's largest contracts, grants flowing to a state, or award feeds for a CRM, spreadsheet or AI agent.

Use something else when:

  • You need open solicitations and bids to respond to: BidNet Direct Scraper.
  • You need company filings: SEC EDGAR Scraper.
  • You need a grant recipient's nonprofit tax data: ProPublica Nonprofit Explorer Scraper.
  • You need subawards, individual transactions, federal account budgets, awards before October 2007 or a full bulk extract. Use USAspending's own download tools for those.

Use it from an AI assistant

USAspending Awards Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add it with https://mcp.apify.com/?tools=muhammadafzal/usaspending-awards-scraper, then ask, for example: "Find the 20 largest Department of Energy contracts with activity in fiscal year 2026 and list the recipient, amount and NAICS code."

Run it with the API

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/usaspending-awards-scraper').call({
startDate: '2025-01-01',
endDate: '2025-12-31',
awardCategories: ['contracts'],
recipientSearchText: 'BOEING',
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const a of items) console.log(a.awardId, a.awardingAgency, a.awardAmount);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("muhammadafzal/usaspending-awards-scraper").call(
run_input={"awardCategories": ["grants"], "recipientStates": ["TX"], "maxResults": 100}
)
for a in client.dataset(run.default_dataset_id).iterate_items():
print(a["awardId"], a["recipientName"], a["awardAmount"], a["sourceUrl"])

What does the output look like?

The top contract and the top grant for the prefill filters, normalized from the USAspending API on 2026-10-26 (location objects shortened):

[
{
"awardId": "HT940216C0001",
"generatedAwardId": "CONT_AWD_HT940216C0001_9700_-NONE-_-NONE-",
"internalId": 307885715,
"awardCategory": "contracts",
"awardType": "DEFINITIVE CONTRACT",
"recipientName": "HUMANA GOVERNMENT BUSINESS INC",
"recipientUei": "ZE6ZM6NKSV43",
"awardAmount": 51269205263.03,
"loanValue": null,
"totalOutlays": 0,
"awardingAgency": "Department of Defense",
"awardingSubAgency": "Defense Health Agency",
"description": "IGF::OT::IGF",
"startDate": "2016-08-01",
"endDate": "2025-12-31",
"lastModifiedDate": "2026-02-10 17:52:09",
"naicsCode": "524114",
"naicsDescription": "DIRECT HEALTH AND MEDICAL INSURANCE CARRIERS",
"pscCode": "Q201",
"pscDescription": "MEDICAL- MANAGED HEALTHCARE",
"assistanceListings": [],
"recipientLocation": { "stateCode": "KY", "cityName": "LOUISVILLE", "congressionalDistrict": "03", "postalCode": "40202" },
"placeOfPerformance": { "stateCode": "KY", "cityName": "LOUISVILLE", "postalCode": "40201" },
"sourceUrl": "https://www.usaspending.gov/award/CONT_AWD_HT940216C0001_9700_-NONE-_-NONE-/",
"retrievedAt": "2026-10-26T12:00:00.000Z"
},
{
"awardId": "2605CA5MAP",
"generatedAwardId": "ASST_NON_2605CA5MAP_075",
"awardCategory": "grants",
"awardType": "GRANT",
"recipientName": "HEALTH CARE SERVICES, CALIFORNIA DEPARTMENT OF",
"awardAmount": 110435264806,
"totalOutlays": 91100560827.95,
"awardingAgency": "Department of Health and Human Services",
"awardingSubAgency": "Centers for Medicare and Medicaid Services",
"description": "MEDICAID ENTITLEMENT FOR 7 - FY 2026 - T19 - FEDERAL FINANCIAL PARTICIPATION IN MEDICAID",
"startDate": "2025-10-01",
"endDate": "2026-09-30",
"naicsCode": null,
"pscCode": null,
"sourceUrl": "https://www.usaspending.gov/award/ASST_NON_2605CA5MAP_075/"
}
]

Pricing: how much does USAspending data cost?

USAspending Awards Scraper uses pay-per-event pricing. Platform usage is included in the event prices.

EventFREEBRONZESILVERGOLDPLATINUM / DIAMOND
USAspending award result (one dataset row)USD 0.002001USD 0.00195USD 0.0019USD 0.0016USD 0.0016
Actor start (per started GB of allocated memory)USD 0.006251USD 0.006094USD 0.005938USD 0.005USD 0.005

Worked totals on the FREE tier at the default 256 MB memory (one start event):

  • Prefill run, 25 contracts and grants: 25 × USD 0.002001 + USD 0.006251 = USD 0.0563
  • 1,000 awards: 1,000 × USD 0.002001 + USD 0.006251 = USD 2.0073

Rejected input and empty searches charge only the start fee. The run's status message and OUTPUT.estimatedResultChargeUsd use the live per-record price for your tier. If a run hits your maximum cost per run, it stops after the last saved record.

What are the limits?

  • 5,000 records per run (maxResults, default 100), with 1–100 records per API page.
  • Several categories: each category is fetched up to maxResults, then the combined list is sorted and cut to maxResults. At most 50 pages are read per category.
  • Dates: startDate cannot be earlier than 2007-10-01, which is the API's search limit.
  • Resilience: each API request times out after 30 seconds and is tried up to 3 times with backoff. If one category fails, the others are kept and the run is PARTIAL. Each API page took about 5 seconds in a 2026-10-26 check.
  • Prime awards only: no subawards or transaction-level rows.

FAQ

Do I need a USAspending API key?

No. The USAspending API is public and unauthenticated, and the Actor calls it directly.

How current is the data?

Each run queries USAspending live. lastModifiedDate shows when USAspending last updated each award, and agencies can revise records later.

How are loans handled?

For loans, awardAmount holds the loan's face value (loanValue), subsidyCost holds the government's estimated cost, and startDate holds the issued date.

Can I get awards from before October 2007?

No. USAspending's award search starts at 2007-10-01, and the Actor rejects earlier start dates with a clear message. Older data is available through USAspending's download tools.

Does it find contract opportunities I can bid on?

No. USAspending records money already awarded. For open bids and RFPs, use BidNet Direct Scraper.

Why do some fields come back null?

They do not apply to that category, for example NAICS on a grant, or the agency did not report them.

This Actor reads public U.S. government data through USAspending's public API and does not log in or bypass access controls. It is independent of the U.S. Department of the Treasury and USAspending.gov and not endorsed by them. Recipient addresses are public business or government records. Do not repurpose them for harassment or unrelated personal profiling, and verify material figures on the linked award pages.

Last verified: 2026-10-27